Showing posts with label Graphics Package. Show all posts
Showing posts with label Graphics Package. Show all posts

graphics.h Definitions for Graphics Package.

Copyright (c) Borland International 1987,1988
All Rights Reserved.
*/

#if __STDC__
#define _Cdecl
#else
#define _Cdecl cdecl
#endif

#if     !defined(__GRAPHX_DEF_)
#define __GRAPHX_DEF_

enum graphics_errors { /* graphresult error return codes */
grOk   =   0,
grNoInitGraph   =  -1,
grNotDetected   =  -2,
grFileNotFound   =  -3,
grInvalidDriver    =  -4,
grNoLoadMem   =  -5,
grNoScanMem   =  -6,
grNoFloodMem   =  -7,
grFontNotFound   =  -8,
grNoFontMem   =  -9,
grInvalidMode   = -10,
grError   = -11,   /* generic error */
grIOerror   = -12,
grInvalidFont   = -13,
grInvalidFontNum   = -14,
grInvalidVersion   = -18
};

enum graphics_drivers { /* define graphics drivers */
DETECT, /* requests autodetection */
CGA, MCGA, EGA, EGA64, EGAMONO, IBM8514, /* 1 - 6 */
HERCMONO, ATT400, VGA, PC3270, /* 7 - 10 */
CURRENT_DRIVER = -1
};

enum graphics_modes { /* graphics modes for each driver */
    CGAC0      = 0,  /* 320x200 palette 0; 1 page */
    CGAC1      = 1,  /* 320x200 palette 1; 1 page */
    CGAC2      = 2,  /* 320x200 palette 2: 1 page */
    CGAC3      = 3,  /* 320x200 palette 3; 1 page */
    CGAHI      = 4,  /* 640x200 1 page */
    MCGAC0     = 0,  /* 320x200 palette 0; 1 page */
    MCGAC1     = 1,  /* 320x200 palette 1; 1 page */
    MCGAC2     = 2,  /* 320x200 palette 2; 1 page */
    MCGAC3     = 3,  /* 320x200 palette 3; 1 page */
    MCGAMED    = 4,  /* 640x200 1 page */
    MCGAHI     = 5,  /* 640x480 1 page */
    EGALO      = 0,  /* 640x200 16 color 4 pages */
    EGAHI      = 1,  /* 640x350 16 color 2 pages */
    EGA64LO    = 0,  /* 640x200 16 color 1 page */
    EGA64HI    = 1,  /* 640x350 4 color  1 page */
    EGAMONOHI  = 0,  /* 640x350 64K on card, 1 page - 256K on card, 4 pages */
    HERCMONOHI = 0,  /* 720x348 2 pages */
    ATT400C0   = 0,  /* 320x200 palette 0; 1 page */
    ATT400C1   = 1,  /* 320x200 palette 1; 1 page */
    ATT400C2   = 2,  /* 320x200 palette 2; 1 page */
    ATT400C3   = 3,  /* 320x200 palette 3; 1 page */
    ATT400MED  = 4,  /* 640x200 1 page */
    ATT400HI   = 5,  /* 640x400 1 page */
    VGALO      = 0,  /* 640x200 16 color 4 pages */
    VGAMED     = 1,  /* 640x350 16 color 2 pages */
    VGAHI      = 2,  /* 640x480 16 color 1 page */
    PC3270HI   = 0,  /* 720x350 1 page */
    IBM8514LO  = 0,  /* 640x480 256 colors */
    IBM8514HI  = 1   /*1024x768 256 colors */
};

/* Colors for setpalette and setallpalette */

#if !defined(__COLORS)
#define __COLORS

enum COLORS {
    BLACK,    /* dark colors */
    BLUE,
    GREEN,
    CYAN,
    RED,
    MAGENTA,
    BROWN,
    LIGHTGRAY,
    DARKGRAY,    /* light colors */
    LIGHTBLUE,
    LIGHTGREEN,
    LIGHTCYAN,
    LIGHTRED,
    LIGHTMAGENTA,
    YELLOW,
    WHITE
};
#endif

enum CGA_COLORS {
    CGA_LIGHTGREEN     = 1, /* Palette C0 Color Names */
    CGA_LIGHTRED       = 2,
    CGA_YELLOW       = 3,

    CGA_LIGHTCYAN      = 1, /* Palette C1 Color Names */
    CGA_LIGHTMAGENTA   = 2,
    CGA_WHITE       = 3,

    CGA_GREEN       = 1, /* Palette C2 Color Names */
    CGA_RED       = 2,
    CGA_BROWN       = 3,

    CGA_CYAN       = 1, /* Palette C3 Color Names */
    CGA_MAGENTA        = 2,
    CGA_LIGHTGRAY      = 3
};


