home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 9 / CDACTUAL9.iso / progs / CB / DATA.Z / GRAPHICS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-18  |  16.4 KB  |  500 lines

  1. /*  graphics.h
  2.  
  3.     Definitions for Graphics Package.
  4.  
  5. */
  6.  
  7. /* $Copyright: 1987$ */
  8. /* $Revision:   8.1  $ */
  9.  
  10. #if !defined(__GRAPHICS_H)
  11. #define __GRAPHICS_H
  12.  
  13. #if defined( _Windows ) && !defined (__DPMI16__) && !defined(__DPMI32__)
  14. #error BGI graphics not supported under Windows
  15. #endif
  16.  
  17. #if defined(__STDC__)
  18. #error BGI graphics not ANSI compatible
  19. #endif
  20.  
  21. #if !defined(___DEFS_H)
  22. #include <_defs.h>
  23. #endif
  24.  
  25. #if !defined(_BGIENTRY)
  26.     #if defined(__DPMI16__)
  27.         #define _BGIENTRY __pascal
  28.     #elif defined(__DPMI32__)
  29.         #define _BGIENTRY _RTLENTRY __import
  30.     #else
  31.         #define _BGIENTRY _RTLENTRY
  32.     #endif
  33. #endif
  34.  
  35. #if defined(__DPMI32__)
  36. #define far
  37. #define huge
  38. #endif
  39.  
  40. enum graphics_errors {      /* graphresult error return codes */
  41.     grOk           =   0,
  42.     grNoInitGraph      =  -1,
  43.     grNotDetected      =  -2,
  44.     grFileNotFound     =  -3,
  45.     grInvalidDriver    =  -4,
  46.     grNoLoadMem    =  -5,
  47.     grNoScanMem    =  -6,
  48.     grNoFloodMem       =  -7,
  49.     grFontNotFound     =  -8,
  50.     grNoFontMem    =  -9,
  51.     grInvalidMode      = -10,
  52.     grError        = -11,   /* generic error */
  53.     grIOerror      = -12,
  54.     grInvalidFont      = -13,
  55.     grInvalidFontNum   = -14,
  56.     grInvalidVersion   = -18
  57. };
  58.  
  59. enum graphics_drivers {     /* define graphics drivers */
  60.     DETECT,         /* requests autodetection */
  61.     CGA, MCGA, EGA, EGA64, EGAMONO, IBM8514,    /* 1 - 6 */
  62.     HERCMONO, ATT400, VGA, PC3270,          /* 7 - 10 */
  63.     CURRENT_DRIVER = -1
  64. };
  65.  
  66. enum graphics_modes {       /* graphics modes for each driver */
  67.     CGAC0      = 0,  /* 320x200 palette 0; 1 page   */
  68.     CGAC1      = 1,  /* 320x200 palette 1; 1 page   */
  69.     CGAC2      = 2,  /* 320x200 palette 2: 1 page   */
  70.     CGAC3      = 3,  /* 320x200 palette 3; 1 page   */
  71.     CGAHI      = 4,  /* 640x200 1 page          */
  72.     MCGAC0     = 0,  /* 320x200 palette 0; 1 page   */
  73.     MCGAC1     = 1,  /* 320x200 palette 1; 1 page   */
  74.     MCGAC2     = 2,  /* 320x200 palette 2; 1 page   */
  75.     MCGAC3     = 3,  /* 320x200 palette 3; 1 page   */
  76.     MCGAMED    = 4,  /* 640x200 1 page          */
  77.     MCGAHI     = 5,  /* 640x480 1 page          */
  78.     EGALO      = 0,  /* 640x200 16 color 4 pages    */
  79.     EGAHI      = 1,  /* 640x350 16 color 2 pages    */
  80.     EGA64LO    = 0,  /* 640x200 16 color 1 page     */
  81.     EGA64HI    = 1,  /* 640x350 4 color  1 page     */
  82.     EGAMONOHI  = 0,  /* 640x350 64K on card, 1 page - 256K on card, 4 pages */
  83.     HERCMONOHI = 0,  /* 720x348 2 pages         */
  84.     ATT400C0   = 0,  /* 320x200 palette 0; 1 page   */
  85.     ATT400C1   = 1,  /* 320x200 palette 1; 1 page   */
  86.     ATT400C2   = 2,  /* 320x200 palette 2; 1 page   */
  87.     ATT400C3   = 3,  /* 320x200 palette 3; 1 page   */
  88.     ATT400MED  = 4,  /* 640x200 1 page          */
  89.     ATT400HI   = 5,  /* 640x400 1 page          */
  90.     VGALO      = 0,  /* 640x200 16 color 4 pages    */
  91.     VGAMED     = 1,  /* 640x350 16 color 2 pages    */
  92.     VGAHI      = 2,  /* 640x480 16 color 1 page     */
  93.     PC3270HI   = 0,  /* 720x350 1 page          */
  94.     IBM8514LO  = 0,  /* 640x480 256 colors      */
  95.     IBM8514HI  = 1   /*1024x768 256 colors      */
  96. };
  97.  
  98.  
  99. #if defined(__DPMI32__)
  100. /*  graphicx.h
  101.  
  102.     Extended Definitions for Graphics Package.
  103.  
  104. */
  105.  
  106.  
  107. enum Xgraphics_drivers {     /* define extended graphics drivers */
  108.     DETECTX    = 256,
  109.     VGA256     = 11,
  110.     ATTDEB     = 12,
  111.     TOSHIBA    = 13,
  112.  
  113.     SVGA16     = 14,
  114.     SVGA256    = 15,
  115.     SVGA32K    = 16,
  116.     SVGA64K    = 17,
  117.  
  118.     VESA16     = 18,
  119.     VESA256    = 19,
  120.     VESA32K    = 20,
  121.     VESA64K    = 21,
  122.     VESA16M    = 22,
  123.  
  124.     ATI16      = 23,
  125.     ATI256     = 24,
  126.     ATI32K     = 25,
  127.     COMPAQ     = 26,
  128.     TSENG316   = 27,
  129.     TSENG3256  = 28,
  130.     TSENG416   = 29,
  131.     TSENG4256  = 30,
  132.     TSENG432K  = 31,
  133.     GENOA5     = 32,
  134.     GENOA6     = 33,
  135.     OAK        = 34,
  136.     PARADIS16  = 35,
  137.     PARADIS256 = 36,
  138.     TECMAR     = 37,
  139.     TRIDENT16  = 38,
  140.     TRIDENT256 = 39,
  141.     VIDEO7     = 40,
  142.     VIDEO7II   = 41,
  143.  
  144.     S3         = 42,
  145.     ATIGUP     = 43
  146.  
  147. };
  148.  
  149. enum Xgraphics_modes {       /* graphics modes for each driver */
  150.     RES640x350  = 0,
  151.     RES640x480  = 1,
  152.     RES800x600  = 2,
  153.     RES1024x768 = 3,
  154.     RES1280x1024 = 4,
  155. };
  156.  
  157.  
  158. #endif  /* !__DPMI32__ */
  159.  
  160.  
  161. /* Colors for setpalette and setallpalette */
  162.  
  163. #if !defined(__COLORS)
  164. #define __COLORS
  165.  
  166. enum COLORS {
  167.     BLACK,          /* dark colors */
  168.     BLUE,
  169.     GREEN,
  170.     CYAN,
  171.     RED,
  172.     MAGENTA,
  173.     BROWN,
  174.     LIGHTGRAY,
  175.     DARKGRAY,           /* light colors */
  176.     LIGHTBLUE,
  177.     LIGHTGREEN,
  178.     LIGHTCYAN,
  179.     LIGHTRED,
  180.     LIGHTMAGENTA,
  181.     YELLOW,
  182.     WHITE
  183. };
  184. #endif
  185.  
  186. enum CGA_COLORS {
  187.     CGA_LIGHTGREEN     = 1,     /* Palette C0 Color Names   */
  188.     CGA_LIGHTRED       = 2,
  189.     CGA_YELLOW         = 3,
  190.  
  191.     CGA_LIGHTCYAN      = 1,     /* Palette C1 Color Names   */
  192.     CGA_LIGHTMAGENTA   = 2,
  193.     CGA_WHITE          = 3,
  194.  
  195.     CGA_GREEN          = 1,     /* Palette C2 Color Names   */
  196.     CGA_RED        = 2,
  197.     CGA_BROWN          = 3,
  198.  
  199.     CGA_CYAN           = 1,     /* Palette C3 Color Names   */
  200.     CGA_MAGENTA        = 2,
  201.     CGA_LIGHTGRAY      = 3
  202. };
  203.  
  204.  
  205. enum EGA_COLORS {
  206.     EGA_BLACK        =  0,      /* dark colors */
  207.     EGA_BLUE         =  1,
  208.     EGA_GREEN        =  2,
  209.     EGA_CYAN         =  3,
  210.     EGA_RED      =  4,
  211.     EGA_MAGENTA      =  5,
  212.     EGA_BROWN        =  20,
  213.     EGA_LIGHTGRAY    =  7,
  214.     EGA_DARKGRAY     =  56,     /* light colors */
  215.     EGA_LIGHTBLUE    =  57,
  216.     EGA_LIGHTGREEN   =  58,
  217.     EGA_LIGHTCYAN    =  59,
  218.     EGA_LIGHTRED     =  60,
  219.     EGA_LIGHTMAGENTA     =  61,
  220.     EGA_YELLOW       =  62,
  221.     EGA_WHITE        =  63
  222. };
  223.  
  224. enum line_styles {      /* Line styles for get/setlinestyle */
  225.     SOLID_LINE   = 0,
  226.     DOTTED_LINE  = 1,
  227.     CENTER_LINE  = 2,
  228.     DASHED_LINE  = 3,
  229.     USERBIT_LINE = 4,   /* User defined line style */
  230. };
  231.  
  232. enum line_widths {      /* Line widths for get/setlinestyle */
  233.     NORM_WIDTH  = 1,
  234.     THICK_WIDTH = 3,
  235. };
  236.  
  237. enum font_names {
  238.     DEFAULT_FONT    = 0,    /* 8x8 bit mapped font */
  239.     TRIPLEX_FONT    = 1,    /* "Stroked" fonts */
  240.     SMALL_FONT  = 2,
  241.     SANS_SERIF_FONT = 3,
  242.     GOTHIC_FONT = 4,
  243.     SCRIPT_FONT = 5,
  244.     SIMPLEX_FONT = 6,
  245.     TRIPLEX_SCR_FONT = 7,
  246.     COMPLEX_FONT = 8,
  247.     EUROPEAN_FONT = 9,
  248.     BOLD_FONT = 10
  249. };
  250.  
  251. #define HORIZ_DIR   0   /* left to right */
  252. #define VERT_DIR    1   /* bottom to top */
  253.  
  254. #define USER_CHAR_SIZE  0   /* user-defined char size */
  255.  
  256. enum fill_patterns {        /* Fill patterns for get/setfillstyle */
  257.     EMPTY_FILL,     /* fills area in background color */
  258.     SOLID_FILL,     /* fills area in solid fill color */
  259.     LINE_FILL,      /* --- fill */
  260.     LTSLASH_FILL,       /* /// fill */
  261.     SLASH_FILL,     /* /// fill with thick lines */
  262.     BKSLASH_FILL,       /* \\\ fill with thick lines */
  263.     LTBKSLASH_FILL,     /* \\\ fill */
  264.     HATCH_FILL,     /* light hatch fill */
  265.     XHATCH_FILL,        /* heavy cross hatch fill */
  266.     INTERLEAVE_FILL,    /* interleaving line fill */
  267.     WIDE_DOT_FILL,      /* Widely spaced dot fill */
  268.     CLOSE_DOT_FILL,     /* Closely spaced dot fill */
  269.     USER_FILL       /* user defined fill */
  270. };
  271.  
  272. enum putimage_ops {     /* BitBlt operators for putimage */
  273.     COPY_PUT,       /* MOV */
  274.     XOR_PUT,        /* XOR */
  275.     OR_PUT,         /* OR  */
  276.     AND_PUT,        /* AND */
  277.     NOT_PUT         /* NOT */
  278. };
  279.  
  280. enum text_just {        /* Horizontal and vertical justification
  281.                    for settextjustify */
  282.     LEFT_TEXT   = 0,
  283.     CENTER_TEXT = 1,
  284.     RIGHT_TEXT  = 2,
  285.  
  286.     BOTTOM_TEXT = 0,
  287.      /* CENTER_TEXT = 1,  already defined above */
  288.     TOP_TEXT    = 2
  289. };
  290.  
  291.  
  292. #define MAXCOLORS 15
  293.  
  294. struct palettetype {
  295.     unsigned char size;
  296.     signed char colors[MAXCOLORS+1];
  297. };
  298.  
  299. struct linesettingstype {
  300.     int linestyle;
  301.     unsigned upattern;
  302.     int thickness;
  303. };
  304.  
  305. struct textsettingstype {
  306.     int font;
  307.     int direction;
  308.     int charsize;
  309.     int horiz;
  310.     int vert;
  311. };
  312.  
  313. struct fillsettingstype {
  314.     int pattern;
  315.     int color;
  316. };
  317.  
  318. struct pointtype {
  319.     int x, y;
  320. };
  321.  
  322. struct viewporttype {
  323.     int left, top, right, bottom;
  324.     int clip;
  325. };
  326.  
  327. struct arccoordstype {
  328.     int x, y;
  329.     int xstart, ystart, xend, yend;
  330. };
  331.  
  332. #ifdef __cplusplus
  333. extern "C" {
  334. #endif
  335.  
  336. #if defined(__DPMI16__)
  337. void       _bgilink (void);
  338. #pragma    extref _bgilink
  339. #endif
  340.  
  341. void       far _BGIENTRY arc(int __x, int __y, int __stangle, int __endangle,
  342.                              int __radius);
  343. void       far _BGIENTRY bar(int __left, int __top, int __right, int __bottom);
  344. void       far _BGIENTRY bar3d(int __left, int __top, int __right, int __bottom,
  345.                                int __depth, int __topflag);
  346. void       far _BGIENTRY circle(int __x, int __y, int __radius);
  347. void       far _BGIENTRY cleardevice(void);
  348. void       far _BGIENTRY clearviewport(void);
  349. void       far _BGIENTRY closegraph(void);
  350. void       far _BGIENTRY detectgraph(int far *__graphdriver,int far *__graphmode);
  351. void       far _BGIENTRY drawpoly(int __numpoints, const int far *__polypoints);
  352. void       far _BGIENTRY ellipse(int __x, int __y, int __stangle, int __endangle,
  353.                                  int __xradius, int __yradius);
  354. void       far _BGIENTRY fillellipse( int __x, int __y, int __xradius, int __yradius );
  355. void       far _BGIENTRY fillpoly(int __numpoints, const int far *__polypoints);
  356. void       far _BGIENTRY floodfill(int __x, int __y, int __border);
  357. void       far _BGIENTRY getarccoords(struct arccoordstype far *__arccoords);
  358. void       far _BGIENTRY getaspectratio(int far *__xasp, int far *__yasp);
  359. int        far _BGIENTRY getbkcolor(void);
  360. int        far _BGIENTRY getcolor(void);
  361. struct palettetype far * far _BGIENTRY getdefaultpalette( void );
  362. char *     far _BGIENTRY getdrivername( void );
  363. void       far _BGIENTRY getfillpattern(char far *__pattern);
  364. void       far _BGIENTRY getfillsettings(struct fillsettingstype far *__fillinfo);
  365. int        far _BGIENTRY getgraphmode(void);
  366. void       far _BGIENTRY getimage(int __left, int __top, int __right, int __bottom,
  367.                                   void far *__bitmap);
  368. void       far _BGIENTRY getlinesettings(struct linesettingstype far *__lineinfo);
  369. int        far _BGIENTRY getmaxcolor(void);
  370. int        far _BGIENTRY getmaxmode(void);
  371. int        far _BGIENTRY getmaxx(void);
  372. int        far _BGIENTRY getmaxy(void);
  373. char *     far _BGIENTRY getmodename( int __mode_number );
  374. void       far _BGIENTRY getmoderange(int __graphdriver, int far *__lomode,
  375.                    int far *__himode);
  376. unsigned   far _BGIENTRY getpixel(int __x, int __y);
  377. void       far _BGIENTRY getpalette(struct palettetype far *__palette);
  378. int        far _BGIENTRY getpalettesize( void );
  379. void       far _BGIENTRY gettextsettings(struct textsettingstype far *__texttypeinfo);
  380. void       far _BGIENTRY getviewsettings(struct viewporttype far *__viewport);
  381. int        far _BGIENTRY getx(void);
  382. int        far _BGIENTRY gety(void);
  383. void       far _BGIENTRY graphdefaults(void);
  384. char *     far _BGIENTRY grapherrormsg(int __errorcode);
  385. void       far _BGIENTRY _graphfreemem(void far *__ptr, unsigned __size);
  386. void far * far _BGIENTRY _graphgetmem(unsigned __size);
  387. int        far _BGIENTRY graphresult(void);
  388. unsigned   far _BGIENTRY imagesize(int __left, int __top, int __right, int __bottom);
  389. void       far _BGIENTRY initgraph(int  far *__graphdriver,
  390.                                    int  far *__graphmode,
  391.                                    const char far *__pathtodriver);
  392. int        far _BGIENTRY installuserdriver(const char far *__name,
  393.                                            int huge (*detect)(void));
  394. int        far _BGIENTRY installuserfont(const char far *__name);
  395. void       far _BGIENTRY line(int __x1, int __y1, int __x2, int __y2);
  396. void       far _BGIENTRY linerel(int __dx, int __dy);
  397. void       far _BGIENTRY lineto(int __x, int __y);
  398. void       far _BGIENTRY moverel(int __dx, int __dy);
  399. void       far _BGIENTRY moveto(int __x, int __y);
  400. void       far _BGIENTRY outtext(const char far *__textstring);
  401. void       far _BGIENTRY outtextxy(int __x, int __y, const char far *__textstring);
  402. void       far _BGIENTRY pieslice(int __x, int __y, int __stangle, int __endangle,
  403.                                   int __radius);
  404. void       far _BGIENTRY putimage(int __left, int __top, const void far *__bitmap,
  405.                                   int __op);
  406. void       far _BGIENTRY putpixel(int __x, int __y, int __color);
  407. void       far _BGIENTRY rectangle(int __left, int __top, int __right, int __bottom);
  408. void       far _BGIENTRY restorecrtmode(void);
  409. void       far _BGIENTRY sector(int __X, int __Y, int __StAngle, int __EndAngle,
  410.                                 int __XRadius, int __YRadius);
  411. void       far _BGIENTRY setactivepage(int __page);
  412. void       far _BGIENTRY setallpalette(const struct palettetype far *__palette);
  413. void       far _BGIENTRY setaspectratio(int __xasp, int __yasp);
  414. void       far _BGIENTRY setbkcolor(int __color);
  415. void       far _BGIENTRY setcolor(int __color);
  416. void       far _BGIENTRY setfillpattern(const char far *__upattern, int __color);
  417. void       far _BGIENTRY setfillstyle(int __pattern, int __color);
  418. unsigned   far _BGIENTRY setgraphbufsize(unsigned __bufsize);
  419. void       far _BGIENTRY setgraphmode(int __mode);
  420. void       far _BGIENTRY setlinestyle(int __linestyle, unsigned __upattern,
  421.                                       int __thickness);
  422. void       far _BGIENTRY setpalette(int __colornum, int __color);
  423. void       far _BGIENTRY setrgbpalette(int __colornum,
  424.                                        int __red, int __green, int __blue);
  425. void       far _BGIENTRY settextjustify(int __horiz, int __vert);
  426. void       far _BGIENTRY settextstyle(int __font, int __direction, int __charsize);
  427. void       far _BGIENTRY setusercharsize(int __multx, int __divx,
  428.                                          int __multy, int __divy);
  429. void       far _BGIENTRY setviewport(int __left, int __top, int __right, int __bottom,
  430.                                      int __clip);
  431. void       far _BGIENTRY setvisualpage(int __page);
  432. void       far _BGIENTRY setwritemode( int __mode );
  433. int        far _BGIENTRY textheight(const char far *__textstring);
  434. int        far _BGIENTRY textwidth(const char far *__textstring);
  435.  
  436. /***** graphics drivers *****/
  437.  
  438. int        _BGIENTRY registerbgidriver(void (*driver)(void));
  439.  
  440. #if defined(__DPMI16__) || defined(__DPMI32__)
  441. #define registerfarbgidriver registerbgidriver
  442. #else
  443. int    far _BGIENTRY registerfarbgidriver(void far *__driver);
  444. #endif
  445.  
  446. /* !!        These "functions" are NOT user-callable          !! */
  447. /* !! They are there just so you can link in graphics drivers !! */
  448.  
  449. void           _RTLENTRY CGA_driver(void);
  450. void           _RTLENTRY EGAVGA_driver(void);
  451. void           _RTLENTRY IBM8514_driver(void);
  452. void           _RTLENTRY Herc_driver(void);
  453. void           _RTLENTRY ATT_driver(void);
  454. void           _RTLENTRY PC3270_driver(void);
  455.  
  456. #if defined(__DPMI16__)
  457. void           _RTLENTRY CGA_driver_far(void);
  458. void           _RTLENTRY EGAVGA_driver_far(void);
  459. void           _RTLENTRY IBM8514_driver_far(void);
  460. void           _RTLENTRY Herc_driver_far(void);
  461. void           _RTLENTRY ATT_driver_far(void);
  462. void           _RTLENTRY PC3270_driver_far(void);
  463. #else
  464. extern int far _RTLENTRY CGA_driver_far[];
  465. extern int far _RTLENTRY EGAVGA_driver_far[];
  466. extern int far _RTLENTRY IBM8514_driver_far[];
  467. extern int far _RTLENTRY Herc_driver_far[];
  468. extern int far _RTLENTRY ATT_driver_far[];
  469. extern int far _RTLENTRY PC3270_driver_far[];
  470. #endif
  471.  
  472. /***** graphics fonts *****/
  473.  
  474. int        _BGIENTRY registerbgifont(void (*font)(void));
  475.  
  476. #if defined(__DPMI16__) || defined(__DPMI32__)
  477. #define registerfarbgifont registerbgifont
  478. #else
  479. int    far _BGIENTRY registerfarbgifont(void far *__font);
  480. #endif
  481.  
  482. /* !!   These "functions" are NOT user-callable,   !! */
  483. /* !! they are there just so you can link in fonts !! */
  484.  
  485. void           _RTLENTRY   triplex_font(void);
  486. void           _RTLENTRY     small_font(void);
  487. void           _RTLENTRY sansserif_font(void);
  488. void           _RTLENTRY    gothic_font(void);
  489.  
  490. extern int far _RTLENTRY   triplex_font_far[];
  491. extern int far _RTLENTRY     small_font_far[];
  492. extern int far _RTLENTRY sansserif_font_far[];
  493. extern int far _RTLENTRY    gothic_font_far[];
  494.  
  495. #ifdef __cplusplus
  496. }
  497. #endif
  498.  
  499. #endif
  500.