home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / program / graphx11 / graphics.hlc < prev    next >
Encoding:
Text File  |  1993-10-23  |  13.3 KB  |  371 lines

  1. /*****************************************************************************/
  2. /*      File    : GRAPHICS.H                                                 */
  3. /*                                                                           */
  4. /*    Purpose    : definitions for Turbo C v2.0 compatible graphics library.  */
  5. /*                This header file is to be used with Lattice C v5.06         */
  6. /*                                                                           */
  7. /*      Author  : Kenneth W. Hartlen                                         */
  8. /*      Address : Box 37, Site 6, RR#3                                       */
  9. /*                Armdale, Nova Scotia                                       */
  10. /*                B3L 4J3 Canada                                             */
  11. /*                                                                           */
  12. /*                Copyright (c) 1992                                         */
  13. /*                                                                           */
  14. /*      Note:   Turbo C v2.0 is a copyrighted product and trademark of         */
  15. /*      ====    Borland International Inc.                     */
  16. /*                                                                           */
  17. /*****************************************************************************/
  18.  
  19. #ifndef __GRAPHX_DEF_                   /* prevent multiple inclusions */
  20. #define __GRAPHX_DEF_
  21.  
  22. /*---------------------------------------------------------------------------*/
  23. /*      Access to Atari ST VDI and AES work areas                            */
  24. #include <vdi.h>
  25. #include <aes.h>
  26.  
  27. extern
  28. short   contrl[],                       /* default of 12 */                     
  29.         intin[],                        /* default of 128 */
  30.         ptsin[],                        /* default of 128 */
  31.         intout[],                       /* default of 128 */
  32.         ptsout[];                       /* default of 128 */
  33.  
  34. extern
  35. short   handle;                         /* workstation handle */
  36.  
  37. extern
  38. short   work_in[],                      /* default of 12 */
  39.         work_out[];                     /* default of 57 */
  40.  
  41. /*---------------------------------------------------------------------------*/
  42. /*      Remainder of header file provides a degree of compatiblity with      */
  43. /*      Borland's Turbo C v2.0 graphics library                              */
  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,       /* general error */
  58.         grIOerror          = -12,
  59.         grInvalidFont      = -13,
  60.         grInvalidFontNum   = -14,
  61.         grInvalidDeviceNum = -15,
  62.     grInvalidFontSize  = -16,
  63.     grNotImplemented   = -17,
  64.         grInvalidVersion   = -18
  65. };
  66.  
  67. enum graphics_drivers {         /* define graphics drivers */
  68.         CURRENT_DRIVER = -1,
  69.         DETECT = 0,                                     /* autodetection */
  70.         CGA, MCGA, EGA, EGA64, EGAMONO, IBM8514,        /*  1 -  6 */
  71.         HERCMONO, ATT400, VGA, PC3270,                  /*  7 - 10 */
  72.         SC1224, SM124,                    /* 11 - 12 */
  73.     TTC1434, TTM194,                /* 13 - 14 */
  74.     UNKNOWN_DRIVER                    /* 15 */
  75. };
  76.  
  77. enum graphics_modes {           /* graphics modes for each driver */
  78.     CGAC0 = 0, CGAC1, CGAC2, CGAC3, CGAHI,
  79.     MCGAC0 = 0, MCGAC1, MCGAC2, MCGAC3, MCGAMED, MCGAHI,
  80.     EGALO = 0, EGAHI,
  81.     EGA64LO = 0, EGA64HI,
  82.     EGAMONOHI = 0,
  83.     IBM8514LO = 0, IBM8514HI,
  84.     HERCMONOHI = 0,
  85.     ATT400C0 = 0, ATT400C1, ATT400C2, ATT400C3, ATT400MED, ATT400HI,
  86.     VGALO = 0, VGAMED, VGAHI,
  87.     PC3270HI = 0,
  88.     SC1224LO = 0, SC1224MED,
  89.     SM124HI = 0,
  90.     TTC1434STLO = 0, TTC1434STMED, TTC1434STHI, TTC1434LO, TTC1434MED,
  91.     TTM194HI = 0,
  92.     UNKNOWN_MODE = 0
  93. };
  94.  
  95. /* undefine GEM colour definitions that conflict with Turbo C */
  96. #undef    BLACK
  97. #undef    BLUE
  98. #undef    GREEN
  99. #undef    CYAN
  100. #undef    RED
  101. #undef    MAGENTA
  102. #undef    YELLOW
  103. #undef    WHITE
  104.  
  105. #ifndef __COLORS            /* prevent multiple inclusions */
  106. #define __COLORS
  107. enum COLORS {
  108.     BLACK,
  109.     BLUE,
  110.     GREEN,
  111.     CYAN,
  112.     RED,
  113.     MAGENTA,
  114.     BROWN,
  115.     LIGHTGRAY,
  116.     DARKGRAY,
  117.     LIGHTBLUE,
  118.     LIGHTGREEN,
  119.     LIGHTCYAN,
  120.     LIGHTRED,
  121.     LIGHTMAGENTA,
  122.     YELLOW,
  123.     WHITE
  124. };
  125. #endif    /* __COLORS */
  126.  
  127. enum CGA_COLORS {
  128.         CGA_LIGHTGREEN          = 1,
  129.         CGA_LIGHTRED            = 2,
  130.         CGA_YELLOW              = 3,
  131.  
  132.         CGA_LIGHTCYAN           = 1,
  133.         CGA_LIGHTMAGENTA        = 2,
  134.         CGA_WHITE               = 3,
  135.  
  136.         CGA_GREEN               = 1,
  137.         CGA_RED                 = 2,
  138.         CGA_BROWN               = 3,
  139.  
  140.         CGA_CYAN                = 1,
  141.         CGA_MAGENTA             = 2,
  142.         CGA_LIGHTGRAY           = 3
  143. };
  144.  
  145. enum EGA_COLORS {
  146.     EGA_BLACK        =  0,
  147.     EGA_BLUE        =  1,
  148.     EGA_GREEN        =  2,
  149.     EGA_CYAN        =  3,
  150.     EGA_RED             =  4,
  151.     EGA_MAGENTA          =  5,
  152.     EGA_BROWN        =  BROWN,
  153.     EGA_LIGHTGRAY         =  7,
  154.     EGA_DARKGRAY         =  DARKGRAY,
  155.     EGA_LIGHTBLUE         =  LIGHTBLUE,
  156.     EGA_LIGHTGREEN         =  LIGHTGREEN,
  157.     EGA_LIGHTCYAN         =  LIGHTCYAN,
  158.     EGA_LIGHTRED         =  LIGHTRED,
  159.     EGA_LIGHTMAGENTA    =  LIGHTMAGENTA,
  160.     EGA_YELLOW        =  YELLOW,
  161.     EGA_WHITE        =  WHITE
  162. };
  163.  
  164. enum line_styles {              /* line styles for get/setlinestyle */
  165.     SOLID_LINE   = 0,
  166.     DOTTED_LINE  = 1,
  167.     CENTER_LINE  = 2,
  168.     DASHED_LINE  = 3,
  169.     USERBIT_LINE = 4    /* user defined line style */
  170. };
  171.  
  172. enum line_widths {              /* line widths for get/setlinestyle */
  173.         NORM_WIDTH  = 1,
  174.         THICK_WIDTH = 3
  175. };
  176.  
  177. enum font_names {
  178.         DEFAULT_FONT    = 0,    /* system font */
  179.         TRIPLEX_FONT    = 1,
  180.         SMALL_FONT      = 2,
  181.         SANS_SERIF_FONT = 3,
  182.         GOTHIC_FONT     = 4    
  183. };
  184.  
  185. #define HORIZ_DIR    0       /* text left to right,   0 degrees */
  186. #define VERT_DIR        1       /* text bottom to top,  90 degrees */
  187.  
  188. #define USER_CHAR_SIZE  0       /* user-defined char size */
  189.  
  190. enum fill_patterns {        /* fill patterns for get/setfillstyle */
  191.     EMPTY_FILL,        /* fills area in background color */
  192.     SOLID_FILL,        /* fills area in solid fill color */
  193.     LINE_FILL,        /* --- fill */
  194.     LTSLASH_FILL,        /* /// fill */
  195.     SLASH_FILL,        /* /// fill with thick lines */
  196.     BKSLASH_FILL,        /* \\\ fill with thick lines */
  197.     LTBKSLASH_FILL,     /* \\\ fill */
  198.     HATCH_FILL,        /* light hatch fill */
  199.     XHATCH_FILL,        /* heavy cross hatch fill */
  200.     INTERLEAVE_FILL,    /* interleaving line fill */
  201.     WIDE_DOT_FILL,        /* Widely spaced dot fill */
  202.     CLOSE_DOT_FILL,     /* Closely spaced dot fill */
  203.     USER_FILL        /* user defined fill */
  204. };
  205.  
  206. enum putimage_ops {             /* BitBlt operators for putimage */
  207.     COPY_PUT,        /* MOV */
  208.     XOR_PUT,        /* XOR */
  209.     OR_PUT,         /* OR  */
  210.     AND_PUT,        /* AND */
  211.     NOT_PUT         /* NOT */
  212. };
  213.  
  214. enum text_just {        /* horizontal and vertical justification
  215.                    for settextjustify */
  216.     LEFT_TEXT    = 0,
  217.     CENTER_TEXT    = 1,
  218.     RIGHT_TEXT    = 2,
  219.  
  220.     BOTTOM_TEXT    = 0,
  221.      /* CENTER_TEXT    = 1,    already defined above */
  222.     TOP_TEXT    = 2
  223. };
  224.  
  225. #define MAXCOLORS 15            /* number of pens */
  226.  
  227. struct palettetype {
  228.         unsigned char size;
  229.     signed char colors[MAXCOLORS+1];
  230. };
  231.  
  232. struct linesettingstype {
  233.         int linestyle;
  234.         unsigned upattern;
  235.         int thickness;
  236. };
  237.  
  238. struct textsettingstype {
  239.         int font;
  240.         int direction;
  241.         int charsize;
  242.         int horiz;
  243.         int vert;
  244. };
  245.  
  246. struct fillsettingstype {
  247.         int pattern;
  248.         int color;
  249. };
  250.  
  251. struct pointtype {
  252.         int x, y;
  253. };
  254.  
  255. struct viewporttype {
  256.         int left, top, right, bottom;
  257.         int clip;
  258. };
  259.  
  260. struct arccoordstype {
  261.         int x, y;
  262.         int xstart, ystart, xend, yend;
  263. };
  264.  
  265. /*****************************************************************************/
  266. /*      Turbo C compatible graphic function prototypes                       */
  267. /*****************************************************************************/
  268. void       far  arc(int x, int y, int stangle, int endangle,
  269.                     int radius);
  270. void       far  bar(int left, int top, int right, int bottom);
  271. void       far  bar3d(int left, int top, int right, int bottom,
  272.                       int depth, int topflag);
  273. void       far  circle(int x, int y, int radius);
  274. void       far  cleardevice(void);
  275. void       far  clearviewport(void);
  276. void       far  closegraph(void);
  277. void       far  detectgraph(int far *graphdriver,int far *graphmode);
  278. void       far  drawpoly(int numpoints, int far *polypoints);
  279. void       far  ellipse(int x, int y, int stangle, int endangle,
  280.                         int xradius, int yradius);
  281. void       far  fillellipse(int x, int y, int xradius, int yradius);
  282. void       far  fillpoly(int numpoints, int far *polypoints);
  283. void       far  floodfill(int x, int y, int border);
  284. void       far  getarccoords(struct arccoordstype far *arccoords);
  285. void       far  getaspectratio(int far *xasp, int far *yasp);
  286. int        far  getbkcolor(void);
  287. int        far  getcolor(void);
  288. struct palettetype * far  getdefaultpalette(void);
  289. char *     far  getdrivername(void);
  290. void       far  getfillpattern(char far *pattern);
  291. void       far  getfillsettings(struct fillsettingstype far *fillinfo);
  292. int        far  getgraphmode(void);
  293. void       far  getimage(int left, int top, int right, int bottom,
  294.                          void far *bitmap);
  295. void       far  getlinesettings(struct linesettingstype far *lineinfo);
  296. int        far  getmaxcolor(void);
  297. int        far  getmaxmode(void);
  298. int        far  getmaxx(void);
  299. int        far  getmaxy(void);
  300. char *     far  getmodename(int mode_number);
  301. void       far  getmoderange(int graphdriver, int far *lomode,
  302.                              int far *himode);
  303. void       far  getpalette(struct palettetype far *palette);
  304. int        far  getpalettesize(void);
  305. unsigned   far  getpixel(int x, int y);
  306. void       far  gettextsettings(struct textsettingstype far *texttypeinfo);
  307. void       far  getviewsettings(struct viewporttype far *viewport);
  308. int        far  getx(void);
  309. int        far  gety(void);
  310. void       far  graphdefaults(void);
  311. char *     far  grapherrormsg(int errorcode);
  312. int        far  graphresult(void);
  313. unsigned   far  imagesize(int left, int top, int right, int bottom);
  314. void       far  initgraph(int  far *graphdriver, int  far *graphmode,
  315.                           char far *pathtodriver);
  316. void       far  line(int x1, int y1, int x2, int y2);
  317. void       far  linerel(int dx, int dy);
  318. void       far  lineto(int x, int y);
  319. void       far  moverel(int dx, int dy);
  320. void       far  moveto(int x, int y);
  321. void       far  outtext(char far *textstring);
  322. void       far  outtextxy(int x, int y, char far *textstring);
  323. void       far  pieslice(int x, int y, int stangle, int endangle,
  324.                          int radius);
  325. void       far  putimage(int left, int top, void far *bitmap, int op);
  326. void       far  putpixel(int x, int y, int color);
  327. void       far  rectangle(int left, int top, int right, int bottom);
  328. void       far  restorecrtmode(void);
  329. void       far  sector(int x, int y, int stangle, int endangle,
  330.                        int xradius, int yradius );
  331. void       far  setactivepage(int page);
  332. void       far  setallpalette(struct palettetype far *palette);
  333. void       far  setbkcolor(int color);
  334. void       far  setcolor(int color);
  335. void       far  setfillpattern(char far *upattern, int color);
  336. void       far  setfillstyle(int pattern, int color);
  337. void       far  setgraphmode(int mode);
  338. void       far  setlinestyle(int linestyle, unsigned upattern,
  339.                              int thickness);
  340. void       far  setpalette(int colornum, int color);
  341. void       far  setrgbpalette(int colornum,
  342.                               int red, int green, int blue);
  343. void       far  settextjustify(int horiz, int vert);
  344. void       far  settextstyle(int font, int direction, int charsize);
  345. void       far  setviewport(int left, int top, int right, int bottom,
  346.                             int clip);
  347. void       far  setvisualpage(int page);
  348. void       far  setwritemode(int mode);
  349. int        far  textheight(char far *textstring);
  350. int        far  textwidth(char far *textstring);
  351.  
  352. /*****************************************************************************/
  353. /*      The following Turbo C graphic functions are not implemented in the   */
  354. /*      Turbo compatible graphics library.                                   */
  355. /*      Functions can be called, but graphresult() reports grNotImplemented. */
  356. /*****************************************************************************/
  357.  
  358. void       far  _graphfreemem(void far *ptr, unsigned size);
  359. void far * far  _graphgetmem(unsigned size);
  360. int        far  installuserdriver(char far *name, int huge (*detect)(void));
  361. int        far  installuserfont(char far *name);
  362. int             registerbgidriver(void (*driver)(void));
  363. int        far  registerfarbgidriver(void far *driver);
  364. int             registerbgifont(void (*font)(void));
  365. int        far  registerfarbgifont(void far *font);
  366. void       far  setaspectratio(int xasp, int yasp);
  367. unsigned   far  setgraphbufsize(unsigned bufsize);
  368. void       far  setusercharsize(int multx, int divx, int multy, int divy);
  369.  
  370. #endif    /* __GRAPHX_DEF_ */
  371.