enum EGA_COLORS {
    EGA_BLACK =  0,    /* dark colors */
    EGA_BLUE =  1,
    EGA_GREEN =  2,
    EGA_CYAN =  3,
    EGA_RED =  4,
    EGA_MAGENTA =  5,
    EGA_BROWN =  20,
    EGA_LIGHTGRAY =  7,
    EGA_DARKGRAY =  56,     /* light colors */
    EGA_LIGHTBLUE =  57,
    EGA_LIGHTGREEN =  58,
    EGA_LIGHTCYAN =  59,
    EGA_LIGHTRED =  60,
    EGA_LIGHTMAGENTA =  61,
    EGA_YELLOW =  62,
    EGA_WHITE =  63
};

enum line_styles { /* Line styles for get/setlinestyle */
SOLID_LINE   = 0,
DOTTED_LINE  = 1,
CENTER_LINE  = 2,
DASHED_LINE  = 3,
USERBIT_LINE = 4, /* User defined line style */
};

enum line_widths { /* Line widths for get/setlinestyle */
NORM_WIDTH  = 1,
THICK_WIDTH = 3,
};

enum font_names {
DEFAULT_FONT = 0, /* 8x8 bit mapped font */
TRIPLEX_FONT = 1, /* "Stroked" fonts */
SMALL_FONT = 2,
SANS_SERIF_FONT = 3,
GOTHIC_FONT = 4
};

#define HORIZ_DIR 0 /* left to right */
#define VERT_DIR 1 /* bottom to top */

#define USER_CHAR_SIZE 0 /* user-defined char size */

enum fill_patterns { /* Fill patterns for get/setfillstyle */
EMPTY_FILL, /* fills area in background color */
SOLID_FILL, /* fills area in solid fill color */
LINE_FILL, /* --- fill */
LTSLASH_FILL, /* /// fill */
SLASH_FILL, /* /// fill with thick lines */
BKSLASH_FILL, /* \\\ fill with thick lines */
LTBKSLASH_FILL, /* \\\ fill */
HATCH_FILL, /* light hatch fill */
XHATCH_FILL, /* heavy cross hatch fill */
INTERLEAVE_FILL, /* interleaving line fill */
WIDE_DOT_FILL, /* Widely spaced dot fill */
CLOSE_DOT_FILL, /* Closely spaced dot fill */
USER_FILL /* user defined fill */
};

enum putimage_ops { /* BitBlt operators for putimage */
COPY_PUT, /* MOV */
XOR_PUT, /* XOR */
OR_PUT, /* OR  */
AND_PUT, /* AND */
NOT_PUT /* NOT */
};

enum text_just { /* Horizontal and vertical justification
  for settextjustify */
LEFT_TEXT = 0,
CENTER_TEXT = 1,
RIGHT_TEXT = 2,

BOTTOM_TEXT = 0,
     /* CENTER_TEXT = 1,  already defined above */
TOP_TEXT = 2
};


#define MAXCOLORS 15

struct palettetype {
unsigned char size;
signed char colors[MAXCOLORS+1];
};

struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
};

struct textsettingstype {
int font;
int direction;
int charsize;
int horiz;
int vert;
};

struct fillsettingstype {
int pattern;
int color;
};

struct pointtype {
int x, y;
};

struct viewporttype {
int left, top, right, bottom;
int clip;
};

struct arccoordstype {
int x, y;
int xstart, ystart, xend, yend;
};

void   far _Cdecl arc(int x, int y, int stangle, int endangle,
 int radius);
void   far _Cdecl bar(int left, int top, int right, int bottom);
void   far _Cdecl bar3d(int left, int top, int right, int bottom,
   int depth, int topflag);
void   far _Cdecl circle(int x, int y, int radius);
void   far _Cdecl cleardevice(void);
void   far _Cdecl clearviewport(void);
void   far _Cdecl closegraph(void);
void   far _Cdecl detectgraph(int far *graphdriver,int far *graphmode);
void   far _Cdecl drawpoly(int numpoints, int far *polypoints);
void   far _Cdecl ellipse(int x, int y, int stangle, int endangle,
     int xradius, int yradius);
void   far _Cdecl fillellipse( int x, int y, int xradius, int yradius );
void   far _Cdecl fillpoly(int numpoints, int far *polypoints);
void   far _Cdecl floodfill(int x, int y, int border);
void   far _Cdecl getarccoords(struct arccoordstype far *arccoords);
void   far _Cdecl getaspectratio(int far *xasp, int far *yasp);
int   far _Cdecl getbkcolor(void);
int   far _Cdecl getcolor(void);
struct palettetype * far _Cdecl getdefaultpalette( void );
char *   far _Cdecl getdrivername( void );
void   far _Cdecl getfillpattern(char far *pattern);
void   far _Cdecl getfillsettings(struct fillsettingstype far *fillinfo);
int   far _Cdecl getgraphmode(void);
void   far _Cdecl getimage(int left, int top, int right, int bottom,
      void far *bitmap);
void   far _Cdecl getlinesettings(struct linesettingstype far *lineinfo);
int   far _Cdecl getmaxcolor(void);
int   far _Cdecl getmaxmode(void);
int   far _Cdecl getmaxx(void);
int   far _Cdecl getmaxy(void);
char *   far _Cdecl getmodename( int mode_number );
void   far _Cdecl getmoderange(int graphdriver, int far *lomode,
  int far *himode);
