home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / SVGALIB / SVGALIB1.TAR / svgalib / src / vga.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-21  |  9.7 KB  |  295 lines

  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. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. #define TEXT          0        /* Compatible with VGAlib v1.2 */
  17. #define G320x200x16  1
  18. #define G640x200x16  2
  19. #define G640x350x16  3
  20. #define G640x480x16  4
  21. #define G320x200x256 5
  22. #define G320x240x256 6
  23. #define G320x400x256 7
  24. #define G360x480x256 8
  25. #define G640x480x2   9
  26.  
  27. #define G640x480x256 10
  28. #define G800x600x256 11
  29. #define G1024x768x256 12
  30.  
  31. #define G1280x1024x256 13    /* Additional modes. */
  32.  
  33. #define G320x200x32K 14
  34. #define G320x200x64K 15
  35. #define G320x200x16M 16
  36. #define G640x480x32K 17
  37. #define G640x480x64K 18
  38. #define G640x480x16M 19
  39. #define G800x600x32K 20
  40. #define G800x600x64K 21
  41. #define G800x600x16M 22
  42. #define G1024x768x32K 23
  43. #define G1024x768x64K 24
  44. #define G1024x768x16M 25
  45. #define G1280x1024x32K 26
  46. #define G1280x1024x64K 27
  47. #define G1280x1024x16M 28
  48.  
  49. #define G800x600x16 29
  50. #define G1024x768x16 30
  51. #define G1280x1024x16 31
  52.  
  53. #define G720x348x2 32        /* Hercules emulation mode */
  54.  
  55. #define G320x200x16M32 33    /* 32-bit per pixel modes. */
  56. #define G640x480x16M32 34
  57. #define G800x600x16M32 35
  58. #define G1024x768x16M32 36
  59. #define G1280x1024x16M32 37
  60.  
  61. #define __GLASTMODE G1280x1024x16M32
  62. #define GLASTMODE vga_lastmodenumber()
  63.  
  64. extern int vga_setmode(int mode);
  65. extern int vga_hasmode(int mode);
  66. extern int vga_setflipchar(int c);
  67.  
  68. extern int vga_clear();
  69. extern int vga_flip();
  70.  
  71. extern int vga_getxdim();
  72. extern int vga_getydim();
  73. extern int vga_getcolors();
  74.  
  75. extern int vga_setpalette(int index, int red, int green, int blue);
  76. extern int vga_getpalette(int index, int *red, int *green, int *blue);
  77. extern int vga_setpalvec(int start, int num, int *pal);
  78. extern int vga_getpalvec(int start, int num, int *pal);
  79.  
  80. extern int vga_screenoff();
  81. extern int vga_screenon();
  82.  
  83. extern int vga_setcolor(int color);
  84. extern int vga_drawpixel(int x, int y);
  85. extern int vga_drawline(int x1, int y1, int x2, int y2);
  86. extern int vga_drawscanline(int line, unsigned char* colors);
  87. extern int vga_drawscansegment(unsigned char* colors, int x, int y, int length);
  88. extern int vga_getpixel(int x, int y);    /* Added. */
  89.  
  90. extern int vga_getch();
  91.  
  92. extern int vga_dumpregs();
  93.  
  94.  
  95. /* Extensions to VGAlib v1.2: */
  96.  
  97. /* blit flags */
  98. #define HAVE_BITBLIT 1
  99. #define HAVE_FILLBLIT 2
  100. #define HAVE_IMAGEBLIT 4
  101. #define HAVE_HLINELISTBLIT 8
  102. #define HAVE_BLITWAIT 16
  103.  
  104. /* other flags */
  105. #define HAVE_RWPAGE 1        /* vga_setreadpage() / vga_setwritepage() available */
  106. #define IS_INTERLACED 2        /* mode is interlaced */
  107. #define IS_MODEX 4        /* ModeX style 256 colors */
  108. #define IS_DYNAMICMODE 8    /* Dynamic defined mode */
  109. #define CAPABLE_LINEAR 16    /* Can go to linear addressing mode. */
  110. #define IS_LINEAR 32        /* Linear addressing enabled. */
  111. #define EXT_INFO_AVAILABLE 64    /* Returned modeinfo contains valid extended fields */
  112. #define RGB_MISORDERED 128    /* Mach32 32bpp uses 0BGR instead of BGR0. */
  113. #define HAVE_EXT_SET 256    /* vga_ext_set() available */
  114.  
  115. typedef struct {
  116.     int width;
  117.     int height;
  118.     int bytesperpixel;
  119.     int colors;
  120.     int linewidth;        /* scanline width in bytes */
  121.     int maxlogicalwidth;    /* maximum logical scanline width */
  122.     int startaddressrange;    /* changeable bits set */
  123.     int maxpixels;        /* video memory / bytesperpixel */
  124.     int haveblit;        /* mask of blit functions available */
  125.     int flags;        /* other flags */
  126.  
  127.     /* Extended fields: */
  128.  
  129.     int chiptype;        /* Chiptype detected */
  130.     int memory;        /* videomemory in KB */
  131.     int linewidth_unit;    /* Use only a multiple of this as parameter for set_logicalwidth and
  132.                    set_displaystart */
  133.     char *linear_aperture;    /* points to mmap secondary mem aperture of card (NULL if unavailable) */
  134.     int aperture_size;    /* size of aperture in KB if size>=videomemory. 0 if unavail */
  135.     void (*set_aperture_page)(int page);
  136.                 /* if aperture_size<videomemory select a memory page */
  137.     void *extensions;    /* points to copy of eeprom for mach32 */
  138.                 /* depends from actual driver/chiptype.. etc. */
  139. } vga_modeinfo;
  140.  
  141. extern vga_modeinfo *vga_getmodeinfo( int mode );
  142. extern int vga_getdefaultmode();
  143. extern int vga_getcurrentmode();
  144. extern int vga_getcurrentchipset();
  145. extern char *vga_getmodename( int mode );
  146. extern int vga_getmodenumber( char *name );
  147. extern int vga_lastmodenumber(void);
  148.  
  149. extern unsigned char *graph_mem;
  150. extern unsigned char *vga_getgraphmem();
  151.  
  152. extern void vga_setpage( int p );
  153. extern void vga_setreadpage( int p );
  154. extern void vga_setwritepage( int p );
  155. extern void vga_setlogicalwidth( int w );
  156. extern void vga_setdisplaystart( int a );
  157. extern void vga_waitretrace();
  158. extern int vga_claimvideomemory( int n );
  159. extern void vga_disabledriverreport();
  160. extern int vga_setmodeX();
  161. extern int vga_init();    /* Used to return void in svgalib <= 1.12. */
  162. extern int vga_getmousetype();
  163. extern int vga_getmonitortype();
  164. extern void vga_setmousesupport( int s );
  165. extern void vga_lockvc();
  166. extern void vga_unlockvc();
  167. extern int vga_getkey();
  168. extern void vga_runinbackground( int s );
  169. extern int vga_oktowrite();
  170. extern void vga_copytoplanar256( unsigned char *virtualp, int pitch,
  171.     int voffset, int vpitch, int w, int h );
  172. extern void vga_copytoplanar16( unsigned char *virtualp, int pitch,
  173.     int voffset, int vpitch, int w, int h );
  174. extern void vga_copytoplane( unsigned char *virtualp, int pitch,
  175.     int voffset, int vpitch, int w, int h, int plane );
  176. extern int vga_setlinearaddressing();
  177. extern void vga_safety_fork(void (*shutdown_routine)(void));
  178.  
  179.  
  180. #ifdef EGA    /* Kernel headers may define this. */
  181. #undef EGA
  182. #endif
  183.  
  184. #define UNDEFINED    0
  185. #define VGA        1
  186. #define ET4000        2
  187. #define CIRRUS        3
  188. #define TVGA8900    4 
  189. #define OAK        5
  190. #define EGA        6
  191. #define S3        7
  192. #define ET3000        8
  193. #define MACH32        9
  194. #define GVGA6400    10
  195. #define ARK        11
  196. #define ATI        12
  197.  
  198.                 /* Hor. sync: */
  199. #define MON640_60    0    /* 31.5 KHz (standard VGA) */
  200. #define MON800_56    1    /* 35.1 KHz (old SVGA) */
  201. #define MON1024_43I    2    /* 35.5 KHz (low-end SVGA, 8514) */
  202. #define MON800_60    3    /* 37.9 KHz (SVGA) */
  203. #define MON1024_60    4    /* 48.3 KHz (SVGA non-interlaced) */
  204. #define MON1024_70    5    /* 56.0 KHz (SVGA high frequency) */
  205. #define MON1024_72    6
  206.  
  207. extern void vga_setchipset( int c );
  208. extern void vga_setchipsetandfeatures( int c, int par1, int par2 );
  209. extern void vga_gettextfont( void *font );
  210. extern void vga_puttextfont( void *font );
  211. extern void vga_settextmoderegs( void *regs );
  212. extern void vga_gettextmoderegs( void *regs );
  213.  
  214. extern int vga_white(); 
  215. extern int vga_setegacolor( int c );
  216. extern int vga_setrgbcolor( int r, int g, int b );
  217.  
  218. extern void vga_bitblt( int srcaddr, int destaddr, int w, int h, int pitch );
  219. extern void vga_imageblt( void *srcaddr, int destaddr, int w, int h, int pitch );
  220. extern void vga_fillblt( int destaddr, int w, int h, int pitch, int c );
  221. extern void vga_hlinelistblt( int ymin, int n, int *xmin, int *xmax, int pitch, int c );
  222. extern void vga_blitwait();
  223. extern int vga_ext_set(unsigned what, ...);
  224. /* extern int vga_accel(unsigned operation, ...); */ 
  225.  
  226. /* Valid values for what in vga_ext_set: */
  227. #define VGA_EXT_AVAILABLE    0    /* supported flags */
  228. #define VGA_EXT_SET        1    /* set flag(s) */
  229. #define VGA_EXT_CLEAR        2    /* clear flag(s) */
  230. #define VGA_EXT_RESET        3    /* set/clear flag(s) */
  231.  
  232. /* Valid params for VGA_EXT_AVAILABLE: */
  233. #define VGA_AVAIL_SET        0    /* vga_ext_set sub funcs */
  234. #define VGA_AVAIL_ACCEL        1    /* vga_accel sub funcs */
  235. #define VGA_AVAIL_FLAGS        2    /* known flags for VGA_EXT_SET */
  236.  
  237. /* Known flags to vga_ext_set() */
  238. #define VGA_CLUT8        1    /* 8 bit DAC entries */
  239.  
  240. /* Acceleration interface. */
  241.  
  242. /* Accel operations. */
  243. #define ACCEL_FILLBOX            1    /* Simple solid fill. */
  244. #define ACCEL_SCREENCOPY        2    /* Simple screen-to-screen BLT. */
  245. #define ACCEL_PUTIMAGE            3    /* Straight image transfer. */
  246. #define ACCEL_DRAWLINE            4    /* General line draw. */
  247. #define ACCEL_SETFGCOLOR        5    /* Set foreground color. */
  248. #define ACCEL_SETBGCOLOR        6    /* Set background color. */
  249. #define ACCEL_SETTRANSPARENCY        7    /* Set transparency mode. */
  250. #define ACCEL_SETRASTEROP        8    /* Set raster-operation. */
  251. #define ACCEL_PUTBITMAP            9    /* Color-expand bitmap. */
  252. #define ACCEL_SCREENCOPYBITMAP        10    /* Color-exand from screen. */
  253. #define ACCEL_DRAWHLINELIST        11    /* Draw horizontal spans. */
  254. #define ACCEL_SETMODE            12    /* Set blit strategy. */
  255. #define ACCEL_SYNC            13    /* Wait for blits to finish. */
  256.  
  257. /* Corresponding bitmask. */
  258. #define ACCELFLAG_FILLBOX        0x1    /* Simple solid fill. */
  259. #define ACCELFLAG_SCREENCOPY        0x2    /* Simple screen-to-screen BLT. */
  260. #define ACCELFLAG_PUTIMAGE        0x4    /* Straight image transfer. */
  261. #define ACCELFLAG_DRAWLINE        0x8    /* General line draw. */
  262. #define ACCELFLAG_SETFGCOLOR        0x10    /* Set foreground color. */
  263. #define ACCELFLAG_SETBGCOLOR        0x20    /* Set background color. */
  264. #define ACCELFLAG_SETTRANSPARENCY    0x40    /* Set transparency mode. */
  265. #define ACCELFLAG_SETRASTEROP        0x80    /* Set raster-operation. */
  266. #define ACCELFLAG_PUTBITMAP        0x100    /* Color-expand bitmap. */
  267. #define ACCELFLAG_SCREENCOPYBITMAP    0x200    /* Color-exand from screen. */
  268. #define ACCELFLAG_DRAWHLINELIST        0x400    /* Draw horizontal spans. */
  269. #define ACCELFLAG_SETMODE        0x800    /* Set blit strategy. */
  270. #define ACCELFLAG_SYNC            0x1000    /* Wait for blits to finish. */
  271.  
  272. /* Mode for SetTransparency. */
  273. #define DISABLE_TRANSPARENCY_COLOR    0
  274. #define ENABLE_TRANSPARENCY_COLOR    1
  275. #define DISABLE_BITMAP_TRANSPARENCY    2
  276. #define ENABLE_BITMAP_TRANSPARENCY    3
  277.  
  278. /* Flags for SetMode (accelerator interface). */
  279. #define BLITS_SYNC            0
  280. #define BLITS_IN_BACKGROUND        0x1
  281.  
  282. /* Raster ops. */
  283. #define ROP_COPY            0    /* Straight copy. */
  284. #define ROP_OR                1    /* Source OR destination. */
  285. #define ROP_AND                2    /* Source AND destination. */
  286. #define ROP_XOR                3    /* Source XOR destination. */
  287. #define ROP_INVERT            4    /* Invert destination. */
  288.  
  289. #ifdef __cplusplus
  290. }
  291. #endif
  292.  
  293. #endif /* VGA_H */
  294.  
  295.