Rev 54 | Rev 80 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
54 | pj | 1 | /* VGAlib version 1.2 - (c) 1993 Tommy Frandsen */ |
2 | /* */ |
||
3 | /* This library is free software; you can redistribute it and/or */ |
||
4 | /* modify it without any restrictions. This library is distributed */ |
||
5 | /* in the hope that it will be useful, but without any warranty. */ |
||
6 | |||
7 | /* Extended for svgalib by Harm Hanemaayer and Hartmut Schirmer */ |
||
8 | |||
9 | #ifndef VGA_H |
||
10 | #define VGA_H |
||
11 | |||
12 | #include <sys/types.h> |
||
13 | #include <sys/time.h> |
||
74 | giacomo | 14 | #include <drivers/grxsvga/glib.h> |
54 | pj | 15 | #include <kernel/log.h> |
16 | |||
17 | #ifdef __cplusplus |
||
18 | extern "C" |
||
19 | { |
||
20 | #endif |
||
21 | |||
22 | #define rgb15(r, g, b) ((((WORD)(r & 0xF8)>>3) << 10) | (((WORD)(g & 0xF8)>>3) << 5) | ((WORD)(b & 0xF8)>>3)) |
||
23 | #define rgb16(r, g, b) ((((WORD)(r & 0xF8)>>3) << 11) | (((WORD)(g & 0xFC)>>2) << 5) | ((WORD)(b & 0xF8)>>3)) |
||
24 | #define rgb24(r, g, b) (((DWORD)(r & 0xFF) << 16) | ((DWORD)(g & 0xFF) << 8) | (DWORD)(b & 0xFF)) |
||
25 | #define rgb32(r, g, b) (((DWORD)(r & 0xFF) << 16) | ((DWORD)(g & 0xFF) << 8) | (DWORD)(b & 0xFF)) |
||
26 | #define rgba(r, g, b) (((DWORD)(b & 0xFF) << 16) | ((DWORD)(g & 0xFF) << 8) | (DWORD)(r & 0xFF)) |
||
27 | |||
28 | #define SVGALIB_VER 0x010900 |
||
29 | |||
30 | #define TEXT 0 /* Compatible with VGAlib v1.2 */ |
||
31 | #define G320x200x16 1 |
||
32 | #define G640x200x16 2 |
||
33 | #define G640x350x16 3 |
||
34 | #define G640x480x16 4 |
||
35 | #define G320x200x256 5 |
||
36 | #define G320x240x256 6 |
||
37 | #define G320x400x256 7 |
||
38 | #define G360x480x256 8 |
||
39 | #define G640x480x2 9 |
||
40 | |||
41 | #define G640x480x256 10 |
||
42 | #define G800x600x256 11 |
||
43 | #define G1024x768x256 12 |
||
44 | |||
45 | #define G1280x1024x256 13 /* Additional modes. */ |
||
46 | |||
47 | #define G320x200x32K 14 |
||
48 | #define G320x200x64K 15 |
||
49 | #define G320x200x16M 16 |
||
50 | #define G640x480x32K 17 |
||
51 | #define G640x480x64K 18 |
||
52 | #define G640x480x16M 19 |
||
53 | #define G800x600x32K 20 |
||
54 | #define G800x600x64K 21 |
||
55 | #define G800x600x16M 22 |
||
56 | #define G1024x768x32K 23 |
||
57 | #define G1024x768x64K 24 |
||
58 | #define G1024x768x16M 25 |
||
59 | #define G1280x1024x32K 26 |
||
60 | #define G1280x1024x64K 27 |
||
61 | #define G1280x1024x16M 28 |
||
62 | |||
63 | #define G800x600x16 29 |
||
64 | #define G1024x768x16 30 |
||
65 | #define G1280x1024x16 31 |
||
66 | |||
67 | #define G720x348x2 32 /* Hercules emulation mode */ |
||
68 | |||
69 | #define G320x200x16M32 33 /* 32-bit per pixel modes. */ |
||
70 | #define G640x480x16M32 34 |
||
71 | #define G800x600x16M32 35 |
||
72 | #define G1024x768x16M32 36 |
||
73 | #define G1280x1024x16M32 37 |
||
74 | |||
75 | /* additional resolutions */ |
||
76 | #define G1152x864x16 38 |
||
77 | #define G1152x864x256 39 |
||
78 | #define G1152x864x32K 40 |
||
79 | #define G1152x864x64K 41 |
||
80 | #define G1152x864x16M 42 |
||
81 | #define G1152x864x16M32 43 |
||
82 | |||
83 | #define G1600x1200x16 44 |
||
84 | #define G1600x1200x256 45 |
||
85 | #define G1600x1200x32K 46 |
||
86 | #define G1600x1200x64K 47 |
||
87 | #define G1600x1200x16M 48 |
||
88 | #define G1600x1200x16M32 49 |
||
89 | |||
90 | #define G320x240x256V 50 |
||
91 | #define G320x240x32K 51 |
||
92 | #define G320x240x64K 52 |
||
93 | #define G320x240x16M 53 |
||
94 | #define G320x240x16M32 54 |
||
95 | |||
96 | #define G400x300x256 55 |
||
97 | #define G400x300x32K 56 |
||
98 | #define G400x300x64K 57 |
||
99 | #define G400x300x16M 58 |
||
100 | #define G400x300x16M32 59 |
||
101 | |||
102 | #define G512x384x256 60 |
||
103 | #define G512x384x32K 61 |
||
104 | #define G512x384x64K 62 |
||
105 | #define G512x384x16M 63 |
||
106 | #define G512x384x16M32 64 |
||
107 | |||
108 | #define G960x720x256 65 |
||
109 | #define G960x720x32K 66 |
||
110 | #define G960x720x64K 67 |
||
111 | #define G960x720x16M 68 |
||
112 | #define G960x720x16M32 69 |
||
113 | |||
114 | #define G1920x1440x256 70 |
||
115 | #define G1920x1440x32K 71 |
||
116 | #define G1920x1440x64K 72 |
||
117 | #define G1920x1440x16M 73 |
||
118 | #define G1920x1440x16M32 74 |
||
119 | |||
120 | /* The following modes have been introduced by SciTech Display Doctor */ |
||
121 | |||
122 | #define G320x400x256V 75 |
||
123 | #define G320x400x32K 76 |
||
124 | #define G320x400x64K 77 |
||
125 | #define G320x400x16M 78 |
||
126 | #define G320x400x16M32 79 |
||
127 | |||
128 | #define G640x400x256 80 |
||
129 | #define G640x400x32K 81 |
||
130 | #define G640x400x64K 82 |
||
131 | #define G640x400x16M 83 |
||
132 | #define G640x400x16M32 84 |
||
133 | |||
134 | #define G320x480x256 85 |
||
135 | #define G320x480x32K 86 |
||
136 | #define G320x480x64K 87 |
||
137 | #define G320x480x16M 88 |
||
138 | #define G320x480x16M32 89 |
||
139 | |||
140 | #define G720x540x256 90 |
||
141 | #define G720x540x32K 91 |
||
142 | #define G720x540x64K 92 |
||
143 | #define G720x540x16M 93 |
||
144 | #define G720x540x16M32 94 |
||
145 | |||
146 | #define G848x480x256 95 |
||
147 | #define G848x480x32K 96 |
||
148 | #define G848x480x64K 97 |
||
149 | #define G848x480x16M 98 |
||
150 | #define G848x480x16M32 99 |
||
151 | |||
152 | #define G1072x600x256 100 |
||
153 | #define G1072x600x32K 101 |
||
154 | #define G1072x600x64K 102 |
||
155 | #define G1072x600x16M 103 |
||
156 | #define G1072x600x16M32 104 |
||
157 | |||
158 | #define G1280x720x256 105 |
||
159 | #define G1280x720x32K 106 |
||
160 | #define G1280x720x64K 107 |
||
161 | #define G1280x720x16M 108 |
||
162 | #define G1280x720x16M32 109 |
||
163 | |||
164 | #define G1360x768x256 110 |
||
165 | #define G1360x768x32K 111 |
||
166 | #define G1360x768x64K 112 |
||
167 | #define G1360x768x16M 113 |
||
168 | #define G1360x768x16M32 114 |
||
169 | |||
170 | #define G1800x1012x256 115 |
||
171 | #define G1800x1012x32K 116 |
||
172 | #define G1800x1012x64K 117 |
||
173 | #define G1800x1012x16M 118 |
||
174 | #define G1800x1012x16M32 119 |
||
175 | |||
176 | #define G1920x1080x256 120 |
||
177 | #define G1920x1080x32K 121 |
||
178 | #define G1920x1080x64K 122 |
||
179 | #define G1920x1080x16M 123 |
||
180 | #define G1920x1080x16M32 124 |
||
181 | |||
182 | #define G2048x1152x256 125 |
||
183 | #define G2048x1152x32K 126 |
||
184 | #define G2048x1152x64K 127 |
||
185 | #define G2048x1152x16M 128 |
||
186 | #define G2048x1152x16M32 129 |
||
187 | |||
188 | #define G2048x1536x256 130 |
||
189 | #define G2048x1536x32K 131 |
||
190 | #define G2048x1536x64K 132 |
||
191 | #define G2048x1536x16M 133 |
||
192 | #define G2048x1536x16M32 134 |
||
193 | |||
194 | #define G512x480x256 135 |
||
195 | #define G512x480x32K 136 |
||
196 | #define G512x480x64K 137 |
||
197 | #define G512x480x16M 138 |
||
198 | #define G512x480x16M32 139 |
||
199 | |||
200 | #define G400x600x256 140 |
||
201 | #define G400x600x32K 141 |
||
202 | #define G400x600x64K 142 |
||
203 | #define G400x600x16M 143 |
||
204 | #define G400x600x16M32 144 |
||
205 | |||
206 | #define G400x300x256X 145 |
||
207 | |||
208 | #define G320x200x256V 146 |
||
209 | |||
210 | #define __GLASTMODE G320x200x256V |
||
211 | #define GLASTMODE vga_lastmodenumber() |
||
212 | |||
213 | #define IS_IN_STANDARD_VGA_DRIVER(mode) ( \ |
||
214 | ((mode) < G640x480x256) || ((mode) == G720x348x2) || \ |
||
215 | ( ((mode) >= G400x300x256X) && ((mode) <= G400x300x256X) ) ) |
||
216 | |||
217 | extern int vga_version; |
||
218 | extern int __svgalib_chipset; |
||
219 | |||
220 | extern int vga_setmode(int mode, int set_chipset); |
||
221 | extern int vga_hasmode(int mode); |
||
222 | extern int vga_setflipchar(int c); |
||
223 | |||
224 | extern int vga_clear(void); |
||
225 | extern int vga_flip(void); |
||
226 | |||
227 | extern int vga_getxdim(void); |
||
228 | extern int vga_getydim(void); |
||
229 | extern int vga_getcolors(void); |
||
230 | |||
231 | extern int vga_setpalette(int index, int red, int green, int blue); |
||
232 | extern int vga_getpalette(int index, int *red, int *green, int *blue); |
||
233 | extern int vga_setpalvec(int start, int num, int *pal); |
||
234 | extern int vga_getpalvec(int start, int num, int *pal); |
||
235 | |||
236 | extern int vga_screenoff(void); |
||
237 | extern int vga_screenon(void); |
||
238 | |||
239 | extern int vga_setcolor(int color); |
||
240 | extern int vga_drawpixel(int x, int y); |
||
241 | extern int vga_drawline(int x1, int y1, int x2, int y2); |
||
242 | extern int vga_drawscanline(int line, unsigned char *colors); |
||
243 | extern int vga_drawscansegment(unsigned char *colors, int x, int y, int length); |
||
244 | extern int vga_getpixel(int x, int y); /* Added. */ |
||
245 | extern int vga_getscansegment(unsigned char *colors, int x, int y, int length); |
||
246 | |||
247 | extern int vga_getch(void); |
||
248 | |||
249 | extern int vga_dumpregs(void); |
||
250 | |||
251 | |||
252 | /* Extensions to VGAlib v1.2: */ |
||
253 | |||
254 | /* blit flags */ |
||
255 | #define HAVE_BITBLIT 1 |
||
256 | #define HAVE_FILLBLIT 2 |
||
257 | #define HAVE_IMAGEBLIT 4 |
||
258 | #define HAVE_HLINELISTBLIT 8 |
||
259 | #define HAVE_BLITWAIT 16 |
||
260 | |||
261 | /* other flags */ |
||
262 | #define HAVE_RWPAGE 1 /* vga_setreadpage() / vga_setwritepage() available */ |
||
263 | #define IS_INTERLACED 2 /* mode is interlaced */ |
||
264 | #define IS_MODEX 4 /* ModeX style 256 colors */ |
||
265 | #define IS_DYNAMICMODE 8 /* Dynamic defined mode */ |
||
266 | #define CAPABLE_LINEAR 16 /* Can go to linear addressing mode. */ |
||
267 | #define IS_LINEAR 32 /* Linear addressing can be used. */ |
||
268 | #define LINEAR_MODE 512 /* Linear mode is enabled */ |
||
269 | #define EXT_INFO_AVAILABLE 64 /* Returned modeinfo contains valid extended fields */ |
||
270 | #define RGB_MISORDERED 128 /* Mach32 32bpp uses 0BGR instead of BGR0. */ |
||
271 | /* As of this version 1.25 also used to signal if real RGB |
||
272 | (red first in memory) is used instead of BGR (Mach32 DAC 4) */ |
||
273 | #define HAVE_EXT_SET 256 /* vga_ext_set() available */ |
||
274 | |||
275 | typedef struct { |
||
276 | int width; |
||
277 | int height; |
||
278 | int bytesperpixel; |
||
279 | int colors; |
||
280 | int linewidth; /* scanline width in bytes */ |
||
281 | int maxlogicalwidth; /* maximum logical scanline width */ |
||
282 | int startaddressrange; /* changeable bits set */ |
||
283 | int maxpixels; /* video memory / bytesperpixel */ |
||
284 | int haveblit; /* mask of blit functions available */ |
||
285 | int flags; /* other flags */ |
||
286 | |||
287 | /* Extended fields: */ |
||
288 | |||
289 | int chiptype; /* Chiptype detected */ |
||
290 | int memory; /* videomemory in KB */ |
||
291 | int linewidth_unit; /* Use only a multiple of this as parameter for set_logicalwidth and |
||
292 | set_displaystart */ |
||
293 | char *linear_aperture; /* points to mmap secondary mem aperture of card (NULL if unavailable) */ |
||
294 | int aperture_size; /* size of aperture in KB if size>=videomemory. 0 if unavail */ |
||
295 | void (*set_aperture_page) (int page); |
||
296 | /* if aperture_size<videomemory select a memory page */ |
||
297 | void *extensions; /* points to copy of eeprom for mach32 */ |
||
298 | /* depends from actual driver/chiptype.. etc. */ |
||
299 | } vga_modeinfo; |
||
300 | |||
301 | typedef struct { |
||
302 | int version; |
||
303 | int size; |
||
304 | int chipset; |
||
305 | int physmem; |
||
306 | } vga_cardinfo; |
||
307 | |||
308 | extern vga_cardinfo *vga_getcardinfo(void); |
||
309 | extern vga_modeinfo *vga_getmodeinfo(int mode); |
||
310 | extern int vga_getdefaultmode(void); |
||
311 | extern int vga_getcurrentmode(void); |
||
312 | extern int vga_getcurrentchipset(void); |
||
313 | extern char *vga_getmodename(int mode); |
||
314 | extern int vga_getmodenumber(char *name); |
||
315 | extern int vga_lastmodenumber(void); |
||
316 | extern int vga_getoptmode(int x, int y, int colors, int bytesperpixel, int c); |
||
317 | |||
318 | extern unsigned char *graph_mem; |
||
319 | extern unsigned char *vga_getgraphmem(void); |
||
320 | |||
321 | extern void vga_setpage(int p); |
||
322 | extern void vga_setreadpage(int p); |
||
323 | extern void vga_setwritepage(int p); |
||
324 | extern void vga_setlogicalwidth(int w); |
||
325 | extern void vga_setdisplaystart(int a); |
||
326 | extern void vga_waitretrace(void); |
||
327 | extern int vga_claimvideomemory(int n); |
||
328 | extern void vga_disabledriverreport(void); |
||
329 | extern int vga_setmodeX(void); |
||
330 | extern int vga_init(void); /* Used to return void in svgalib <= 1.12. */ |
||
331 | extern int vga_initf(int); |
||
332 | extern int vga_getmousetype(void); |
||
333 | extern int vga_getmonitortype(void); |
||
334 | extern void vga_setmousesupport(int s); |
||
335 | extern void vga_lockvc(void); |
||
336 | extern void vga_unlockvc(void); |
||
337 | extern int vga_getkey(void); |
||
338 | extern int vga_oktowrite(void); |
||
339 | extern void vga_copytoplanar256(unsigned char *virtualp, int pitch, |
||
340 | int voffset, int vpitch, int w, int h); |
||
341 | extern void vga_copytoplanar16(unsigned char *virtualp, int pitch, |
||
342 | int voffset, int vpitch, int w, int h); |
||
343 | extern void vga_copytoplane(unsigned char *virtualp, int pitch, |
||
344 | int voffset, int vpitch, int w, int h, int plane); |
||
345 | extern int vga_setlinearaddressing(void); |
||
346 | extern void vga_safety_fork(void (*shutdown_routine) (void)); |
||
347 | |||
348 | extern int vga_simple_init(void); |
||
349 | extern void vga_chipset_saveregs(unsigned char *); |
||
350 | extern void vga_chipset_setregs(unsigned char *); |
||
351 | |||
352 | #ifdef EGA /* Kernel headers may define this. */ |
||
353 | #undef EGA |
||
354 | #endif |
||
355 | |||
356 | #define UNDEFINED 0 |
||
357 | #define VGA 1 |
||
358 | #define ET4000 2 |
||
359 | #define CIRRUS 3 |
||
360 | #define TVGA8900 4 |
||
361 | #define OAK 5 |
||
362 | #define EGA 6 |
||
363 | #define S3 7 |
||
364 | #define ET3000 8 |
||
365 | #define MACH32 9 |
||
366 | #define GVGA6400 10 |
||
367 | #define ARK 11 |
||
368 | #define ATI 12 |
||
369 | #define ALI 13 |
||
370 | #define MACH64 14 |
||
371 | #define CHIPS 15 |
||
372 | #define APM 16 |
||
373 | #define NV3 17 |
||
374 | #define ET6000 18 |
||
375 | #define VESA 19 |
||
376 | #define MX 20 |
||
377 | #define PARADISE 21 |
||
378 | #define RAGE 22 |
||
379 | #define BANSHEE 23 |
||
380 | #define SIS 24 |
||
381 | #define I740 25 |
||
382 | #define NEOMAGIC 26 |
||
383 | #define LAGUNA 27 |
||
384 | #define FBDEV 28 |
||
385 | #define G400 29 |
||
386 | #define R128 30 |
||
387 | #define SAVAGE 31 |
||
388 | #define MILLENNIUM 32 |
||
389 | #define I810 33 |
||
390 | #define TRIDENT 34 |
||
391 | #define RENDITION 35 |
||
392 | #define G450C2 36 |
||
393 | #define PM2 37 |
||
394 | |||
395 | /* Hor. sync: */ |
||
396 | #define MON640_60 0 /* 31.5 KHz (standard VGA) */ |
||
397 | #define MON800_56 1 /* 35.1 KHz (old SVGA) */ |
||
398 | #define MON1024_43I 2 /* 35.5 KHz (low-end SVGA, 8514) */ |
||
399 | #define MON800_60 3 /* 37.9 KHz (SVGA) */ |
||
400 | #define MON1024_60 4 /* 48.3 KHz (SVGA non-interlaced) */ |
||
401 | #define MON1024_70 5 /* 56.0 KHz (SVGA high frequency) */ |
||
402 | #define MON1024_72 6 |
||
403 | |||
404 | extern void vga_setchipset(int c); |
||
405 | extern void vga_setchipsetandfeatures(int c, int par1, int par2); |
||
406 | extern void vga_gettextfont(void *font); |
||
407 | extern void vga_puttextfont(void *font); |
||
408 | extern void vga_settextmoderegs(void *regs); |
||
409 | extern void vga_gettextmoderegs(void *regs); |
||
410 | |||
411 | extern int vga_white(void); |
||
412 | extern int vga_setegacolor(int c); |
||
413 | extern int vga_setrgbcolor(int r, int g, int b); |
||
414 | |||
415 | extern void vga_bitblt(int srcaddr, int destaddr, int w, int h, int pitch); |
||
416 | extern void vga_imageblt(void *srcaddr, int destaddr, int w, int h, int pitch); |
||
417 | extern void vga_fillblt(int destaddr, int w, int h, int pitch, int c); |
||
418 | extern void vga_hlinelistblt(int ymin, int n, int *xmin, int *xmax, int pitch, int c); |
||
419 | extern void vga_blitwait(void); |
||
420 | extern int vga_ext_set(unsigned what,...); |
||
421 | extern int vga_accel(unsigned operation,...); |
||
422 | |||
423 | extern int vga_initcursor(int); |
||
424 | extern void vga_showcursor(int); |
||
425 | extern void vga_setcursorposition(int, int); |
||
426 | extern void vga_selectcursor(int); |
||
427 | extern void vga_setcursorimage(int, int, int, int, unsigned char *); |
||
428 | |||
429 | inline void copy_videomem_32to16(void *src, void *dst, unsigned long int memdiv2); |
||
74 | giacomo | 430 | inline void copy_videomem_16to16(void *src, void *dst, unsigned long int memdiv4); |
54 | pj | 431 | |
432 | extern int vga_setcrtcregs(unsigned char *); |
||
433 | extern int vga_getcrtcregs(unsigned char *); |
||
434 | |||
435 | extern int vga_addtiming(int pixelClock, |
||
436 | int HDisplay, |
||
437 | int HSyncStart, |
||
438 | int HSyncEnd, |
||
439 | int HTotal, |
||
440 | int VDisplay, |
||
441 | int VSyncStart, |
||
442 | int VSyncEnd, |
||
443 | int VTotal, |
||
444 | int flags); |
||
445 | |||
446 | extern int vga_changetiming(int pixelClock, |
||
447 | int HDisplay, |
||
448 | int HSyncStart, |
||
449 | int HSyncEnd, |
||
450 | int HTotal, |
||
451 | int VDisplay, |
||
452 | int VSyncStart, |
||
453 | int VSyncEnd, |
||
454 | int VTotal, |
||
455 | int flags); |
||
456 | |||
457 | extern int vga_getcurrenttiming(int *pixelClock, |
||
458 | int *HDisplay, |
||
459 | int *HSyncStart, |
||
460 | int *HSyncEnd, |
||
461 | int *HTotal, |
||
462 | int *VDisplay, |
||
463 | int *VSyncStart, |
||
464 | int *VSyncEnd, |
||
465 | int *VTotal, |
||
466 | int *flags); |
||
467 | |||
468 | extern int vga_addmode(int xdim, int ydim, int cols, |
||
469 | int xbytes, int bytespp); |
||
470 | |||
471 | extern int vga_guesstiming(int x, int y, int clue, int arg); |
||
472 | |||
473 | extern void vga_dpms(int mode); |
||
474 | |||
475 | /* Valid values for what in vga_ext_set: */ |
||
476 | #define VGA_EXT_AVAILABLE 0 /* supported flags */ |
||
477 | #define VGA_EXT_SET 1 /* set flag(s) */ |
||
478 | #define VGA_EXT_CLEAR 2 /* clear flag(s) */ |
||
479 | #define VGA_EXT_RESET 3 /* set/clear flag(s) */ |
||
480 | #define VGA_EXT_PAGE_OFFSET 4 /* set an offset for all subsequent vga_set*page() calls */ |
||
481 | /* Like: vga_ext_set(VGA_EXT_PAGE_OFFSET, 42); */ |
||
482 | /* returns the previous offset value. */ |
||
483 | #define VGA_EXT_FONT_SIZE 5 /* the (maximal) size of the font buffer */ |
||
484 | |||
485 | /* Valid params for VGA_EXT_AVAILABLE: */ |
||
486 | #define VGA_AVAIL_SET 0 /* vga_ext_set sub funcs */ |
||
487 | #define VGA_AVAIL_ACCEL 1 /* vga_accel sub funcs */ |
||
488 | #define VGA_AVAIL_FLAGS 2 /* known flags for VGA_EXT_SET */ |
||
489 | #define VGA_AVAIL_ROP 3 /* vga_accel ROP sub funcs */ |
||
490 | #define VGA_AVAIL_TRANSPARENCY 4 /* vga_accel TRANSPARENCY sub funcs */ |
||
491 | #define VGA_AVAIL_ROPMODES 5 /* vga_accel ROP modes supported funcs */ |
||
492 | #define VGA_AVAIL_TRANSMODES 6 /* vga_accel TRANSPARENCY modes supported */ |
||
493 | |||
494 | /* Known flags to vga_ext_set() */ |
||
495 | #define VGA_CLUT8 1 /* 8 bit DAC entries */ |
||
496 | |||
497 | /* Acceleration interface. */ |
||
498 | |||
499 | /* Accel operations. */ |
||
500 | #define ACCEL_FILLBOX 1 /* Simple solid fill. */ |
||
501 | #define ACCEL_SCREENCOPY 2 /* Simple screen-to-screen BLT. */ |
||
502 | #define ACCEL_PUTIMAGE 3 /* Straight image transfer. */ |
||
503 | #define ACCEL_DRAWLINE 4 /* General line draw. */ |
||
504 | #define ACCEL_SETFGCOLOR 5 /* Set foreground color. */ |
||
505 | #define ACCEL_SETBGCOLOR 6 /* Set background color. */ |
||
506 | #define ACCEL_SETTRANSPARENCY 7 /* Set transparency mode. */ |
||
507 | #define ACCEL_SETRASTEROP 8 /* Set raster-operation. */ |
||
508 | #define ACCEL_PUTBITMAP 9 /* Color-expand bitmap. */ |
||
509 | #define ACCEL_SCREENCOPYBITMAP 10 /* Color-expand from screen. */ |
||
510 | #define ACCEL_DRAWHLINELIST 11 /* Draw horizontal spans. */ |
||
511 | #define ACCEL_SETMODE 12 /* Set blit strategy. */ |
||
512 | #define ACCEL_SYNC 13 /* Wait for blits to finish. */ |
||
513 | #define ACCEL_SETOFFSET 14 /* Set screen offset */ |
||
514 | #define ACCEL_SCREENCOPYMONO 15 /* Monochrome screen-to-screen BLT. */ |
||
515 | #define ACCEL_POLYLINE 16 /* Draw multiple lines. */ |
||
516 | #define ACCEL_POLYHLINE 17 /* Draw multiple horizontal spans. */ |
||
517 | #define ACCEL_POLYFILLMODE 18 /* Set polygon mode. */ |
||
518 | |||
519 | /* Corresponding bitmask. */ |
||
520 | #define ACCELFLAG_FILLBOX 0x1 /* Simple solid fill. */ |
||
521 | #define ACCELFLAG_SCREENCOPY 0x2 /* Simple screen-to-screen BLT. */ |
||
522 | #define ACCELFLAG_PUTIMAGE 0x4 /* Straight image transfer. */ |
||
523 | #define ACCELFLAG_DRAWLINE 0x8 /* General line draw. */ |
||
524 | #define ACCELFLAG_SETFGCOLOR 0x10 /* Set foreground color. */ |
||
525 | #define ACCELFLAG_SETBGCOLOR 0x20 /* Set background color. */ |
||
526 | #define ACCELFLAG_SETTRANSPARENCY 0x40 /* Set transparency mode. */ |
||
527 | #define ACCELFLAG_SETRASTEROP 0x80 /* Set raster-operation. */ |
||
528 | #define ACCELFLAG_PUTBITMAP 0x100 /* Color-expand bitmap. */ |
||
529 | #define ACCELFLAG_SCREENCOPYBITMAP 0x200 /* Color-exand from screen. */ |
||
530 | #define ACCELFLAG_DRAWHLINELIST 0x400 /* Draw horizontal spans. */ |
||
531 | #define ACCELFLAG_SETMODE 0x800 /* Set blit strategy. */ |
||
532 | #define ACCELFLAG_SYNC 0x1000 /* Wait for blits to finish. */ |
||
533 | #define ACCELFLAG_SETOFFSET 0x2000 /* Set screen offset */ |
||
534 | #define ACCELFLAG_SCREENCOPYMONO 0x4000 /* Monochrome screen-to-screen BLT. */ |
||
535 | #define ACCELFLAG_POLYLINE 0x8000 /* Draw multiple lines. */ |
||
536 | #define ACCELFLAG_POLYHLINE 0x10000 /* Draw multiple horizontal spans. */ |
||
537 | #define ACCELFLAG_POLYFILLMODE 0x20000 /* Set polygon mode. */ |
||
538 | |||
539 | /* Mode for SetTransparency. */ |
||
540 | #define DISABLE_TRANSPARENCY_COLOR 0 |
||
541 | #define ENABLE_TRANSPARENCY_COLOR 1 |
||
542 | #define DISABLE_BITMAP_TRANSPARENCY 2 |
||
543 | #define ENABLE_BITMAP_TRANSPARENCY 3 |
||
544 | |||
545 | /* Flags for SetMode (accelerator interface). */ |
||
546 | #define BLITS_SYNC 0 |
||
547 | #define BLITS_IN_BACKGROUND 0x1 |
||
548 | |||
549 | /* Raster ops. */ |
||
550 | #define ROP_COPY 0 /* Straight copy. */ |
||
551 | #define ROP_OR 1 /* Source OR destination. */ |
||
552 | #define ROP_AND 2 /* Source AND destination. */ |
||
553 | #define ROP_XOR 3 /* Source XOR destination. */ |
||
554 | #define ROP_INVERT 4 /* Invert destination. */ |
||
555 | |||
556 | /* For the poly funcs */ |
||
557 | #define ACCEL_START 1 |
||
558 | #define ACCEL_END 2 |
||
559 | |||
560 | /* |
||
561 | * wait for keypress, mousemove, I/O, timeout. cf. select (3) for details on |
||
562 | * all parameters execept which. |
||
563 | * NULL is a valid argument for any of the ptrs. |
||
564 | */ |
||
565 | |||
566 | // extern int vga_waitevent(int which, fd_set * in, fd_set * out, fd_set * except, //SHARK |
||
567 | // struct timeval *timeout); //SHARK |
||
568 | |||
569 | /* |
||
570 | * valid values for what ( | is valid to combine them ) |
||
571 | */ |
||
572 | #define VGA_MOUSEEVENT 1 |
||
573 | #define VGA_KEYEVENT 2 |
||
574 | |||
575 | /* |
||
576 | * return value >= has bits set for mouse/keyboard events detected. |
||
577 | * mouse and raw keyboard events are already handled and their bits removed |
||
578 | * from *in when vga_waitevent returns. |
||
579 | * VGA_KEYEVENT relates to vga_getch NOT vga_getkey. |
||
580 | * return values < 0 signal errors. In this case check errno. |
||
581 | */ |
||
582 | |||
583 | /* Background running */ |
||
584 | extern void vga_runinbackground(int stat, ...); |
||
585 | #define VGA_GOTOBACK -1 |
||
586 | #define VGA_COMEFROMBACK -2 |
||
587 | extern int vga_runinbackground_version(void); |
||
588 | |||
589 | #ifdef __cplusplus |
||
590 | } |
||
591 | |||
592 | #endif |
||
593 | #endif /* VGA_H */ |