home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c060 / 5.ddi / GRAPHICS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-08-29  |  12.0 KB  |  377 lines

  1. /*    graphics.h
  2.  
  3.     Definitions for Graphics Package.
  4.  
  5.     Copyright (c) Borland International 1987,1988
  6.     All Rights Reserved.
  7. */
  8.  
  9. #if __STDC__
  10. #define _Cdecl
  11. #else
  12. #define _Cdecl    cdecl
  13. #endif
  14.  
  15. #if     !defined(__GRAPHX_DEF_)
  16. #define __GRAPHX_DEF_
  17.  
  18. enum graphics_errors {        /* graphresult error return codes */
  19.     grOk           =   0,
  20.     grNoInitGraph       =  -1,
  21.     grNotDetected       =  -2,
  22.     grFileNotFound       =  -3,
  23.     grInvalidDriver    =  -4,
  24.     grNoLoadMem       =  -5,
  25.     grNoScanMem       =  -6,
  26.     grNoFloodMem       =  -7,
  27.     grFontNotFound       =  -8,
  28.     grNoFontMem       =  -9,
  29.     grInvalidMode       = -10,
  30.     grError        = -11,   /* generic error */
  31.     grIOerror       = -12,
  32.     grInvalidFont       = -13,
  33.     grInvalidFontNum   = -14,
  34.     grInvalidVersion   = -18
  35. };
  36.  
  37. enum graphics_drivers {     /* define graphics drivers */
  38.     DETECT,         /* requests autodetection */
  39.     CGA, MCGA, EGA, EGA64, EGAMONO, IBM8514,    /* 1 - 6 */
  40.     HERCMONO, ATT400, VGA, PC3270,            /* 7 - 10 */
  41.     CURRENT_DRIVER = -1
  42. };
  43.  
  44. enum graphics_modes {        /* graphics modes for each driver */
  45.     CGAC0      = 0,  /* 320x200 palette 0; 1 page    */
  46.     CGAC1      = 1,  /* 320x200 palette 1; 1 page    */
  47.     CGAC2      = 2,  /* 320x200 palette 2: 1 page    */
  48.     CGAC3      = 3,  /* 320x200 palette 3; 1 page    */
  49.     CGAHI      = 4,  /* 640x200 1 page            */
  50.     MCGAC0     = 0,  /* 320x200 palette 0; 1 page    */
  51.     MCGAC1     = 1,  /* 320x200 palette 1; 1 page    */
  52.     MCGAC2     = 2,  /* 320x200 palette 2; 1 page    */
  53.     MCGAC3     = 3,  /* 320x200 palette 3; 1 page    */
  54.     MCGAMED    = 4,  /* 640x200 1 page            */
  55.     MCGAHI     = 5,  /* 640x480 1 page            */
  56.     EGALO      = 0,  /* 640x200 16 color 4 pages    */
  57.     EGAHI      = 1,  /* 640x350 16 color 2 pages    */
  58.     EGA64LO    = 0,  /* 640x200 16 color 1 page     */
  59.     EGA64HI    = 1,  /* 640x350 4 color  1 page     */
  60.     EGAMONOHI  = 0,  /* 640x350 64K on card, 1 page - 256K on card, 4 pages */
  61.     HERCMONOHI = 0,  /* 720x348 2 pages         */
  62.     ATT400C0   = 0,  /* 320x200 palette 0; 1 page    */
  63.     ATT400C1   = 1,  /* 320x200 palette 1; 1 page    */
  64.     ATT400C2   = 2,  /* 320x200 palette 2; 1 page    */
  65.     ATT400C3   = 3,  /* 320x200 palette 3; 1 page    */
  66.     ATT400MED  = 4,  /* 640x200 1 page            */
  67.     ATT400HI   = 5,  /* 640x400 1 page            */
  68.     VGALO      = 0,  /* 640x200 16 color 4 pages    */
  69.     VGAMED     = 1,  /* 640x350 16 color 2 pages    */
  70.     VGAHI      = 2,  /* 640x480 16 color 1 page     */
  71.     PC3270HI   = 0,  /* 720x350 1 page            */
  72.     IBM8514LO  = 0,  /* 640x480 256 colors        */
  73.     IBM8514HI  = 1   /*1024x768 256 colors        */
  74. };
  75.  
  76. /* Colors for setpalette and setallpalette */
  77.  
  78. #if    !defined(__COLORS)
  79. #define __COLORS
  80.  
  81. enum COLORS {
  82.     BLACK,            /* dark colors */
  83.     BLUE,
  84.     GREEN,
  85.     CYAN,
  86.     RED,
  87.     MAGENTA,
  88.     BROWN,
  89.     LIGHTGRAY,
  90.     DARKGRAY,            /* light colors */
  91.     LIGHTBLUE,
  92.     LIGHTGREEN,
  93.     LIGHTCYAN,
  94.     LIGHTRED,
  95.     LIGHTMAGENTA,
  96.     YELLOW,
  97.     WHITE
  98. };
  99. #endif
  100.  
  101. enum CGA_COLORS {
  102.     CGA_LIGHTGREEN     = 1,        /* Palette C0 Color Names    */
  103.     CGA_LIGHTRED       = 2,
  104.     CGA_YELLOW           = 3,
  105.  
  106.     CGA_LIGHTCYAN      = 1,        /* Palette C1 Color Names    */
  107.     CGA_LIGHTMAGENTA   = 2,
  108.     CGA_WHITE           = 3,
  109.  
  110.     CGA_GREEN           = 1,        /* Palette C2 Color Names    */
  111.     CGA_RED           = 2,
  112.     CGA_BROWN           = 3,
  113.  
  114.     CGA_CYAN           = 1,        /* Palette C3 Color Names    */
  115.     CGA_MAGENTA        = 2,
  116.     CGA_LIGHTGRAY      = 3
  117. };
  118.  
  119.  
  120. enum EGA_COLORS {
  121.     EGA_BLACK         =  0,        /* dark colors */
  122.     EGA_BLUE         =  1,
  123.     EGA_GREEN         =  2,
  124.     EGA_CYAN         =  3,
  125.     EGA_RED         =  4,
  126.     EGA_MAGENTA      =  5,
  127.     EGA_BROWN         =  20,
  128.     EGA_LIGHTGRAY     =  7,
  129.     EGA_DARKGRAY     =  56,     /* light colors */
  130.     EGA_LIGHTBLUE     =  57,
  131.     EGA_LIGHTGREEN     =  58,
  132.     EGA_LIGHTCYAN     =  59,
  133.     EGA_LIGHTRED     =  60,
  134.     EGA_LIGHTMAGENTA     =  61,
  135.     EGA_YELLOW         =  62,
  136.     EGA_WHITE         =  63
  137. };
  138.  
  139. enum line_styles {        /* Line styles for get/setlinestyle */
  140.     SOLID_LINE   = 0,
  141.     DOTTED_LINE  = 1,
  142.     CENTER_LINE  = 2,
  143.     DASHED_LINE  = 3,
  144.     USERBIT_LINE = 4,    /* User defined line style */
  145. };
  146.  
  147. enum line_widths {        /* Line widths for get/setlinestyle */
  148.     NORM_WIDTH  = 1,
  149.     THICK_WIDTH = 3,
  150. };
  151.  
  152. enum font_names {
  153.     DEFAULT_FONT    = 0,    /* 8x8 bit mapped font */
  154.     TRIPLEX_FONT    = 1,    /* "Stroked" fonts */
  155.     SMALL_FONT    = 2,
  156.     SANS_SERIF_FONT = 3,
  157.     GOTHIC_FONT    = 4
  158. };
  159.  
  160. #define HORIZ_DIR    0    /* left to right */
  161. #define VERT_DIR    1    /* bottom to top */
  162.  
  163. #define USER_CHAR_SIZE    0    /* user-defined char size */
  164.  
  165. enum fill_patterns {        /* Fill patterns for get/setfillstyle */
  166.     EMPTY_FILL,        /* fills area in background color */
  167.     SOLID_FILL,        /* fills area in solid fill color */
  168.     LINE_FILL,        /* --- fill */
  169.     LTSLASH_FILL,        /* /// fill */
  170.     SLASH_FILL,        /* /// fill with thick lines */
  171.     BKSLASH_FILL,        /* \\\ fill with thick lines */
  172.     LTBKSLASH_FILL,     /* \\\ fill */
  173.     HATCH_FILL,        /* light hatch fill */
  174.     XHATCH_FILL,        /* heavy cross hatch fill */
  175.     INTERLEAVE_FILL,    /* interleaving line fill */
  176.     WIDE_DOT_FILL,        /* Widely spaced dot fill */
  177.     CLOSE_DOT_FILL,     /* Closely spaced dot fill */
  178.     USER_FILL        /* user defined fill */
  179. };
  180.  
  181. enum putimage_ops {        /* BitBlt operators for putimage */
  182.     COPY_PUT,        /* MOV */
  183.     XOR_PUT,        /* XOR */
  184.     OR_PUT,         /* OR  */
  185.     AND_PUT,        /* AND */
  186.     NOT_PUT         /* NOT */
  187. };
  188.  
  189. enum text_just {        /* Horizontal and vertical justification
  190.                    for settextjustify */
  191.     LEFT_TEXT    = 0,
  192.     CENTER_TEXT    = 1,
  193.     RIGHT_TEXT    = 2,
  194.  
  195.     BOTTOM_TEXT    = 0,
  196.      /* CENTER_TEXT    = 1,  already defined above */
  197.     TOP_TEXT    = 2
  198. };
  199.  
  200.  
  201. #define MAXCOLORS 15
  202.  
  203. struct palettetype {
  204.     unsigned char size;
  205.     signed char colors[MAXCOLORS+1];
  206. };
  207.  
  208. struct linesettingstype {
  209.     int linestyle;
  210.     unsigned upattern;
  211.     int thickness;
  212. };
  213.  
  214. struct textsettingstype {
  215.     int font;
  216.     int direction;
  217.     int charsize;
  218.     int horiz;
  219.     int vert;
  220. };
  221.  
  222. struct fillsettingstype {
  223.     int pattern;
  224.     int color;
  225. };
  226.  
  227. struct pointtype {
  228.     int x, y;
  229. };
  230.  
  231. struct viewporttype {
  232.     int left, top, right, bottom;
  233.     int clip;
  234. };
  235.  
  236. struct arccoordstype {
  237.     int x, y;
  238.     int xstart, ystart, xend, yend;
  239. };
  240.  
  241. void       far _Cdecl arc(int x, int y, int stangle, int endangle,
  242.               int radius);
  243. void       far _Cdecl bar(int left, int top, int right, int bottom);
  244. void       far _Cdecl bar3d(int left, int top, int right, int bottom,
  245.                 int depth, int topflag);
  246. void       far _Cdecl circle(int x, int y, int radius);
  247. void       far _Cdecl cleardevice(void);
  248. void       far _Cdecl clearviewport(void);
  249. void       far _Cdecl closegraph(void);
  250. void       far _Cdecl detectgraph(int far *graphdriver,int far *graphmode);
  251. void       far _Cdecl drawpoly(int numpoints, int far *polypoints);
  252. void       far _Cdecl ellipse(int x, int y, int stangle, int endangle,
  253.                   int xradius, int yradius);
  254. void       far _Cdecl fillellipse( int x, int y, int xradius, int yradius );
  255. void       far _Cdecl fillpoly(int numpoints, int far *polypoints);
  256. void       far _Cdecl floodfill(int x, int y, int border);
  257. void       far _Cdecl getarccoords(struct arccoordstype far *arccoords);
  258. void       far _Cdecl getaspectratio(int far *xasp, int far *yasp);
  259. int       far _Cdecl getbkcolor(void);
  260. int       far _Cdecl getcolor(void);
  261. struct palettetype * far _Cdecl getdefaultpalette( void );
  262. char *       far _Cdecl getdrivername( void );
  263. void       far _Cdecl getfillpattern(char far *pattern);
  264. void       far _Cdecl getfillsettings(struct fillsettingstype far *fillinfo);
  265. int       far _Cdecl getgraphmode(void);
  266. void       far _Cdecl getimage(int left, int top, int right, int bottom,
  267.                    void far *bitmap);
  268. void       far _Cdecl getlinesettings(struct linesettingstype far *lineinfo);
  269. int       far _Cdecl getmaxcolor(void);
  270. int       far _Cdecl getmaxmode(void);
  271. int       far _Cdecl getmaxx(void);
  272. int       far _Cdecl getmaxy(void);
  273. char *       far _Cdecl getmodename( int mode_number );
  274. void       far _Cdecl getmoderange(int graphdriver, int far *lomode,
  275.                    int far *himode);
  276. unsigned   far _Cdecl getpixel(int x, int y);
  277. void       far _Cdecl getpalette(struct palettetype far *palette);
  278. int       far _Cdecl getpalettesize( void );
  279. void       far _Cdecl gettextsettings(struct textsettingstype far *texttypeinfo);
  280. void       far _Cdecl getviewsettings(struct viewporttype far *viewport);
  281. int       far _Cdecl getx(void);
  282. int       far _Cdecl gety(void);
  283. void       far _Cdecl graphdefaults(void);
  284. char *       far _Cdecl grapherrormsg(int errorcode);
  285. void       far _Cdecl _graphfreemem(void far *ptr, unsigned size);
  286. void far * far _Cdecl _graphgetmem(unsigned size);
  287. int       far _Cdecl graphresult(void);
  288. unsigned   far _Cdecl imagesize(int left, int top, int right, int bottom);
  289. void       far _Cdecl initgraph(int  far *graphdriver,
  290.                 int  far *graphmode,
  291.                 char far *pathtodriver);
  292. int       far _Cdecl installuserdriver( char far *name, int huge (*detect)(void) );
  293. int       far _Cdecl installuserfont( char far *name );
  294. void       far _Cdecl line(int x1, int y1, int x2, int y2);
  295. void       far _Cdecl linerel(int dx, int dy);
  296. void       far _Cdecl lineto(int x, int y);
  297. void       far _Cdecl moverel(int dx, int dy);
  298. void       far _Cdecl moveto(int x, int y);
  299. void       far _Cdecl outtext(char far *textstring);
  300. void       far _Cdecl outtextxy(int x, int y, char far *textstring);
  301. void       far _Cdecl pieslice(int x, int y, int stangle, int endangle,
  302.                    int radius);
  303. void       far _Cdecl putimage(int left, int top, void far *bitmap, int op);
  304. void       far _Cdecl putpixel(int x, int y, int color);
  305. void       far _Cdecl rectangle(int left, int top, int right, int bottom);
  306. void       far _Cdecl restorecrtmode(void);
  307. void       far _Cdecl sector( int X, int Y, int StAngle, int EndAngle,
  308.                   int XRadius, int YRadius );
  309. void       far _Cdecl setactivepage(int page);
  310. void       far _Cdecl setallpalette(struct palettetype far *palette);
  311. void       far _Cdecl setaspectratio( int xasp, int yasp );
  312. void       far _Cdecl setbkcolor(int color);
  313. void       far _Cdecl setcolor(int color);
  314. void       far _Cdecl setfillpattern(char far *upattern, int color);
  315. void       far _Cdecl setfillstyle(int pattern, int color);
  316. unsigned   far _Cdecl setgraphbufsize(unsigned bufsize);
  317. void       far _Cdecl setgraphmode(int mode);
  318. void       far _Cdecl setlinestyle(int linestyle, unsigned upattern,
  319.                    int thickness);
  320. void       far _Cdecl setpalette(int colornum, int color);
  321. void       far _Cdecl setrgbpalette(int colornum,
  322.                     int red, int green, int blue);
  323. void       far _Cdecl settextjustify(int horiz, int vert);
  324. void       far _Cdecl settextstyle(int font, int direction, int charsize);
  325. void       far _Cdecl setusercharsize(int multx, int divx,
  326.                       int multy, int divy);
  327. void       far _Cdecl setviewport(int left, int top, int right, int bottom,
  328.                   int clip);
  329. void       far _Cdecl setvisualpage(int page);
  330. void       far _Cdecl setwritemode( int mode );
  331. int       far _Cdecl textheight(char far *textstring);
  332. int       far _Cdecl textwidth(char far *textstring);
  333.  
  334. /***** graphics drivers *****/
  335.  
  336. int           _Cdecl registerbgidriver(void (*driver)(void));
  337. int       far _Cdecl registerfarbgidriver(void far *driver);
  338.  
  339. /* !!         These "functions" are NOT user-callable          !! */
  340. /* !! They are there just so you can link in graphics drivers !! */
  341.  
  342. void           _Cdecl CGA_driver(void);
  343. void           _Cdecl EGAVGA_driver(void);
  344. void           _Cdecl IBM8514_driver(void);
  345. void           _Cdecl Herc_driver(void);
  346. void           _Cdecl ATT_driver(void);
  347. void           _Cdecl PC3270_driver(void);
  348.  
  349. extern int far _Cdecl CGA_driver_far[];
  350. extern int far _Cdecl EGAVGA_driver_far[];
  351. extern int far _Cdecl IBM8514_driver_far[];
  352. extern int far _Cdecl Herc_driver_far[];
  353. extern int far _Cdecl ATT_driver_far[];
  354. extern int far _Cdecl PC3270_driver_far[];
  355.  
  356.  
  357. /***** graphics fonts *****/
  358.  
  359. int           _Cdecl registerbgifont(void (*font)(void));
  360. int       far _Cdecl registerfarbgifont(void far *font);
  361.  
  362. /* !!    These "functions" are NOT user-callable,   !! */
  363. /* !! they are there just so you can link in fonts !! */
  364.  
  365. void           _Cdecl    triplex_font(void);
  366. void           _Cdecl      small_font(void);
  367. void           _Cdecl sansserif_font(void);
  368. void           _Cdecl     gothic_font(void);
  369.  
  370. extern int far _Cdecl    triplex_font_far[];
  371. extern int far _Cdecl      small_font_far[];
  372. extern int far _Cdecl sansserif_font_far[];
  373. extern int far _Cdecl     gothic_font_far[];
  374.  
  375.  
  376. #endif
  377.