865 lines
27 KiB
C
865 lines
27 KiB
C
/**
|
|
** BCC2GRX - Interfacing Borland based graphics programs to LIBGRX
|
|
** Copyright (C) 1993-97 by Hartmut Schirmer
|
|
**
|
|
** Contact : Hartmut Schirmer
|
|
** Feldstrasse 118
|
|
** D-24105 Kiel
|
|
** Germany
|
|
**
|
|
** e-mail : hsc@techfak.uni-kiel.de
|
|
**
|
|
** This file is part of the GRX graphics library.
|
|
**
|
|
** The GRX graphics library is free software; you can redistribute it
|
|
** and/or modify it under some conditions; see the "copying.grx" file
|
|
** for details.
|
|
**
|
|
** This library is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
**
|
|
**/
|
|
|
|
#ifndef __LIBBCC_H
|
|
#define __LIBBCC_H
|
|
|
|
/* Version number, read as
|
|
0x20a v2.0 alpha
|
|
0x21b v2.1 beta
|
|
0x230 v2.3 offical release */
|
|
#define __BCC2GRX__ 0x22b
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef TRUE
|
|
# define TRUE (1==1)
|
|
#endif
|
|
#ifndef FALSE
|
|
# define FALSE (1==0)
|
|
#endif
|
|
|
|
#ifndef near /* get rid of these stupid keywords */
|
|
#define near
|
|
#endif
|
|
#ifndef far
|
|
#define far
|
|
#endif
|
|
#ifndef huge
|
|
#define huge
|
|
#endif
|
|
|
|
#define grOk 0
|
|
#define grNoInitGraph -1
|
|
#define grNotDetected -2
|
|
#define grFileNotFound -3
|
|
#define grInvalidDriver -4
|
|
#define grNoLoadMem -5
|
|
#define grNoScanMem -6
|
|
#define grNoFloodMem -7
|
|
#define grFontNotFound -8
|
|
#define grNoFontMem -9
|
|
#define grInvalidMode -10
|
|
#define grError -11
|
|
#define grIOerror -12
|
|
#define grInvalidFont -13
|
|
#define grInvalidFontNum -14
|
|
#define grInvalidVersion -18
|
|
|
|
#define DETECT (-2)
|
|
#define DETECT_PAS (0)
|
|
#define NATIVE_GRX (-3)
|
|
#define CURRENT_DRIVER (-1)
|
|
#define VGA ( 9)
|
|
#define EGA ( 3)
|
|
#define IBM8514 ( 6)
|
|
#define HERCMONO ( 7)
|
|
#define EGA64 ( 4)
|
|
#define EGAMONO ( 5)
|
|
#define CGA ( 1)
|
|
#define MCGA ( 2)
|
|
#define ATT400 ( 8)
|
|
#define PC3270 (10)
|
|
/* driver definitions from BC++ 4.5 : */
|
|
#define DETECTX (DETECT)
|
|
#define VGA256 (11)
|
|
#define ATTDEB (12)
|
|
#define TOSHIBA (13)
|
|
#define SVGA16 (14)
|
|
#define SVGA256 (15)
|
|
#define SVGA32K (16)
|
|
#define SVGA64K (17)
|
|
#define VESA16 (18)
|
|
#define VESA256 (19)
|
|
#define VESA32K (20)
|
|
#define VESA64K (21)
|
|
#define VESA16M (22)
|
|
#define ATI16 (23)
|
|
#define ATI256 (24)
|
|
#define ATI32K (25)
|
|
#define COMPAQ (26)
|
|
#define TSENG316 (27)
|
|
#define TSENG3256 (28)
|
|
#define TSENG416 (29)
|
|
#define TSENG4256 (30)
|
|
#define TSENG432K (31)
|
|
#define GENOA5 (32)
|
|
#define GENOA6 (33)
|
|
#define OAK (34)
|
|
#define PARADIS16 (35)
|
|
#define PARADIS256 (36)
|
|
#define TECMAR (37)
|
|
#define TRIDENT16 (38)
|
|
#define TRIDENT256 (39)
|
|
#define VIDEO7 (40)
|
|
#define VIDEO7II (41)
|
|
#define S3 (42)
|
|
#define ATIGUP (43)
|
|
|
|
#define VGALO 0
|
|
#define VGAMED 1
|
|
#define VGAHI 2
|
|
#define IBM8514LO 0
|
|
#define IBM8514HI 1
|
|
#define HERCMONOHI 0
|
|
#define CGAC0 0
|
|
#define CGAC1 1
|
|
#define CGAC2 2
|
|
#define CGAC3 3
|
|
#define CGAHI 4
|
|
#define MCGAC0 CGAC0
|
|
#define MCGAC1 CGAC1
|
|
#define MCGAC2 CGAC2
|
|
#define MCGAC3 CGAC3
|
|
#define MCGAMED CGAHI
|
|
#define MCGAHI 5
|
|
#define ATT400C0 MCGAC0
|
|
#define ATT400C1 MCGAC1
|
|
#define ATT400C2 MCGAC2
|
|
#define ATT400C3 MCGAC3
|
|
#define ATT400MED MCGAMED
|
|
#define ATT400HI MCGAHI
|
|
#define EGA64LO 0
|
|
#define EGA64HI 1
|
|
#define EGALO 0
|
|
#define EGAHI 1
|
|
#define EGAMONOHI 0
|
|
#define EGAMONOHI_PAS 3
|
|
#define PC3270HI 0
|
|
/* mode definitions from BC++ 4.5 : */
|
|
#define RES640x350 0
|
|
#define RES640x480 1
|
|
#define RES800x600 2
|
|
#define RES1024x768 3
|
|
#define RES1280x1024 4
|
|
|
|
/* NATIVE_GRX modes : */
|
|
#define GRX_DEFAULT_GRAPHICS 0
|
|
#define GRX_BIGGEST_NONINTERLACED_GRAPHICS 1
|
|
#define GRX_BIGGEST_GRAPHICS 2
|
|
#define GRX_BGI_EMULATION 3
|
|
#define __FIRST_DRIVER_SPECIFIC_MODE 4
|
|
|
|
|
|
#ifndef BLACK
|
|
# define BLACK 0
|
|
#endif
|
|
#ifndef BLUE
|
|
# define BLUE 1
|
|
#endif
|
|
#ifndef GREEN
|
|
# define GREEN 2
|
|
#endif
|
|
#ifndef CYAN
|
|
# define CYAN 3
|
|
#endif
|
|
#ifndef RED
|
|
# define RED 4
|
|
#endif
|
|
#ifndef MAGENTA
|
|
# define MAGENTA 5
|
|
#endif
|
|
#ifndef BROWN
|
|
# define BROWN 6
|
|
#endif
|
|
#ifndef LIGHTGRAY
|
|
# define LIGHTGRAY 7
|
|
#endif
|
|
#ifndef DARKGRAY
|
|
# define DARKGRAY 8
|
|
#endif
|
|
#ifndef LIGHTBLUE
|
|
# define LIGHTBLUE 9
|
|
#endif
|
|
#ifndef LIGHTGREEN
|
|
# define LIGHTGREEN 10
|
|
#endif
|
|
#ifndef LIGHTCYAN
|
|
# define LIGHTCYAN 11
|
|
#endif
|
|
#ifndef LIGHTRED
|
|
# define LIGHTRED 12
|
|
#endif
|
|
#ifndef LIGHTMAGENTA
|
|
# define LIGHTMAGENTA 13
|
|
#endif
|
|
#ifndef YELLOW
|
|
# define YELLOW 14
|
|
#endif
|
|
#ifndef WHITE
|
|
# define WHITE (__gr_White())
|
|
#endif
|
|
|
|
#define EGA_BLACK 0
|
|
#define EGA_BLUE 1
|
|
#define EGA_GREEN 2
|
|
#define EGA_RED 4
|
|
#define EGA_LIGHTBLUE 57
|
|
#define EGA_LIGHTGREEN 58
|
|
#define EGA_LIGHTRED 60
|
|
#define EGA_CYAN 3
|
|
#define EGA_LIGHTCYAN 59
|
|
#define EGA_MAGENTA 5
|
|
#define EGA_LIGHTMAGENTA 61
|
|
#define EGA_BROWN 20
|
|
#define EGA_LIGHTGRAY 7
|
|
#define EGA_DARKGRAY 56
|
|
#define EGA_YELLOW 62
|
|
#define EGA_WHITE 63
|
|
|
|
#define SOLID_LINE 0
|
|
#define DOTTED_LINE 1
|
|
#define CENTER_LINE 2
|
|
#define DASHED_LINE 3
|
|
#define USERBIT_LINE 4
|
|
|
|
#define NORM_WIDTH 1
|
|
#define THICK_WIDTH 3
|
|
|
|
#define DEFAULT_FONT 0 /* 8x8 bit mapped font */
|
|
#define TRIPLEX_FONT 1
|
|
#define SMALL_FONT 2
|
|
#define SANS_SERIF_FONT 3
|
|
#define GOTHIC_FONT 4
|
|
#define SCRIPT_FONT 5
|
|
#define SIMPLEX_FONT 6
|
|
#define TRIPLEX_SCR_FONT 7
|
|
#define COMPLEX_FONT 8
|
|
#define EUROPEAN_FONT 9
|
|
#define BOLD_FONT 10
|
|
|
|
#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 */
|
|
};
|
|
|
|
#define COPY_PUT 0
|
|
#define XOR_PUT 1
|
|
#define OR_PUT 2
|
|
#define AND_PUT 3
|
|
#define NOT_PUT 4
|
|
|
|
#define LEFT_TEXT 0
|
|
#define CENTER_TEXT 1
|
|
#define RIGHT_TEXT 2
|
|
#define BOTTOM_TEXT 0
|
|
#define TOP_TEXT 2
|
|
|
|
#define MAXCOLORS 15
|
|
|
|
struct palettetype {
|
|
unsigned char size;
|
|
signed char colors[MAXCOLORS+1];
|
|
};
|
|
|
|
struct linesettingstype {
|
|
int linestyle;
|
|
unsigned short upattern; /* Note : BCC defines unsigned ! */
|
|
int thickness;
|
|
};
|
|
|
|
struct textsettingstype {
|
|
int font;
|
|
int direction;
|
|
int charsize;
|
|
int horiz;
|
|
int vert;
|
|
};
|
|
|
|
struct fillsettingstype {
|
|
int pattern;
|
|
int color;
|
|
};
|
|
|
|
/* This definition is compatible with the grx
|
|
definition 'int pts[][2]' used to define polygons */
|
|
struct pointtype {
|
|
int x, y;
|
|
};
|
|
|
|
struct viewporttype {
|
|
int left, top, right, bottom;
|
|
int clip;
|
|
};
|
|
|
|
struct arccoordstype {
|
|
int x, y;
|
|
int xstart, ystart, xend, yend;
|
|
};
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
/* --- Internal definitions --- */
|
|
/* --- Don't access one of these variable and functions directly! --- */
|
|
|
|
extern int __gr_Mode;
|
|
extern int __gr_INIT;
|
|
extern int __gr_MaxMode;
|
|
extern int __gr_Result;
|
|
extern int __gr_X, __gr_Y; /* graphics cursor pos */
|
|
extern int __gr_vpl, __gr_vpt, /* actual viewport */
|
|
__gr_vpr, __gr_vpb;
|
|
extern int __gr_color; /* drawing color */
|
|
extern int __gr_colorbg; /* background color */
|
|
extern int __gr_colorfill; /* fill color */
|
|
#if defined(__TURBOC__) && defined(__MSDOS__)
|
|
extern unsigned long __gr_WR; /* Write mode, type */
|
|
#else
|
|
extern unsigned int __gr_WR; /* must match GrColor */
|
|
#endif
|
|
extern int __gr_Xasp; /* Aspect ratio */
|
|
extern int __gr_Yasp;
|
|
extern int __gr_fpatno;
|
|
extern int __gr_lstyle;
|
|
extern int __gr_clip; /* actual clipping state */
|
|
extern int __gr_ADAPTER; /* Adapter used */
|
|
extern unsigned char __gr_fpatterns[][8];
|
|
extern struct palettetype __gr_EGAdef;
|
|
extern int __gr_BGI_w; /* Width, height and color */
|
|
extern int __gr_BGI_h; /* used in */
|
|
extern int __gr_BGI_c; /* GRX_BGI_EMULATION mode */
|
|
extern int __gr_TextLineStyle; /* use setlinestyle() while
|
|
plotting .chr fonts */
|
|
|
|
void __gr_set_up_modes(void);
|
|
int __gr_White(void);
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
/* --- BGI - API definitions --- */
|
|
|
|
void detectgraph(int *graphdriver,int *graphmode);
|
|
void initgraph(int *graphdriver, int *graphmode, char *pathtodriver);
|
|
void closegraph(void);
|
|
void setgraphmode(int mode);
|
|
char *getmodename( int mode_number );
|
|
void graphdefaults(void);
|
|
char *getdrivername( void );
|
|
char *grapherrormsg(int errorcode);
|
|
int getmaxx(void);
|
|
int getmaxy(void);
|
|
int getmaxcolor(void);
|
|
void getviewsettings(struct viewporttype *viewport);
|
|
void setviewport(int left, int top, int right, int bottom, int clip);
|
|
void getlinesettings(struct linesettingstype *lineinfo);
|
|
void setlinestyle(int linestyle, unsigned upattern, int thickness);
|
|
void clearviewport(void);
|
|
unsigned getpixel(int x, int y);
|
|
void putpixel(int x, int y, int color);
|
|
void bar3d(int left,int top,int right,int bottom,int depth, int topflag);
|
|
void rectangle(int left, int top, int right, int bottom);
|
|
void fillpoly(int numpoints, void *polypoints);
|
|
void fillellipse( int x, int y, int xradius, int yradius );
|
|
void getarccoords(struct arccoordstype *arccoords);
|
|
void floodfill(int x, int y, int border);
|
|
void setfillpattern( char *upattern, int color);
|
|
void setfillstyle(int pattern, int color);
|
|
void getimage(int left, int top, int right, int bottom, void *bitmap);
|
|
void putimage(int left, int top, void *bitmap, int op);
|
|
unsigned imagesize(int left, int top, int right, int bottom);
|
|
void gettextsettings(struct textsettingstype *texttypeinfo);
|
|
void settextjustify(int horiz, int vert);
|
|
void settextstyle(int font, int direction, int charsize);
|
|
void setrgbpalette(int color, int red, int green, int blue);
|
|
void setusercharsize(int multx, int divx, int multy, int divy);
|
|
void setwritemode( int mode );
|
|
void outtext(const char *textstring);
|
|
void outtextxy(int x, int y, const char *textstring);
|
|
int textheight(const char *textstring);
|
|
int textwidth(const char *textstring);
|
|
|
|
int registerbgifont(void *font);
|
|
int installuserfont(const char *name);
|
|
|
|
int getpalettesize(void);
|
|
void getpalette(struct palettetype *palette);
|
|
void setallpalette( const struct palettetype *palette);
|
|
|
|
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
/* --- BGI - API extensions --- */
|
|
|
|
extern int _bold_font, _euro_font, /* Linkable font files */
|
|
_goth_font, _lcom_font,
|
|
_litt_font, _sans_font,
|
|
_scri_font, _simp_font,
|
|
_trip_font, _tscr_font;
|
|
void set_BGI_mode(int *graphdriver, int *graphmode);
|
|
/*void set_BGI_mode_whc() declared inline */
|
|
void __getrgbpalette(int color, int *red, int *green, int *blue);
|
|
|
|
|
|
void __gr_set_libbcc_init_hooks (
|
|
int (*init) (void) ,
|
|
int (*close) (void) );
|
|
|
|
|
|
int set_BGI_print_mode ( int mode , char * dest );
|
|
|
|
extern unsigned char _dac_g256[][3]; /* 256 shading dac values */
|
|
extern unsigned char _dac_normal[][3]; /* 256 standard colors */
|
|
|
|
extern void setrgbdefaults(void);
|
|
extern void setrgbgray256(void);
|
|
int _ega_color(int egacol);
|
|
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
/* --- direct linkable API functions --- */
|
|
/* --- ( mainly for GNU Pascal Graph unit usage ) --- */
|
|
|
|
void __gr_restorecrtmode(void);
|
|
void __gr_closegraph(void);
|
|
int __gr_getgraphmode(void);
|
|
int __gr_getmaxmode(void);
|
|
void __gr_getmoderange(int gd, int *lomode, int *himode);
|
|
int __gr_graphresult(void);
|
|
int __gr_getx(void);
|
|
int __gr_gety(void);
|
|
void __gr_moveto(int x, int y);
|
|
void __gr_moverel(int dx, int dy);
|
|
int __gr_getbkcolor(void);
|
|
int __gr_getcolor(void);
|
|
void __gr_cleardevice(void);
|
|
void __gr_setbkcolor(int color);
|
|
void __gr_setcolor(int color);
|
|
void __gr_line(int x1, int y1, int x2, int y2);
|
|
void __gr_linerel(int dx, int dy);
|
|
void __gr_lineto(int x, int y);
|
|
void __gr_drawpol(int numpoints, void *polypoints, int close);
|
|
void __gr_drawpoly(int numpoints, void *polypoints);
|
|
void __gr_bar(int left, int top, int right, int bottom);
|
|
void __gr_circle(int x, int y, int radius);
|
|
void __gr_ellipse(int x,int y,int stangle,int endangle,int xradius,int yradius);
|
|
void __gr_arc(int x, int y, int stangle, int endangle, int radius);
|
|
void __gr_getaspectratio(int *xasp, int *yasp);
|
|
void __gr_setaspectratio( int xasp, int yasp );
|
|
void __gr_getfillsettings(struct fillsettingstype *fillinfo);
|
|
void __gr_getfillpattern(char *pattern);
|
|
void __gr_sector(int x,int y,int stangle,int endangle,int xradius,int yradius);
|
|
void __gr_pieslice(int x, int y, int stangle, int endangle, int radius);
|
|
unsigned __gr_setgraphbufsize(unsigned bufsize);
|
|
struct palettetype *__gr_getdefaultpalette(void);
|
|
int __gr_installbgidriver(char *name, void *detect);
|
|
int __gr_registerfarbgidriver(void *driver);
|
|
int __gr_registerfarbgifont(void *font);
|
|
void __gr_textlinestyle(int on);
|
|
void __gr_setpalette(int colornum, int color);
|
|
int __gr_getvisualpage(void);
|
|
void __gr_setvisualpage(int p);
|
|
int __gr_getactivepage(void);
|
|
void __gr_setactivepage(int p);
|
|
int __gr_setrgbcolor(int r, int g, int b);
|
|
int __gr_getmodemaxy(int mode);
|
|
int __gr_getmodemaxx(int mode);
|
|
int __gr_getmodemaxcolor(int mode);
|
|
void __gr_set_BGI_mode_whc(int *gd, int *gm, int width, int height, int colors);
|
|
int __gr_get_BGI_mode_pages(void);
|
|
void __gr_set_BGI_mode_pages(int p);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
/* --- API functions with macro equivalents --- */
|
|
/* --- (for inlining) --- */
|
|
/* ----------------------------------------------------------------- */
|
|
void restorecrtmode(void);
|
|
int getgraphmode(void);
|
|
int getmaxmode(void);
|
|
void getmoderange(int gd, int *lomode, int *himode);
|
|
int graphresult(void);
|
|
int getx(void);
|
|
int gety(void);
|
|
void moveto(int x, int y);
|
|
void moverel(int dx, int dy);
|
|
int getbkcolor(void);
|
|
int getcolor(void);
|
|
void cleardevice(void);
|
|
void setbkcolor(int color);
|
|
void setcolor(int color);
|
|
void line(int x1, int y1, int x2, int y2);
|
|
void linerel(int dx, int dy);
|
|
void lineto(int x, int y);
|
|
void drawpoly(int numpoints, void *polypoints);
|
|
void bar(int left, int top, int right, int bottom);
|
|
void circle(int x, int y, int radius);
|
|
void ellipse( int x, int y, int stangle, int endangle,
|
|
int xradius, int yradius );
|
|
void arc(int x, int y, int stangle, int endangle, int radius);
|
|
void getaspectratio(int *xasp, int *yasp);
|
|
void setaspectratio( int xasp, int yasp );
|
|
void getfillsettings(struct fillsettingstype *fillinfo);
|
|
void getfillpattern(char *pattern);
|
|
void sector( int x, int y, int stangle, int endangle,
|
|
int xradius, int yradius );
|
|
void pieslice(int x, int y, int stangle, int endangle, int radius);
|
|
unsigned setgraphbufsize(unsigned bufsize);
|
|
struct palettetype *getdefaultpalette(void);
|
|
int installbgidriver(char *name, void *detect);
|
|
int registerfarbgidriver(void *driver);
|
|
int registerfarbgifont(void *font);
|
|
void textlinestyle(int on);
|
|
void setpalette(int colornum, int color);
|
|
void set_BGI_mode_pages(int p);
|
|
int get_BGI_mode_pages(void);
|
|
void set_BGI_mode_whc(int *gd, int *gm, int width, int height, int colors);
|
|
int getmodemaxcolor(int mode);
|
|
int getmodemaxx(int mode);
|
|
int getmodemaxy(int mode);
|
|
int setrgbcolor(int r, int g, int b);
|
|
void setactivepage(int p);
|
|
int getactivepage(void);
|
|
void setvisualpage(int p);
|
|
int getvisualpage(void);
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
#define restorecrtmode() __gr_restorecrtmode()
|
|
#define getgraphmode() (__gr_INIT ? __gr_Mode : (__gr_Result=grNoInitGraph))
|
|
#define getmaxmode() (__gr_set_up_modes(), __gr_MaxMode)
|
|
#define getmoderange(gd, lomode, himode) \
|
|
__gr_getmoderange((gd),(lomode),(himode))
|
|
#define graphresult() __gr_graphresult()
|
|
#define getx() (__gr_X+0)
|
|
#define gety() (__gr_Y+0)
|
|
#define moveto(x, y) do { __gr_X = (x); __gr_Y = (y); } while(0)
|
|
#define moverel(dx, dy) moveto(getx()+(dx),gety()+(dy))
|
|
#define getbkcolor() (__gr_colorbg+0)
|
|
#define getcolor() (__gr_color+0)
|
|
#define cleardevice() __gr_cleardevice()
|
|
#define setbkcolor(color) do __gr_colorbg = (color); while(0)
|
|
#define setcolor(color) do __gr_color = (color); while(0)
|
|
#define line(x1, y1, x2, y2) __gr_line((x1),(y1),(x2),(y2))
|
|
#define linerel(dx, dy) __gr_line(getx(),gety(),getx()+(dx),gety()+(dy))
|
|
#define lineto(x, y) __gr_line(getx(),gety(),(x),(y))
|
|
#define drawpoly(numpoints, polypoints) \
|
|
__gr_drawpol((numpoints), (polypoints), FALSE)
|
|
#define bar(left, top, right, bottom) __gr_bar((left),(top),(right),(bottom))
|
|
#define circle(x, y, radius) __gr_circle((x),(y),(radius))
|
|
#define ellipse(x, y, stangle, endangle, xradius, yradius) \
|
|
__gr_ellipse((x),(y),(stangle),(endangle),(xradius),(yradius))
|
|
/* arc() uses radius twice */
|
|
#define getaspectratio(xasp, yasp) \
|
|
do { *(xasp) = __gr_Xasp; *(yasp) = __gr_Yasp; } while(0)
|
|
#define setaspectratio(xasp, yasp ) \
|
|
do { __gr_Xasp = (xasp); __gr_Yasp = (yasp); } while(0)
|
|
/* getfillsettings() uses fillinfo twice */
|
|
#define getfillpattern(pattern) __gr_getfillpattern(pattern)
|
|
#define sector(x, y, stangle, endangle, xradius, yradius) \
|
|
__gr_sector((x),(y),(stangle),(endangle),(xradius), (yradius));
|
|
/* pieslice() uses radius twice */
|
|
#define setgraphbufsize(bufsize) __gr_setgraphbufsize(bufsize)
|
|
#define getdefaultpalette() (&__gr_EGAdef)
|
|
#define installbgidriver(name, detect) __gr_installbgidriver((name), (detect))
|
|
#define registerfarbgidriver(driver) __gr_registerfarbgidriver(driver)
|
|
#define registerfarbgifont(font) registerbgifont(font)
|
|
#define textlinestyle(on) do __gr_TextLineStyle = on; while(0);
|
|
#define setpalette(colornum, color) __gr_setpalette((colornum),(color))
|
|
#define set_BGI_mode_pages(p) __gr_set_BGI_mode_pages(p)
|
|
#define get_BGI_mode_pages() __gr_get_BGI_mode_pages()
|
|
#define set_BGI_mode_whc(gd, gm, width, height, colors) \
|
|
do { \
|
|
__gr_set_BGI_mode_pages(1); \
|
|
__gr_BGI_w = (width); \
|
|
__gr_BGI_h = (height); \
|
|
__gr_BGI_c = (colors); \
|
|
*(gd) = NATIVE_GRX; \
|
|
*(gm) = GRX_BGI_EMULATION; \
|
|
} while(0)
|
|
#define getmodemaxcolor(mode) __gr_getmodemaxcolor(mode)
|
|
#define getmodemaxx(mode) __gr_getmodemaxx(mode)
|
|
#define getmodemaxy(mode) __gr_getmodemaxx(mode)
|
|
#define setrgbcolor(r, g, b) __gr_setrgbcolor((r),(g),(b))
|
|
#define setactivepage(p) __gr_setactivepage(p)
|
|
#define getactivepage() __gr_getactivepage()
|
|
#define setvisualpage(p) __gr_setvisualpage(p)
|
|
#define getvisualpage() __gr_getvisualpage()
|
|
|
|
#ifdef __BCCGRX_C
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (restorecrtmode)(void) {
|
|
__gr_restorecrtmode();
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getgraphmode)(void) {
|
|
return (__gr_INIT ? __gr_Mode : (__gr_Result=grNoInitGraph));
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getmaxmode)(void) {
|
|
__gr_set_up_modes();
|
|
return __gr_MaxMode;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (getmoderange)(int gd, int *lomode, int *himode) {
|
|
__gr_getmoderange(gd, lomode, himode);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (graphresult)(void) {
|
|
return __gr_graphresult();
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getx)(void) {
|
|
return __gr_X;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (gety)(void) {
|
|
return __gr_Y;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (moveto)(int x, int y) {
|
|
__gr_X = x; __gr_Y = y;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (moverel)(int dx, int dy) {
|
|
moveto( getx()+dx, gety()+dy);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getbkcolor)(void) {
|
|
return __gr_colorbg;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getcolor)(void) {
|
|
return __gr_color;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (cleardevice)(void) {
|
|
__gr_cleardevice();
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (setbkcolor)(int color) {
|
|
__gr_colorbg= color;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (setcolor)(int color) {
|
|
__gr_color= color;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (line)(int x1, int y1, int x2, int y2) {
|
|
__gr_line(x1,y1,x2,y2);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (linerel)(int dx, int dy) {
|
|
register int x = getx();
|
|
register int y = gety();
|
|
__gr_line(x,y,x+dx,y+dy);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (lineto)(int x, int y) {
|
|
__gr_line( getx(), gety(), x, y);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (drawpoly)(int numpoints, void *polypoints) {
|
|
__gr_drawpol(numpoints, polypoints, FALSE);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (bar)(int left, int top, int right, int bottom) {
|
|
__gr_bar(left,top,right, bottom);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (circle)(int x, int y, int radius) {
|
|
__gr_circle(x,y,radius);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (ellipse)( int x, int y, int stangle, int endangle,
|
|
int xradius, int yradius ) {
|
|
__gr_ellipse( x, y, stangle, endangle, xradius, yradius);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (arc)(int x, int y, int stangle, int endangle, int radius) {
|
|
__gr_ellipse(x,y,stangle,endangle,radius,radius);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (getaspectratio)(int *xasp, int *yasp) {
|
|
*xasp = __gr_Xasp; *yasp = __gr_Yasp;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (setaspectratio)( int xasp, int yasp ) {
|
|
__gr_Xasp = xasp; __gr_Yasp = yasp;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (getfillsettings)(struct fillsettingstype *fillinfo) {
|
|
fillinfo->pattern = __gr_fpatno;
|
|
fillinfo->color = __gr_colorfill;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (getfillpattern)(char *pattern) {
|
|
__gr_getfillpattern(pattern);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (sector)( int x, int y, int stangle, int endangle,
|
|
int xradius, int yradius ) {
|
|
__gr_sector(x,y,stangle,endangle,xradius, yradius);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (pieslice)(int x, int y, int stangle, int endangle, int radius) {
|
|
__gr_sector(x,y,stangle,endangle,radius,radius);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
unsigned (setgraphbufsize)(unsigned bufsize) {
|
|
return __gr_setgraphbufsize(bufsize);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
struct palettetype *(getdefaultpalette)(void) {
|
|
return &__gr_EGAdef;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (installbgidriver)(char *name, void *detect) {
|
|
return __gr_installbgidriver(name, detect);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (registerfarbgidriver)(void *driver) {
|
|
return __gr_registerfarbgidriver(driver);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (registerfarbgifont)(void *font) {
|
|
return registerbgifont(font);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (textlinestyle)(int on) {
|
|
__gr_TextLineStyle = on;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (setpalette)(int colornum, int color) {
|
|
__gr_setpalette(colornum,color);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (set_BGI_mode_pages)(int p) {
|
|
__gr_set_BGI_mode_pages(p);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (get_BGI_mode_pages)(void) {
|
|
return __gr_get_BGI_mode_pages();
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (set_BGI_mode_whc)(int *gd, int *gm, int width, int height, int colors) {
|
|
__gr_set_BGI_mode_pages(1);
|
|
__gr_BGI_w = width;
|
|
__gr_BGI_h = height;
|
|
__gr_BGI_c = colors;
|
|
*gd = NATIVE_GRX;
|
|
*gm = GRX_BGI_EMULATION;
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getmodemaxcolor)(int mode) {
|
|
/* works like getmaxcolor() for mode */
|
|
return __gr_getmodemaxcolor(mode);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getmodemaxx)(int mode) {
|
|
/* works like getmaxx() for mode */
|
|
return __gr_getmodemaxx(mode);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getmodemaxy)(int mode) {
|
|
/* works like getmaxy() for mode */
|
|
return __gr_getmodemaxx(mode);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (setrgbcolor)(int r, int g, int b) {
|
|
return __gr_setrgbcolor(r,g,b);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (setactivepage)(int p) {
|
|
__gr_setactivepage(p);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getactivepage)(void) {
|
|
return __gr_getactivepage();
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
void (setvisualpage)(int p) {
|
|
__gr_setvisualpage(p);
|
|
}
|
|
|
|
/* ----------------------------------------------------------------- */
|
|
int (getvisualpage)(void) {
|
|
return __gr_getvisualpage();
|
|
}
|
|
|
|
#endif /* __BCCGRX_C */
|
|
/* ----------------------------------------------------------------- */
|
|
|
|
#endif
|