home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / INC.PAK / GRAPHICS.H < prev    next >
C/C++ Source or Header  |  1995-08-29  |  17KB  |  505 lines

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