unsigned   far _Cdecl getpixel(int x, int y);
void   far _Cdecl getpalette(struct palettetype far *palette);
int   far _Cdecl getpalettesize( void );
void   far _Cdecl gettextsettings(struct textsettingstype far *texttypeinfo);
void   far _Cdecl getviewsettings(struct viewporttype far *viewport);
int   far _Cdecl getx(void);
int   far _Cdecl gety(void);
void   far _Cdecl graphdefaults(void);
char *   far _Cdecl grapherrormsg(int errorcode);
void   far _Cdecl _graphfreemem(void far *ptr, unsigned size);
void far * far _Cdecl _graphgetmem(unsigned size);
int   far _Cdecl graphresult(void);
unsigned   far _Cdecl imagesize(int left, int top, int right, int bottom);
void   far _Cdecl initgraph(int  far *graphdriver,
int  far *graphmode,
char far *pathtodriver);
int   far _Cdecl installuserdriver( char far *name, int huge (*detect)(void) );
int   far _Cdecl installuserfont( char far *name );
void   far _Cdecl line(int x1, int y1, int x2, int y2);
void   far _Cdecl linerel(int dx, int dy);
void   far _Cdecl lineto(int x, int y);
void   far _Cdecl moverel(int dx, int dy);
void   far _Cdecl moveto(int x, int y);
void   far _Cdecl outtext(char far *textstring);
void   far _Cdecl outtextxy(int x, int y, char far *textstring);
void   far _Cdecl pieslice(int x, int y, int stangle, int endangle,
      int radius);
void   far _Cdecl putimage(int left, int top, void far *bitmap, int op);
void   far _Cdecl putpixel(int x, int y, int color);
void   far _Cdecl rectangle(int left, int top, int right, int bottom);
void   far _Cdecl restorecrtmode(void);
void   far _Cdecl sector( int X, int Y, int StAngle, int EndAngle,
     int XRadius, int YRadius );
void   far _Cdecl setactivepage(int page);
void   far _Cdecl setallpalette(struct palettetype far *palette);
void   far _Cdecl setaspectratio( int xasp, int yasp );
void   far _Cdecl setbkcolor(int color);
void   far _Cdecl setcolor(int color);
void   far _Cdecl setfillpattern(char far *upattern, int color);
void   far _Cdecl setfillstyle(int pattern, int color);
unsigned   far _Cdecl setgraphbufsize(unsigned bufsize);
void   far _Cdecl setgraphmode(int mode);
void   far _Cdecl setlinestyle(int linestyle, unsigned upattern,
  int thickness);
void   far _Cdecl setpalette(int colornum, int color);
void   far _Cdecl setrgbpalette(int colornum,
   int red, int green, int blue);
void   far _Cdecl settextjustify(int horiz, int vert);
void   far _Cdecl settextstyle(int font, int direction, int charsize);
void   far _Cdecl setusercharsize(int multx, int divx,
     int multy, int divy);
void   far _Cdecl setviewport(int left, int top, int right, int bottom,
 int clip);
void   far _Cdecl setvisualpage(int page);
void   far _Cdecl setwritemode( int mode );
int   far _Cdecl textheight(char far *textstring);
int   far _Cdecl textwidth(char far *textstring);

/***** graphics drivers *****/

int       _Cdecl registerbgidriver(void (*driver)(void));
int   far _Cdecl registerfarbgidriver(void far *driver);

/* !!     These "functions" are NOT user-callable          !! */
/* !! They are there just so you can link in graphics drivers !! */

void       _Cdecl CGA_driver(void);
void       _Cdecl EGAVGA_driver(void);
void       _Cdecl IBM8514_driver(void);
void       _Cdecl Herc_driver(void);
void       _Cdecl ATT_driver(void);
void       _Cdecl PC3270_driver(void);

extern int far _Cdecl CGA_driver_far[];
extern int far _Cdecl EGAVGA_driver_far[];
extern int far _Cdecl IBM8514_driver_far[];
extern int far _Cdecl Herc_driver_far[];
extern int far _Cdecl ATT_driver_far[];
extern int far _Cdecl PC3270_driver_far[];


/***** graphics fonts *****/

int       _Cdecl registerbgifont(void (*font)(void));
int   far _Cdecl registerfarbgifont(void far *font);

/* !! These "functions" are NOT user-callable,   !! */
/* !! they are there just so you can link in fonts !! */

void       _Cdecl triplex_font(void);
void       _Cdecl  small_font(void);
void       _Cdecl sansserif_font(void);
void       _Cdecl gothic_font(void);

extern int far _Cdecl triplex_font_far[];
extern int far _Cdecl  small_font_far[];
extern int far _Cdecl sansserif_font_far[];
extern int far _Cdecl gothic_font_far[];


#endif