home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Languages / Quick C 2.0 / INCLUDE / GRAPH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-12-13  |  13.2 KB  |  413 lines

  1.  
  2. /***
  3. *graph.h - declare constants, functions, and macros for graphics library
  4. *
  5. *   Copyright (c) 1987 - 1989, Microsoft Corporation. All rights reserved.
  6. *
  7. *Purpose:
  8. *   This file declares the graphics library functions and the
  9. *   structures and manifest constants that are used with them.
  10. *
  11. ***************************************************************************/
  12.  
  13.  
  14. /* user-visible declarations for Quick-C Graphics Library */
  15.  
  16. #ifndef _VIDEOCONFIG_DEFINED
  17. /* structure for _getvideoconfig() as visible to user */
  18. struct videoconfig {
  19.     short numxpixels;    /* number of pixels on X axis */
  20.     short numypixels;    /* number of pixels on Y axis */
  21.     short numtextcols;    /* number of text columns available */
  22.     short numtextrows;    /* number of text rows available */
  23.     short numcolors;    /* number of actual colors */
  24.     short bitsperpixel;    /* number of bits per pixel */
  25.     short numvideopages;    /* number of available video pages */
  26.     short mode;        /* current video mode */
  27.     short adapter;        /* active display adapter */
  28.     short monitor;        /* active display monitor */
  29.     short memory;        /* adapter video memory in K bytes */
  30. };
  31. #define _VIDEOCONFIG_DEFINED
  32. #endif
  33.  
  34.  
  35. #ifndef _XYCOORD_DEFINED
  36. /* return value of _setvieworg(), etc. */
  37. struct xycoord {
  38.     short xcoord;
  39.     short ycoord;
  40. };
  41. #define _XYCOORD_DEFINED
  42. #endif
  43.  
  44.  
  45. /* structure for text position */
  46. #ifndef _RCCOORD_DEFINED
  47. struct rccoord {
  48.     short row;
  49.     short col;
  50. };
  51. #define _RCCOORD_DEFINED
  52. #endif
  53.  
  54.  
  55. #ifndef NO_EXT_KEYS /* extensions enabled */
  56.     #define _CDECL    cdecl
  57.     #define _FAR    far
  58. #else /* extensions not enabled */
  59.     #ifdef M_I86LM /* large model */
  60.     #define _CDECL
  61.     #define _FAR
  62.     #else
  63.     #error -Za requires -AL when using graph.h
  64.     #endif /* M_I86LM */
  65. #endif /* NO_EXT_KEYS */
  66.  
  67.  
  68. /* SETUP AND CONFIGURATION */
  69.  
  70. short _FAR _CDECL _setvideomode(short);
  71. short _FAR _CDECL _setvideomoderows(short,short); /* return rows; 0 if error */
  72.  
  73. /* arguments to _setvideomode() */
  74. #define _DEFAULTMODE    -1    /* restore screen to original mode */
  75. #define _TEXTBW40    0    /* 40-column text, 16 grey */
  76. #define _TEXTC40    1    /* 40-column text, 16/8 color */
  77. #define _TEXTBW80    2    /* 80-column text, 16 grey */
  78. #define _TEXTC80    3    /* 80-column text, 16/8 color */
  79. #define _MRES4COLOR    4    /* 320 x 200, 4 color */
  80. #define _MRESNOCOLOR    5    /* 320 x 200, 4 grey */
  81. #define _HRESBW        6    /* 640 x 200, BW */
  82. #define _TEXTMONO    7    /* 80-column text, BW */
  83. #define _HERCMONO    8    /* 720 x 348, BW for HGC */
  84. #define _MRES16COLOR    13    /* 320 x 200, 16 color */
  85. #define _HRES16COLOR    14    /* 640 x 200, 16 color */
  86. #define _ERESNOCOLOR    15    /* 640 x 350, BW */
  87. #define _ERESCOLOR    16    /* 640 x 350, 4 or 16 color */
  88. #define _VRES2COLOR    17    /* 640 x 480, BW */
  89. #define _VRES16COLOR    18    /* 640 x 480, 16 color */
  90. #define _MRES256COLOR    19    /* 320 x 200, 256 color */
  91. #define _ORESCOLOR    64    /* 640 x 400, 1 of 16 colors (Olivetti) */
  92.  
  93. short _FAR _CDECL _setactivepage(short);
  94. short _FAR _CDECL _setvisualpage(short);
  95. short _FAR _CDECL _getactivepage(void);
  96. short _FAR _CDECL _getvisualpage(void);
  97.  
  98. /* videoconfig adapter values */
  99. /* these manifest constants can be used to determine the type of the active  */
  100. /* adapter, using either simple comparisons or the bitwise-AND operator (&)  */
  101. #define _MDPA        0x0001    /* Monochrome Display Adapter          (MDPA) */
  102. #define _CGA        0x0002    /* Color Graphics Adapter          (CGA)  */
  103. #define _EGA        0x0004    /* Enhanced Graphics Adapter          (EGA)  */
  104. #define _VGA        0x0008    /* Video Graphics Array              (VGA)  */
  105. #define _MCGA        0x0010    /* MultiColor Graphics Array          (MCGA) */
  106. #define _HGC        0x0020    /* Hercules Graphics Card          (HGC)  */
  107. #define _OCGA        0x0042    /* Olivetti Color Graphics Adapter    (OCGA) */
  108. #define _OEGA        0x0044    /* Olivetti Enhanced Graphics Adapter (OEGA) */
  109. #define _OVGA        0x0048    /* Olivetti Video Graphics Array      (OVGA) */
  110.  
  111. /* videoconfig monitor values */
  112. /* these manifest constants can be used to determine the type of monitor in */
  113. /* use, using either simple comparisons or the bitwise-AND operator (&) */
  114. #define _MONO        0x0001    /* Monochrome */
  115. #define _COLOR        0x0002    /* Color (or Enhanced emulating color) */
  116. #define _ENHCOLOR    0x0004    /* Enhanced Color */
  117. #define _ANALOGMONO    0x0008    /* Analog Monochrome only */
  118. #define _ANALOGCOLOR    0x0010    /* Analog Color only */
  119. #define _ANALOG        0x0018    /* Analog Monochrome and Color modes */
  120.  
  121. struct videoconfig _FAR * _FAR _CDECL _getvideoconfig(struct videoconfig _FAR *);
  122.  
  123.  
  124.  
  125. /* COORDINATE SYSTEMS */
  126.  
  127. struct xycoord _FAR _CDECL _setvieworg(short, short);
  128. struct xycoord _FAR _CDECL _setlogorg(short, short); /* obsolescent */
  129.  
  130. struct xycoord _FAR _CDECL _getviewcoord(short, short);
  131. struct xycoord _FAR _CDECL _getlogcoord(short, short); /* obsolescent */
  132.  
  133. struct xycoord _FAR _CDECL _getphyscoord(short, short);
  134.  
  135. void _FAR _CDECL _setcliprgn(short, short, short, short);
  136. void _FAR _CDECL _setviewport(short, short, short, short);
  137.  
  138.  
  139. /* OUTPUT ROUTINES */
  140.  
  141. /* control parameters for Rectangle, Ellipse and Pie */
  142. #define _GBORDER    2    /* draw outline only */
  143. #define _GFILLINTERIOR    3    /* fill using current fill mask */
  144.  
  145. #define _GCLEARSCREEN    0
  146. #define _GVIEWPORT    1
  147. #define _GWINDOW    2
  148.  
  149. void _FAR _CDECL _clearscreen(short);
  150.  
  151. struct xycoord _FAR _CDECL _moveto(short, short);
  152. struct xycoord _FAR _CDECL _getcurrentposition(void);
  153.  
  154. short _FAR _CDECL _lineto(short, short);
  155. short _FAR _CDECL _rectangle(short, short, short, short, short);
  156. short _FAR _CDECL _ellipse(short, short, short, short, short);
  157. short _FAR _CDECL _arc(short, short, short, short, short, short, short, short);
  158. short _FAR _CDECL _pie(short, short, short, short, short, short, short, short, short);
  159.  
  160. short _FAR _CDECL _setpixel(short, short);
  161. short _FAR _CDECL _getpixel(short, short);
  162. short _FAR _CDECL _floodfill(short, short, short);
  163.  
  164.  
  165. /* PEN COLOR, LINE STYLE, FILL PATTERN */
  166.  
  167. short _FAR _CDECL _setcolor(short);
  168. short _FAR _CDECL _getcolor(void);
  169.  
  170. void _FAR _CDECL _setlinestyle(unsigned short);
  171. unsigned short _FAR _CDECL _getlinestyle(void);
  172.  
  173. void _FAR _CDECL _setfillmask(unsigned char _FAR *);
  174. unsigned char _FAR * _FAR _CDECL _getfillmask(unsigned char _FAR *);
  175.  
  176. /* COLOR SELECTION */
  177.  
  178. long _FAR _CDECL _setbkcolor(long);
  179. long _FAR _CDECL _getbkcolor(void);
  180.  
  181. long _FAR _CDECL _remappalette(short, long);
  182. short _FAR _CDECL _remapallpalette(long _FAR *);
  183. short _FAR _CDECL _selectpalette(short);
  184.  
  185.  
  186. /* TEXT */
  187. #define _GCURSOROFF    0
  188. #define _GCURSORON    1
  189.  
  190. #define _GWRAPOFF    0
  191. #define _GWRAPON    1
  192.  
  193. short _FAR _CDECL _settextrows(short); /* returns # rows set; 0 if error */
  194. void _FAR _CDECL _settextwindow(short, short, short, short);
  195. void _FAR _CDECL _outtext(unsigned char _FAR *);
  196. short _FAR _CDECL _wrapon(short);
  197.  
  198. short _FAR _CDECL _displaycursor(short);
  199. short _FAR _CDECL _settextcursor(short);
  200. short _FAR _CDECL _gettextcursor(void);
  201.  
  202. struct rccoord _FAR _CDECL _settextposition(short, short);
  203. struct rccoord _FAR _CDECL _gettextposition(void);
  204.  
  205. short _FAR _CDECL _settextcolor(short);
  206. short _FAR _CDECL _gettextcolor(void);
  207.  
  208.  
  209. /* SCREEN IMAGES */
  210.  
  211. void _FAR _CDECL _getimage(short, short, short, short, char _FAR *);
  212. void _FAR _CDECL _putimage(short, short, char _FAR *, short);
  213. long _FAR _CDECL _imagesize(short, short, short, short);
  214.  
  215. /* "action verbs" for _putimage() */
  216. #define _GPSET        3
  217. #define _GPRESET    2
  218. #define _GAND        1
  219. #define _GOR        0
  220. #define _GXOR        4
  221.  
  222. /* universal color values: */
  223. #define _BLACK        0x000000L
  224. #define _BLUE        0x2a0000L
  225. #define _GREEN        0x002a00L
  226. #define _CYAN        0x2a2a00L
  227. #define _RED        0x00002aL
  228. #define _MAGENTA    0x2a002aL
  229. #define _BROWN        0x00152aL
  230. #define _WHITE        0x2a2a2aL
  231. #define _GRAY        0x151515L
  232. #define _LIGHTBLUE    0x3F1515L
  233. #define _LIGHTGREEN    0x153f15L
  234. #define _LIGHTCYAN    0x3f3f15L
  235. #define _LIGHTRED    0x15153fL
  236. #define _LIGHTMAGENTA    0x3f153fL
  237. #define _LIGHTYELLOW    0x153f3fL
  238. #define _BRIGHTWHITE    0x3f3f3fL
  239.  
  240. /* mono mode F color values: */
  241. #define _MODEFOFF    0L
  242. #define _MODEFOFFTOON    1L
  243. #define _MODEFOFFTOHI    2L
  244. #define _MODEFONTOOFF    3L
  245. #define _MODEFON    4L
  246. #define _MODEFONTOHI    5L
  247. #define _MODEFHITOOFF    6L
  248. #define _MODEFHITOON    7L
  249. #define _MODEFHI    8L
  250.  
  251. /* mono mode 7 color values: */
  252. #define _MODE7OFF    0L
  253. #define _MODE7ON    1L
  254. #define _MODE7HI    2L
  255.  
  256.  
  257. /* WINDOW COORDINATE SYSTEM */
  258.  
  259. #ifndef _WXYCOORD_DEFINED
  260. /* structure for window coordinate pair */
  261. struct _wxycoord {
  262.     double wx;    /* window x coordinate */
  263.     double wy;    /* window y coordinate */
  264.     };
  265. #define _WXYCOORD_DEFINED
  266. #endif
  267.  
  268.  
  269. /* define real coordinate window - returns non-zero if successful */
  270. short _FAR _CDECL _setwindow(short,double,double,double,double);
  271.  
  272. /* convert from view to window coordinates */
  273. struct _wxycoord _FAR _CDECL _getwindowcoord(short,short);
  274. struct _wxycoord _FAR _CDECL _getwindowcoord_xy(struct xycoord);
  275.  
  276. /* convert from window to view coordinates */
  277. struct xycoord _FAR _CDECL _getviewcoord_w(double,double);
  278. struct xycoord _FAR _CDECL _getviewcoord_wxy(struct _wxycoord _FAR *);
  279.  
  280. /*    return the window coordinates of the current graphics output
  281.     position as an _wxycoord structure. no error return. */
  282. struct _wxycoord _FAR _CDECL _getcurrentposition_w(void);
  283.  
  284.  
  285. /* window coordinate entry points for graphics output routines */
  286.  
  287. #define _arc_wxy(pwxy1, pwxy2, pwxy3, pwxy4) \
  288.     _arc_xy(_getviewcoord_wxy(pwxy1), _getviewcoord_wxy(pwxy2), \
  289.         _getviewcoord_wxy(pwxy3), _getviewcoord_wxy(pwxy4))
  290.  
  291. /*    returns nonzero if successful; otherwise 0    */
  292. short _FAR _CDECL _arc_xy(struct xycoord,struct xycoord,struct xycoord,struct xycoord);
  293.  
  294.  
  295. #define _ellipse_w(control, wx1, wy1, wx2, wy2) _ellipse_xy(control, \
  296.         _getviewcoord_w(wx1,wy1), _getviewcoord_w(wx2,wy2))
  297.  
  298. #define _ellipse_wxy(control, pwxy1, pwxy2) _ellipse_xy(control, \
  299.     _getviewcoord_wxy(pwxy1), _getviewcoord_wxy(pwxy2))
  300.  
  301. /*    returns nonzero if successful; otherwise 0    */
  302. short _FAR _CDECL _ellipse_xy(short,struct xycoord,struct xycoord);
  303.  
  304.  
  305. #define _floodfill_w(wx, wy, boundary) \
  306.     _floodfill_xy(_getviewcoord_w(wx,wy), boundary)
  307.  
  308. /*    returns nonzero if successful; otherwise 0    */
  309. short _FAR _CDECL _floodfill_xy(struct xycoord, short);
  310.  
  311.  
  312. #define _getpixel_w(wx, wy) \
  313.     _getpixel_xy(_getviewcoord_w(wx,wy))
  314.  
  315. /*    returns pixel value at given point; -1 if unsuccessful. */
  316. short _FAR _CDECL _getpixel_xy(struct xycoord);
  317.  
  318.  
  319. #define _lineto_w(wx, wy) \
  320.     _lineto_xy(_getviewcoord_w(wx,wy))
  321.  
  322. /*    returns nonzero if successful; otherwise 0    */
  323. short _FAR _CDECL _lineto_xy(struct xycoord);
  324.  
  325.  
  326. #define _moveto_w(wx, wy) \
  327.     _getwindowcoord_xy(_moveto_xy(_getviewcoord_w(wx,wy)))
  328.  
  329. /*    returns the view coordinates of the previous output
  330.     position as an _xycoord structure. no error return */
  331. struct xycoord _FAR _CDECL _moveto_xy(struct xycoord);
  332.  
  333.  
  334. #define _pie_wxy(control, pwxy1, pwxy2, pwxy3, pwxy4) _pie_xy(control, \
  335.         _getviewcoord_wxy(pwxy1), _getviewcoord_wxy(pwxy2), \
  336.         _getviewcoord_wxy(pwxy3), _getviewcoord_wxy(pwxy4))
  337.  
  338. /*    returns nonzero if successful; otherwise 0    */
  339. short _FAR _CDECL _pie_xy(short,struct xycoord,struct xycoord,struct xycoord,struct xycoord);
  340.  
  341.  
  342. #define _rectangle_w(control, wx1, wy1, wx2, wy2) _rectangle_xy(control, \
  343.         _getviewcoord_w(wx1,wy1), _getviewcoord_w(wx2,wy2))
  344.  
  345. #define _rectangle_wxy(control, pwxy1, pwxy2) _rectangle_xy(control, \
  346.         _getviewcoord_wxy(pwxy1), _getviewcoord_wxy(pwxy2))
  347.  
  348. /*    returns nonzero if successful; otherwise 0    */
  349. short _FAR _CDECL _rectangle_xy(short,struct xycoord,struct xycoord);
  350.  
  351.  
  352. #define _setpixel_w(wx, wy) \
  353.     _setpixel_xy(_getviewcoord_w(wx,wy))
  354.  
  355. /*    returns previous color; -1 if unsuccessful */
  356. short _FAR _CDECL _setpixel_xy(struct xycoord);
  357.  
  358.  
  359. /* window coordinate image routines */
  360. #define _getimage_w( wx1, wy1, wx2, wy2, buffer) \
  361.         _getimage_xy( _getviewcoord_w(wx1,wy1), \
  362.         _getviewcoord_w(wx2,wy2), buffer)
  363.  
  364. #define _getimage_wxy( pwxy1, pwxy2, buffer) \
  365.         _getimage_xy( _getviewcoord_wxy(pwxy1), \
  366.         _getviewcoord_wxy(pwxy2), buffer)
  367.  
  368. /*    no return value */
  369. void _FAR _CDECL _getimage_xy(struct xycoord,struct xycoord, char _FAR *);
  370.  
  371.  
  372. #define _imagesize_w( wx1, wy1, wx2, wy2) _imagesize_xy( \
  373.         _getviewcoord_w(wx1,wy1), _getviewcoord_w(wx2,wy2))
  374.  
  375. #define _imagesize_wxy( pwxy1, pwxy2) _imagesize_xy( \
  376.         _getviewcoord_wxy(pwxy1), _getviewcoord_wxy(pwxy2))
  377.  
  378. /*    returns the image's storage size in bytes */
  379. long _FAR _CDECL _imagesize_xy(struct xycoord,struct xycoord);
  380.  
  381.  
  382. #define _putimage_w(wx, wy, image, action) \
  383.     _putimage_xy(_getviewcoord_w(wx,wy), image, action)
  384.  
  385. /*    no return value */
  386. void _FAR _CDECL _putimage_xy(struct xycoord,char _FAR *,short);
  387.  
  388.  
  389. /* FONTS */
  390.  
  391. #ifndef _FONTINFO_DEFINED
  392. /* structure for _getfontinfo() */
  393. struct _fontinfo {
  394.     int    type;        /* b0 set = vector,clear = bit map    */
  395.     int    ascent;        /* pix dist from top to baseline    */
  396.     int    pixwidth;    /* character width in pixels, 0=prop    */
  397.     int    pixheight;    /* character height in pixels        */
  398.     int    avgwidth;    /* average character width in pixels    */
  399.     char    filename[81];    /* file name including path        */
  400.     char    facename[32];    /* font name                */
  401. };
  402. #define _FONTINFO_DEFINED
  403. #endif
  404.  
  405.  
  406. /* font function prototypes */
  407. short    _FAR _CDECL    _registerfonts( unsigned char _FAR *);
  408. void    _FAR _CDECL    _unregisterfonts( void );
  409. short    _FAR _CDECL    _setfont( unsigned char _FAR * );
  410. short    _FAR _CDECL    _getfontinfo( struct _fontinfo _FAR * );
  411. void    _FAR _CDECL    _outgtext( unsigned char _FAR * );
  412. short    _FAR _CDECL    _getgtextextent( unsigned char _FAR * );
  413.