home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / PGRAPH.ZIP / C.ZIP / PGRAPH.H < prev    next >
C/C++ Source or Header  |  1991-10-13  |  11KB  |  277 lines

  1. /*    pgraph.h
  2.  
  3.     Printer Graphics Package.
  4.  
  5.     Copyright (c) F van der Hulst 1991
  6.     All Rights Reserved.
  7.  
  8.      Revisions:
  9.      27 March 1991: Initial release (Turbo C v2.0 Large model only)
  10.      13 April 1991: Ported to MicroSoft C v5.1
  11.      16 June  1991: Support for all memory models
  12.      26 June  1991: Added _p_getbyte() and _p_putbyte() for model independence
  13. */
  14.  
  15. #if defined(__TURBOC__)
  16. #if defined(TPASCAL)
  17. #define FUNC_TYPE far pascal
  18. #else
  19. #define FUNC_TYPE huge cdecl
  20. #endif
  21. #else
  22. #define FUNC_TYPE far cdecl
  23. #endif
  24.  
  25. #if     !defined(__P_GRAPHX_DEF_)
  26. #define __P_GRAPHX_DEF_
  27.  
  28. #if     !defined(__GRAPHX_DEF_)
  29. enum graphics_errors {        /* graphresult error return codes */
  30.     grOk                   =   0,
  31.     grNoInitGraph       =  -1,
  32.     grNotDetected       =  -2,
  33.     grFileNotFound       =  -3,
  34.     grInvalidDriver   =  -4,
  35.     grNoLoadMem           =  -5,
  36.     grNoScanMem           =  -6,
  37.     grNoFloodMem       =  -7,
  38.     grFontNotFound       =  -8,
  39.     grNoFontMem           =  -9,
  40.     grInvalidMode       = -10,
  41.     grError                = -11,   /* generic error */
  42.     grIOerror           = -12,
  43.     grInvalidFont       = -13,
  44.     grInvalidFontNum  = -14,
  45.     grInvalidVersion  = -18
  46. };
  47.  
  48. enum line_styles {        /* Line styles for get/setlinestyle */
  49.     SOLID_LINE   = 0,
  50.     DOTTED_LINE  = 1,
  51.     CENTER_LINE  = 2,
  52.     DASHED_LINE  = 3,
  53.     USERBIT_LINE = 4,    /* User defined line style */
  54. };
  55.  
  56. enum line_widths {        /* Line widths for get/setlinestyle */
  57.     NORM_WIDTH  = 1,
  58.     THICK_WIDTH = 3,
  59. };
  60.  
  61. enum font_names {
  62.     DEFAULT_FONT        = 0,    /* 8x8 bit mapped font */
  63.     TRIPLEX_FONT        = 1,    /* "Stroked" fonts */
  64.     SMALL_FONT            = 2,
  65.     SANS_SERIF_FONT     = 3,
  66.     GOTHIC_FONT            = 4,
  67.     SCRIPT_FONT         = 5,
  68.     SIMPLEX_FONT        = 6,
  69.     TRI_SCR_FONT        = 7,
  70.     COMPLEX_FONT        = 8,
  71.     EURO_FONT           = 9,
  72.     BOLD_FONT           = 10
  73. };
  74.  
  75. #define HORIZ_DIR    0    /* left to right */
  76. #define VERT_DIR    1    /* bottom to top */
  77.  
  78. #define USER_CHAR_SIZE    0    /* user-defined char size */
  79.  
  80. enum fill_patterns {        /* Fill patterns for get/setfillstyle */
  81.         EMPTY_FILL,            /* fills area in background color */
  82.         SOLID_FILL,            /* fills area in solid fill color */
  83.         LINE_FILL,            /* --- fill */
  84.         LTSLASH_FILL,        /* /// fill */
  85.         SLASH_FILL,            /* /// fill with thick lines */
  86.         BKSLASH_FILL,        /* \\\ fill with thick lines */
  87.         LTBKSLASH_FILL,     /* \\\ fill */
  88.         HATCH_FILL,            /* light hatch fill */
  89.         XHATCH_FILL,        /* heavy cross hatch fill */
  90.         INTERLEAVE_FILL,    /* interleaving line fill */
  91.         WIDE_DOT_FILL,        /* Widely spaced dot fill */
  92.         CLOSE_DOT_FILL,     /* Closely spaced dot fill */
  93.         USER_FILL            /* user defined fill */
  94. };
  95.  
  96. enum putimage_ops {        /* BitBlt operators for putimage */
  97.             COPY_PUT,        /* MOV */
  98.             XOR_PUT,            /* XOR */
  99.             OR_PUT,             /* OR  */
  100.             AND_PUT,            /* AND */
  101.             NOT_PUT             /* NOT */
  102. };
  103.  
  104. enum text_just {        /* Horizontal and vertical justification
  105.                    for settextjustify */
  106.             LEFT_TEXT    = 0,
  107.             CENTER_TEXT    = 1,
  108.             RIGHT_TEXT    = 2,
  109.  
  110.             BOTTOM_TEXT    = 0,
  111.         /* CENTER_TEXT    = 1,  already defined above */
  112.             TOP_TEXT        = 2
  113. };
  114.  
  115.  
  116. struct linesettingstype {
  117.     int linestyle;
  118.     unsigned upattern;
  119.     int thickness;
  120. };
  121.  
  122. struct textsettingstype {
  123.     int font;
  124.     int direction;
  125.     int charsize;
  126.     int horiz;
  127.     int vert;
  128. };
  129.  
  130. struct fillsettingstype {
  131.     int pattern;
  132.     int color;
  133. };
  134.  
  135. struct pointtype {
  136.     int x, y;
  137. };
  138.  
  139. struct viewporttype {
  140.     int left, top, right, bottom;
  141.     int clip;
  142. };
  143.  
  144. struct arccoordstype {
  145.     int x, y;
  146.     int xstart, ystart, xend, yend;
  147. };
  148. #endif
  149.  
  150. enum p_graphics_drivers {     /* define graphics drivers */
  151.     STAR = 1,
  152.     LASERJET,
  153.     LX400,
  154.     USER1,
  155.     USER2,
  156. };
  157.  
  158. enum p_graphics_modes {        /* graphics modes for each driver */
  159.      STAR_60_72     = 0,  /* Star NX-10   60 dpi *  72 dpi Normal       */
  160.      STAR_120_216,            /*             120     * 216     Double       */
  161.      STAR_120_108,            /*             120     * 108     Double       */
  162.      STAR_120_72,            /*             120     *  72     Double, fast */
  163.      STAR_240_216,            /*             240     * 216     Quad         */
  164.      STAR_80_72,            /*              80     *  72     CRT graphics */
  165.      STAR_72_72,            /*              72     *  72     Plotter      */
  166.      STAR_90_72,            /*              90     *  72     CRT II         */
  167.      LJ_75_75         = 0,  /* HP LaserJet  75 dpi *  75 dpi */
  168.      LJ_100_100,            /*                   100     * 100       */
  169.      LJ_150_150,            /*                   150     * 150       */
  170.      LJ_300_300,            /*                    300     * 300       */
  171.      LX400_60_72     = 0,  /* Epson LX-400 60 dpi *  72 dpi Normal       */
  172.      LX400_120_216,        /*             120     * 216     Double       */
  173.      LX400_120_108,        /*             120     * 108     Double       */
  174.      LX400_120_72,            /*             120     *  72     Double, fast */
  175.      LX400_240_216,        /*             240     * 216     Quad         */
  176.      LX400_40_72,            /*              40     *  72     CRT graphics */
  177.      LX400_80_72,            /*              80     *  72     Plotter      */
  178.      LX400_90_72,            /*              90     *  72     CRT II         */
  179. };
  180.  
  181. void           FUNC_TYPE  p_arc(int x, int y, int stangle, int endangle, int radius);
  182. void           FUNC_TYPE  p_circle(int x, int y, int radius);
  183. void           FUNC_TYPE  p_drawpoly(int numpoints, int far *polypoints);
  184. void           FUNC_TYPE  p_ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);
  185. void           FUNC_TYPE  p_fillellipse( int x, int y, int xradius, int yradius );
  186. void           FUNC_TYPE  p_fillpoly(int numpoints, int far *polypoints);
  187. void           FUNC_TYPE  p_floodfill(int x, int y, int border);
  188. void           FUNC_TYPE  p_getresolution(int far *xres, int far *yres);
  189. void           FUNC_TYPE  p_getaspectratio(int far *xasp, int far *yasp);
  190. void           FUNC_TYPE  p_setaspectratio(int xasp, int yasp);
  191. int            FUNC_TYPE  p_getmaxx(void);
  192. int            FUNC_TYPE  p_getmaxy(void);
  193. int            FUNC_TYPE  p_getx(void);
  194. int            FUNC_TYPE  p_gety(void);
  195. void           FUNC_TYPE  p_line(int x1, int y1, int x2, int y2);
  196. void           FUNC_TYPE  p_linerel(int dx, int dy);
  197. void           FUNC_TYPE  p_lineto(int x, int y);
  198. void           FUNC_TYPE  p_moverel(int dx, int dy);
  199. void           FUNC_TYPE  p_moveto(int x, int y);
  200. void           FUNC_TYPE  p_putpixel(int x, int y, int colour);
  201. void           FUNC_TYPE  p_rectangle(int left, int top, int right, int bottom);
  202. void           FUNC_TYPE  p_closegraph(void);
  203. int            FUNC_TYPE  p_getmaxcolor(void);
  204. void           FUNC_TYPE  p_setlinestyle(int linestyle, unsigned upattern, int thickness);
  205. void           FUNC_TYPE  p_outtext(char far *textstring);
  206. void           FUNC_TYPE  p_outtextxy(int x, int y, char far *textstring);
  207. void           FUNC_TYPE  p_cleardevice(void);
  208. void           FUNC_TYPE  p_setwritemode(int mode);
  209. void           FUNC_TYPE  p_print(int out_dev);
  210. void           FUNC_TYPE  p_view(void);
  211. void           FUNC_TYPE  p_graphdefaults(void);
  212. int            FUNC_TYPE  p_graphresult(void);
  213. unsigned int   FUNC_TYPE  p_getpixel(int x, int y);
  214. void           FUNC_TYPE  p_setcolor(int color);
  215. int            FUNC_TYPE  p_getcolor(void);
  216. void           FUNC_TYPE  p_bar3d(int left, int top, int right, int bottom, int depth, int topflag);
  217. void           FUNC_TYPE  p_bar(int left, int top, int right, int bottom);
  218. void           FUNC_TYPE  p_settextstyle(int font, int direction, int charsize);
  219. void           FUNC_TYPE  p_settextjustify(int horiz, int vert);
  220. void           FUNC_TYPE  p_gettextsettings(struct textsettingstype far *texttypeinfo);
  221. void           FUNC_TYPE  p_setusercharsize(int multx, int divx, int multy, int divy);
  222. int            FUNC_TYPE  p_textwidth(char far *string);
  223. int            FUNC_TYPE  p_textheight(char far *string);
  224. void           FUNC_TYPE  p_getlinesettings(struct linesettingstype far *linetypeinfo);
  225. void           FUNC_TYPE  p_getfillpattern(char far *pattern);
  226. void           FUNC_TYPE  p_getfillsettings(struct fillsettingstype far *fillinfo);
  227. void           FUNC_TYPE  p_setfillpattern(char far *upattern, int colour);
  228. void           FUNC_TYPE  p_setfillstyle(int pattern, int colour);
  229. void           FUNC_TYPE  p_getimage(int left, int top, int right, int bottom, void far *bitmap);
  230. unsigned int     FUNC_TYPE  p_imagesize(int left, int top, int right, int bottom);
  231. void           FUNC_TYPE  p_putimage(int left, int top, void far *bitmap, int op);
  232. void           FUNC_TYPE  p_pieslice(int x, int y, int stangle, int endangle, int radius);
  233. void           FUNC_TYPE  p_sector( int X, int Y, int StAngle, int EndAngle, int XRadius, int YRadius);
  234. void           FUNC_TYPE  p_clearviewport(void);
  235. int             FUNC_TYPE  p_getgraphmode(void);
  236. int             FUNC_TYPE  p_getmaxmode(void);
  237. void           FUNC_TYPE  p_getmoderange(int graphdriver, int far *lomode, int far *himode);
  238. void           FUNC_TYPE  p_initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
  239. void           FUNC_TYPE  p_setgraphmode(int mode);
  240. void           FUNC_TYPE  p_setviewport(int left, int top, int right, int bottom, int clip);
  241. void           FUNC_TYPE  p_getarccoords(struct arccoordstype far *arccoords);
  242. void           FUNC_TYPE  p_dump(void);
  243. int            FUNC_TYPE  p_registerfarbgidriver(void far *driver);
  244. int             FUNC_TYPE  p_registerfarbgifont(void far *font);
  245.  
  246. #ifdef TPASCAL
  247. int                 FUNC_TYPE p_registerbgidriver(void (far*driver)(void));
  248. int                 FUNC_TYPE p_registerbgifont(void (far*font)(void));
  249. void                FUNC_TYPE  p_getdrivername(void);
  250. void               FUNC_TYPE  p_getmodename(int mode_number);
  251. #else
  252. int                 FUNC_TYPE p_registerbgidriver(void (*driver)(void));
  253. int                 FUNC_TYPE p_registerbgifont(void (*font)(void));
  254. char far *     FUNC_TYPE  p_getdrivername(void);
  255. char far *     FUNC_TYPE  p_getmodename(int mode_number);
  256. #endif
  257.  
  258. #ifdef __TURBOC__
  259. extern void             FUNC_TYPE  (far *_p_putpixel_screen)(int x, int y, int colour);
  260. extern void far *            FUNC_TYPE  (far *_p_graphgetmem)(unsigned long size);
  261. extern void             FUNC_TYPE  (far *_p_graphfreemem)(void far *ptr, unsigned long size);
  262. extern int                     FUNC_TYPE  (far *_p_graphgetbuff)(unsigned long size);
  263. extern void             FUNC_TYPE  (far *_p_graphfreebuff)(unsigned long size);
  264. extern unsigned char        FUNC_TYPE  (far *_p_getbyte)(unsigned long int offset);
  265. extern void               FUNC_TYPE  (far *_p_putbyte)(unsigned long int offset, unsigned char byte);
  266. #else
  267. extern void             (*_p_putpixel_screen)(int x, int y, int colour);
  268. extern void far *            (*_p_graphgetmem)(unsigned long size);
  269. extern void             (*_p_graphfreemem)(void far *ptr, unsigned long size);
  270. extern int                     (*_p_graphgetbuff)(unsigned long size);
  271. extern void             (*_p_graphfreebuff)(unsigned long size);
  272. extern unsigned char        (*_p_getbyte)(unsigned long int offset);
  273. extern void               (*_p_putbyte)(unsigned long int offset, unsigned char byte);
  274. #endif
  275.  
  276. #endif
  277.