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