486 lines
17 KiB
C
486 lines
17 KiB
C
/***
|
|
*graph.h - declare constants, functions, and macros for graphics library
|
|
*
|
|
* Copyright (c) 1987 - 1992, Microsoft Corporation. All rights reserved.
|
|
*
|
|
*Purpose:
|
|
* This file declares the graphics library functions and the
|
|
* structures and manifest constants that are used with them.
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef _WINDOWS
|
|
/* Force graphics.lib to be linked in if graph.h used */
|
|
#pragma comment(lib,"graphics.lib")
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" { /* allow use with C++ */
|
|
#endif
|
|
|
|
#if (_MSC_VER <= 600)
|
|
#define __cdecl _cdecl
|
|
#define __far _far
|
|
#define __huge _huge
|
|
#endif
|
|
|
|
/* force word packing to avoid possible -Zp override */
|
|
#pragma pack(2)
|
|
|
|
|
|
/* user-visible declarations for Quick-C Graphics Library */
|
|
|
|
#ifndef _VIDEOCONFIG_DEFINED
|
|
/* structure for _getvideoconfig() as visible to user */
|
|
struct _videoconfig {
|
|
short numxpixels; /* number of pixels on X axis */
|
|
short numypixels; /* number of pixels on Y axis */
|
|
short numtextcols; /* number of text columns available */
|
|
short numtextrows; /* number of text rows available */
|
|
short numcolors; /* number of actual colors */
|
|
short bitsperpixel; /* number of bits per pixel */
|
|
short numvideopages; /* number of available video pages */
|
|
short mode; /* current video mode */
|
|
short adapter; /* active display adapter */
|
|
short monitor; /* active display monitor */
|
|
short memory; /* adapter video memory in K bytes */
|
|
};
|
|
#define _VIDEOCONFIG_DEFINED
|
|
#endif
|
|
|
|
#ifndef _XYCOORD_DEFINED
|
|
/* return value of _setvieworg(), etc. */
|
|
struct _xycoord {
|
|
short xcoord;
|
|
short ycoord;
|
|
};
|
|
#define _XYCOORD_DEFINED
|
|
#endif
|
|
|
|
/* structure for text position */
|
|
#ifndef _RCCOORD_DEFINED
|
|
struct _rccoord {
|
|
short row;
|
|
short col;
|
|
};
|
|
#define _RCCOORD_DEFINED
|
|
#endif
|
|
|
|
#ifndef __STDC__
|
|
/* Non-ANSI names for compatibility */
|
|
#define videoconfig _videoconfig
|
|
#define xycoord _xycoord
|
|
#define rccoord _rccoord
|
|
#endif
|
|
|
|
|
|
/* ERROR HANDLING */
|
|
short __far __cdecl _grstatus(void);
|
|
|
|
/* Error Status Information returned by _grstatus() */
|
|
|
|
/* successful */
|
|
#define _GROK 0
|
|
|
|
/* errors */
|
|
#define _GRERROR (-1)
|
|
#define _GRMODENOTSUPPORTED (-2)
|
|
#define _GRNOTINPROPERMODE (-3)
|
|
#define _GRINVALIDPARAMETER (-4)
|
|
#define _GRFONTFILENOTFOUND (-5)
|
|
#define _GRINVALIDFONTFILE (-6)
|
|
#define _GRCORRUPTEDFONTFILE (-7)
|
|
#define _GRINSUFFICIENTMEMORY (-8)
|
|
#define _GRINVALIDIMAGEBUFFER (-9)
|
|
|
|
/* warnings */
|
|
#define _GRNOOUTPUT 1
|
|
#define _GRCLIPPED 2
|
|
#define _GRPARAMETERALTERED 3
|
|
#define _GRTEXTNOTSUPPORTED 4
|
|
|
|
|
|
/* SETUP AND CONFIGURATION */
|
|
|
|
short __far __cdecl _setvideomode(short);
|
|
short __far __cdecl _setvideomoderows(short,short); /* return rows; 0 if error */
|
|
|
|
/* arguments to _setvideomode() */
|
|
#define _MAXRESMODE (-3) /* graphics mode with highest resolution */
|
|
#define _MAXCOLORMODE (-2) /* graphics mode with most colors */
|
|
#define _DEFAULTMODE (-1) /* restore screen to original mode */
|
|
#define _TEXTBW40 0 /* 40-column text, 16 grey */
|
|
#define _TEXTC40 1 /* 40-column text, 16/8 color */
|
|
#define _TEXTBW80 2 /* 80-column text, 16 grey */
|
|
#define _TEXTC80 3 /* 80-column text, 16/8 color */
|
|
#define _MRES4COLOR 4 /* 320 x 200, 4 color */
|
|
#define _MRESNOCOLOR 5 /* 320 x 200, 4 grey */
|
|
#define _HRESBW 6 /* 640 x 200, BW */
|
|
#define _TEXTMONO 7 /* 80-column text, BW */
|
|
#define _HERCMONO 8 /* 720 x 348, BW for HGC */
|
|
#define _MRES16COLOR 13 /* 320 x 200, 16 color */
|
|
#define _HRES16COLOR 14 /* 640 x 200, 16 color */
|
|
#define _ERESNOCOLOR 15 /* 640 x 350, BW */
|
|
#define _ERESCOLOR 16 /* 640 x 350, 4 or 16 color */
|
|
#define _VRES2COLOR 17 /* 640 x 480, BW */
|
|
#define _VRES16COLOR 18 /* 640 x 480, 16 color */
|
|
#define _MRES256COLOR 19 /* 320 x 200, 256 color */
|
|
#define _ORESCOLOR 64 /* 640 x 400, 1 of 16 colors (Olivetti only) */
|
|
|
|
/* the following 8 modes require VESA SuperVGA BIOS extensions */
|
|
#define _ORES256COLOR 0x0100 /* 640 x 400, 256 color */
|
|
#define _VRES256COLOR 0x0101 /* 640 x 480, 256 color */
|
|
|
|
/* WARNING: DO NOT attempt to set the following modes without ensuring that
|
|
your monitor can safely handle that resolution. Otherwise, you may risk
|
|
damaging your display monitor! Consult your owner's manual for details.
|
|
Note: _MAXRESMODE and _MAXCOLORMODE never select SRES, XRES, or ZRES modes */
|
|
|
|
/* requires NEC MultiSync 3D or equivalent, or better */
|
|
#define _SRES16COLOR 0x0102 /* 800 x 600, 16 color */
|
|
#define _SRES256COLOR 0x0103 /* 800 x 600, 256 color */
|
|
|
|
/* requires NEC MultiSync 4D or equivalent, or better */
|
|
#define _XRES16COLOR 0x0104 /* 1024 x 768, 16 color */
|
|
#define _XRES256COLOR 0x0105 /* 1024 x 768, 256 color */
|
|
|
|
/* requires NEC MultiSync 5D or equivalent, or better */
|
|
#define _ZRES16COLOR 0x0106 /* 1280 x 1024, 16 color */
|
|
#define _ZRES256COLOR 0x0107 /* 1280 x 1024, 256 color */
|
|
|
|
|
|
short __far __cdecl _setactivepage(short);
|
|
short __far __cdecl _setvisualpage(short);
|
|
short __far __cdecl _getactivepage(void);
|
|
short __far __cdecl _getvisualpage(void);
|
|
|
|
/* _videoconfig adapter values */
|
|
/* these manifest constants can be used to determine the type of the active */
|
|
/* adapter, using either simple comparisons or the bitwise-AND operator (&) */
|
|
#define _MDPA 0x0001 /* Monochrome Display Adapter (MDPA) */
|
|
#define _CGA 0x0002 /* Color Graphics Adapter (CGA) */
|
|
#define _EGA 0x0004 /* Enhanced Graphics Adapter (EGA) */
|
|
#define _VGA 0x0008 /* Video Graphics Array (VGA) */
|
|
#define _MCGA 0x0010 /* MultiColor Graphics Array (MCGA) */
|
|
#define _HGC 0x0020 /* Hercules Graphics Card (HGC) */
|
|
#define _OCGA 0x0042 /* Olivetti Color Graphics Adapter (OCGA) */
|
|
#define _OEGA 0x0044 /* Olivetti Enhanced Graphics Adapter (OEGA) */
|
|
#define _OVGA 0x0048 /* Olivetti Video Graphics Array (OVGA) */
|
|
#define _SVGA 0x0088 /* Super VGA with VESA BIOS support (SVGA) */
|
|
|
|
/* _videoconfig monitor values */
|
|
/* these manifest constants can be used to determine the type of monitor in */
|
|
/* use, using either simple comparisons or the bitwise-AND operator (&) */
|
|
#define _MONO 0x0001 /* Monochrome */
|
|
#define _COLOR 0x0002 /* Color (or Enhanced emulating color) */
|
|
#define _ENHCOLOR 0x0004 /* Enhanced Color */
|
|
#define _ANALOGMONO 0x0008 /* Analog Monochrome only */
|
|
#define _ANALOGCOLOR 0x0010 /* Analog Color only */
|
|
#define _ANALOG 0x0018 /* Analog Monochrome and Color modes */
|
|
|
|
struct _videoconfig __far * __far __cdecl _getvideoconfig(struct _videoconfig __far *);
|
|
|
|
|
|
/* COORDINATE SYSTEMS */
|
|
|
|
struct _xycoord __far __cdecl _setvieworg(short, short);
|
|
#define _setlogorg _setvieworg /* obsolescent */
|
|
|
|
struct _xycoord __far __cdecl _getviewcoord(short, short);
|
|
#define _getlogcoord _getviewcoord /* obsolescent */
|
|
|
|
struct _xycoord __far __cdecl _getphyscoord(short, short);
|
|
|
|
void __far __cdecl _setcliprgn(short, short, short, short);
|
|
void __far __cdecl _setviewport(short, short, short, short);
|
|
|
|
|
|
/* OUTPUT ROUTINES */
|
|
|
|
/* control parameters for _ellipse, _rectangle, _pie and _polygon */
|
|
#define _GBORDER 2 /* draw outline only */
|
|
#define _GFILLINTERIOR 3 /* fill using current fill mask */
|
|
|
|
/* parameters for _clearscreen */
|
|
#define _GCLEARSCREEN 0
|
|
#define _GVIEWPORT 1
|
|
#define _GWINDOW 2
|
|
|
|
void __far __cdecl _clearscreen(short);
|
|
|
|
struct _xycoord __far __cdecl _moveto(short, short);
|
|
struct _xycoord __far __cdecl _getcurrentposition(void);
|
|
|
|
short __far __cdecl _lineto(short, short);
|
|
short __far __cdecl _rectangle(short, short, short, short, short);
|
|
short __far __cdecl _polygon(short, const struct _xycoord __far *, short);
|
|
short __far __cdecl _arc(short, short, short, short, short, short, short, short);
|
|
short __far __cdecl _ellipse(short, short, short, short, short);
|
|
short __far __cdecl _pie(short, short, short, short, short, short, short, short, short);
|
|
|
|
short __far __cdecl _getarcinfo(struct _xycoord __far *, struct _xycoord __far *, struct _xycoord __far *);
|
|
|
|
short __far __cdecl _setpixel(short, short);
|
|
short __far __cdecl _getpixel(short, short);
|
|
short __far __cdecl _floodfill(short, short, short);
|
|
|
|
|
|
/* PEN COLOR, LINE STYLE, WRITE MODE, FILL PATTERN */
|
|
|
|
short __far __cdecl _setcolor(short);
|
|
short __far __cdecl _getcolor(void);
|
|
|
|
void __far __cdecl _setlinestyle(unsigned short);
|
|
unsigned short __far __cdecl _getlinestyle(void);
|
|
|
|
short __far __cdecl _setwritemode(short);
|
|
short __far __cdecl _getwritemode(void);
|
|
|
|
void __far __cdecl _setfillmask(const unsigned char __far *);
|
|
unsigned char __far * __far __cdecl _getfillmask(unsigned char __far *);
|
|
|
|
|
|
/* COLOR SELECTION */
|
|
|
|
long __far __cdecl _setbkcolor(long);
|
|
long __far __cdecl _getbkcolor(void);
|
|
|
|
long __far __cdecl _remappalette(short, long);
|
|
short __far __cdecl _remapallpalette(const long __far *);
|
|
short __far __cdecl _selectpalette(short);
|
|
|
|
|
|
/* TEXT */
|
|
/* parameters for _displaycursor */
|
|
#define _GCURSOROFF 0
|
|
#define _GCURSORON 1
|
|
|
|
/* parameters for _wrapon */
|
|
#define _GWRAPOFF 0
|
|
#define _GWRAPON 1
|
|
|
|
|
|
/* direction parameters for _scrolltextwindow */
|
|
#define _GSCROLLUP 1
|
|
#define _GSCROLLDOWN (-1)
|
|
|
|
/* request maximum number of rows in _settextrows and _setvideomoderows */
|
|
#define _MAXTEXTROWS (-1)
|
|
|
|
short __far __cdecl _settextrows(short); /* returns # rows set; 0 if error */
|
|
void __far __cdecl _settextwindow(short, short, short, short);
|
|
void __far __cdecl _gettextwindow(short __far *, short __far *, short __far *, short __far *);
|
|
void __far __cdecl _scrolltextwindow(short);
|
|
void __far __cdecl _outmem(const char __far *, short);
|
|
void __far __cdecl _outtext(const char __far *);
|
|
short __far __cdecl _inchar(void);
|
|
short __far __cdecl _wrapon(short);
|
|
|
|
short __far __cdecl _displaycursor(short);
|
|
short __far __cdecl _settextcursor(short);
|
|
short __far __cdecl _gettextcursor(void);
|
|
|
|
struct _rccoord __far __cdecl _settextposition(short, short);
|
|
struct _rccoord __far __cdecl _gettextposition(void);
|
|
|
|
short __far __cdecl _settextcolor(short);
|
|
short __far __cdecl _gettextcolor(void);
|
|
|
|
|
|
/* SCREEN IMAGES */
|
|
|
|
void __far __cdecl _getimage(short, short, short, short, char __huge *);
|
|
void __far __cdecl _putimage(short, short, char __huge *, short);
|
|
long __far __cdecl _imagesize(short, short, short, short);
|
|
|
|
/* "action verbs" for _putimage() and _setwritemode() */
|
|
#define _GPSET 3
|
|
#define _GPRESET 2
|
|
#define _GAND 1
|
|
#define _GOR 0
|
|
#define _GXOR 4
|
|
|
|
|
|
/* Color values are used with _setbkcolor in graphics modes and also by
|
|
_remappalette and _remapallpalette. Also known as palette colors.
|
|
Not to be confused with color indices (aka. color attributes). */
|
|
|
|
/* universal color values (all color modes): */
|
|
#define _BLACK 0x000000L
|
|
#define _BLUE 0x2a0000L
|
|
#define _GREEN 0x002a00L
|
|
#define _CYAN 0x2a2a00L
|
|
#define _RED 0x00002aL
|
|
#define _MAGENTA 0x2a002aL
|
|
#define _BROWN 0x00152aL
|
|
#define _WHITE 0x2a2a2aL
|
|
#define _GRAY 0x151515L
|
|
#define _LIGHTBLUE 0x3F1515L
|
|
#define _LIGHTGREEN 0x153f15L
|
|
#define _LIGHTCYAN 0x3f3f15L
|
|
#define _LIGHTRED 0x15153fL
|
|
#define _LIGHTMAGENTA 0x3f153fL
|
|
#define _YELLOW 0x153f3fL
|
|
#define _BRIGHTWHITE 0x3f3f3fL
|
|
|
|
/* the following is obsolescent and defined only for backward compatibility */
|
|
#define _LIGHTYELLOW _YELLOW
|
|
|
|
/* mono mode F (_ERESNOCOLOR) color values: */
|
|
#define _MODEFOFF 0L
|
|
#define _MODEFOFFTOON 1L
|
|
#define _MODEFOFFTOHI 2L
|
|
#define _MODEFONTOOFF 3L
|
|
#define _MODEFON 4L
|
|
#define _MODEFONTOHI 5L
|
|
#define _MODEFHITOOFF 6L
|
|
#define _MODEFHITOON 7L
|
|
#define _MODEFHI 8L
|
|
|
|
/* mono mode 7 (_TEXTMONO) color values: */
|
|
#define _MODE7OFF 0L
|
|
#define _MODE7ON 1L
|
|
#define _MODE7HI 2L
|
|
|
|
|
|
/* Warning: these '_xy' entrypoints are undocumented.
|
|
They may or may not be supported in future versions. */
|
|
struct _xycoord __far __cdecl _moveto_xy(struct _xycoord);
|
|
short __far __cdecl _lineto_xy(struct _xycoord);
|
|
short __far __cdecl _rectangle_xy(short,struct _xycoord,struct _xycoord);
|
|
short __far __cdecl _arc_xy(struct _xycoord, struct _xycoord, struct _xycoord, struct _xycoord);
|
|
short __far __cdecl _ellipse_xy(short, struct _xycoord, struct _xycoord);
|
|
short __far __cdecl _pie_xy(short, struct _xycoord, struct _xycoord, struct _xycoord, struct _xycoord);
|
|
short __far __cdecl _getpixel_xy(struct _xycoord);
|
|
short __far __cdecl _setpixel_xy(struct _xycoord);
|
|
short __far __cdecl _floodfill_xy(struct _xycoord, short);
|
|
void __far __cdecl _getimage_xy(struct _xycoord,struct _xycoord, char __huge *);
|
|
long __far __cdecl _imagesize_xy(struct _xycoord,struct _xycoord);
|
|
void __far __cdecl _putimage_xy(struct _xycoord, char __huge *, short);
|
|
|
|
|
|
/* WINDOW COORDINATE SYSTEM */
|
|
|
|
#ifndef _WXYCOORD_DEFINED
|
|
/* structure for window coordinate pair */
|
|
struct _wxycoord {
|
|
double wx; /* window x coordinate */
|
|
double wy; /* window y coordinate */
|
|
};
|
|
#define _WXYCOORD_DEFINED
|
|
#endif
|
|
|
|
|
|
/* define real coordinate window - returns non-zero if successful */
|
|
short __far __cdecl _setwindow(short,double,double,double,double);
|
|
|
|
/* convert from view to window coordinates */
|
|
struct _wxycoord __far __cdecl _getwindowcoord(short,short);
|
|
struct _wxycoord __far __cdecl _getwindowcoord_xy(struct _xycoord);
|
|
|
|
/* convert from window to view coordinates */
|
|
struct _xycoord __far __cdecl _getviewcoord_w(double,double);
|
|
struct _xycoord __far __cdecl _getviewcoord_wxy(const struct _wxycoord __far *);
|
|
|
|
/* return the window coordinates of the current graphics output
|
|
position as an _wxycoord structure. no error return. */
|
|
struct _wxycoord __far __cdecl _getcurrentposition_w(void);
|
|
|
|
|
|
/* window coordinate entry points for graphics output routines */
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _arc_w(double, double, double, double, double, double, double, double);
|
|
short __far __cdecl _arc_wxy(const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *);
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _ellipse_w(short, double, double, double, double);
|
|
short __far __cdecl _ellipse_wxy(short, const struct _wxycoord __far *, const struct _wxycoord __far *);
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _floodfill_w(double, double, short);
|
|
|
|
/* returns pixel value at given point; -1 if unsuccessful. */
|
|
short __far __cdecl _getpixel_w(double, double);
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _lineto_w(double, double);
|
|
|
|
/* returns the view coordinates of the previous output
|
|
position as a _wxycoord structure. no error return */
|
|
struct _wxycoord __far __cdecl _moveto_w(double, double);
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _pie_w(short, double, double, double, double, double, double, double, double);
|
|
short __far __cdecl _pie_wxy(short, const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *, const struct _wxycoord __far *);
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _rectangle_w(short, double, double, double, double);
|
|
short __far __cdecl _rectangle_wxy(short, const struct _wxycoord __far *, const struct _wxycoord __far *);
|
|
|
|
/* returns nonzero if successful; otherwise 0 */
|
|
short __far __cdecl _polygon_w(short, const double __far *, short);
|
|
short __far __cdecl _polygon_wxy(short, const struct _wxycoord __far *, short);
|
|
|
|
/* returns previous color; -1 if unsuccessful */
|
|
short __far __cdecl _setpixel_w(double, double);
|
|
|
|
|
|
/* window coordinate image routines */
|
|
|
|
/* no return value */
|
|
void __far __cdecl _getimage_w(double, double, double, double, char __huge *);
|
|
void __far __cdecl _getimage_wxy(const struct _wxycoord __far *, const struct _wxycoord __far *, char __huge *);
|
|
|
|
/* returns the image's storage size in bytes */
|
|
long __far __cdecl _imagesize_w(double, double, double, double);
|
|
long __far __cdecl _imagesize_wxy(const struct _wxycoord __far *, const struct _wxycoord __far *);
|
|
|
|
/* no return value */
|
|
void __far __cdecl _putimage_w(double, double ,char __huge * ,short);
|
|
|
|
|
|
/* FONTS */
|
|
|
|
#ifndef _FONTINFO_DEFINED
|
|
/* structure for _getfontinfo() */
|
|
struct _fontinfo {
|
|
int type; /* b0 set = vector,clear = bit map */
|
|
int ascent; /* pix dist from top to baseline */
|
|
int pixwidth; /* character width in pixels, 0=prop */
|
|
int pixheight; /* character height in pixels */
|
|
int avgwidth; /* average character width in pixels */
|
|
char filename[81]; /* file name including path */
|
|
char facename[32]; /* font name */
|
|
};
|
|
#define _FONTINFO_DEFINED
|
|
#endif
|
|
|
|
|
|
/* font function prototypes */
|
|
short __far __cdecl _registerfonts( const char __far *);
|
|
void __far __cdecl _unregisterfonts( void );
|
|
short __far __cdecl _setfont( const char __far * );
|
|
short __far __cdecl _getfontinfo( struct _fontinfo __far * );
|
|
void __far __cdecl _outgtext( const char __far * );
|
|
short __far __cdecl _getgtextextent( const char __far * );
|
|
struct _xycoord __far __cdecl _setgtextvector( short, short );
|
|
struct _xycoord __far __cdecl _getgtextvector(void);
|
|
|
|
|
|
#ifdef _WINDOWS
|
|
/* QuickWin graphics extension prototypes */
|
|
int __far __cdecl _wgclose( int );
|
|
int __far __cdecl _wggetactive( void );
|
|
int __far __cdecl _wgopen( char __far * );
|
|
int __far __cdecl _wgsetactive( int );
|
|
#endif
|
|
|
|
|
|
/* restore default packing */
|
|
#pragma pack()
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|