- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
(extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
BT game source (never mixed into CODE/). Round 1-3 state:
* 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
(BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
since 1996.
* BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
its binary-recorded line 400 exactly.
* BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
(Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
TeamScore=12 flagged [T4]).
* MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
(VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
the period compiler is the drift detector).
* Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
(per-TU verification sweep under authentic OPT.MAK flags).
* README: corrected roadmap - MECH.HPP is the capstone grown with the mech
TU reconstructions; BTREG.CPP green = the header-family milestone.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
505 lines
16 KiB
C++
505 lines
16 KiB
C++
/* graphics.h
|
|
|
|
Definitions for Graphics Package.
|
|
|
|
*/
|
|
|
|
/*
|
|
* C/C++ Run Time Library - Version 6.5
|
|
*
|
|
* Copyright (c) 1987, 1994 by Borland International
|
|
* All Rights Reserved.
|
|
*
|
|
*/
|
|
|
|
#if !defined(__GRAPHICS_H)
|
|
#define __GRAPHICS_H
|
|
|
|
#if defined( _Windows ) && !defined (__DPMI16__) && !defined(__DPMI32__)
|
|
#error BGI graphics not supported under Windows
|
|
#endif
|
|
|
|
#if defined(__STDC__)
|
|
#error BGI graphics not ANSI compatible
|
|
#endif
|
|
|
|
#if !defined(___DEFS_H)
|
|
#include <_defs.h>
|
|
#endif
|
|
|
|
#if !defined(_BGIENTRY)
|
|
#if defined(__DPMI16__)
|
|
#define _BGIENTRY __pascal
|
|
#elif defined(__DPMI32__)
|
|
#define _BGIENTRY _RTLENTRY __import
|
|
#else
|
|
#define _BGIENTRY _RTLENTRY
|
|
#endif
|
|
#endif
|
|
|
|
#if defined(__DPMI32__)
|
|
#define far
|
|
#define huge
|
|
#endif
|
|
|
|
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 */
|
|
};
|
|
|
|
|
|
#if defined(__DPMI32__)
|
|
/* graphicx.h
|
|
|
|
Extended Definitions for Graphics Package.
|
|
|
|
*/
|
|
|
|
|
|
enum Xgraphics_drivers { /* define extended graphics drivers */
|
|
DETECTX = 256,
|
|
VGA256 = 11,
|
|
ATTDEB = 12,
|
|
TOSHIBA = 13,
|
|
|
|
SVGA16 = 14,
|
|
SVGA256 = 15,
|
|
SVGA32K = 16,
|
|
SVGA64K = 17,
|
|
|
|
VESA16 = 18,
|
|
VESA256 = 19,
|
|
VESA32K = 20,
|
|
VESA64K = 21,
|
|
VESA16M = 22,
|
|
|
|
ATI16 = 23,
|
|
ATI256 = 24,
|
|
ATI32K = 25,
|
|
COMPAQ = 26,
|
|
TSENG316 = 27,
|
|
TSENG3256 = 28,
|
|
TSENG416 = 29,
|
|
TSENG4256 = 30,
|
|
TSENG432K = 31,
|
|
GENOA5 = 32,
|
|
GENOA6 = 33,
|
|
OAK = 34,
|
|
PARADIS16 = 35,
|
|
PARADIS256 = 36,
|
|
TECMAR = 37,
|
|
TRIDENT16 = 38,
|
|
TRIDENT256 = 39,
|
|
VIDEO7 = 40,
|
|
VIDEO7II = 41,
|
|
|
|
S3 = 42,
|
|
ATIGUP = 43
|
|
|
|
};
|
|
|
|
enum Xgraphics_modes { /* graphics modes for each driver */
|
|
RES640x350 = 0,
|
|
RES640x480 = 1,
|
|
RES800x600 = 2,
|
|
RES1024x768 = 3,
|
|
RES1280x1024 = 4,
|
|
};
|
|
|
|
|
|
#endif /* !__DPMI32__ */
|
|
|
|
|
|
/* 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,
|
|
SCRIPT_FONT = 5,
|
|
SIMPLEX_FONT = 6,
|
|
TRIPLEX_SCR_FONT = 7,
|
|
COMPLEX_FONT = 8,
|
|
EUROPEAN_FONT = 9,
|
|
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 */
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if defined(__DPMI16__)
|
|
void _bgilink (void);
|
|
#pragma extref _bgilink
|
|
#endif
|
|
|
|
void far _BGIENTRY arc(int __x, int __y, int __stangle, int __endangle,
|
|
int __radius);
|
|
void far _BGIENTRY bar(int __left, int __top, int __right, int __bottom);
|
|
void far _BGIENTRY bar3d(int __left, int __top, int __right, int __bottom,
|
|
int __depth, int __topflag);
|
|
void far _BGIENTRY circle(int __x, int __y, int __radius);
|
|
void far _BGIENTRY cleardevice(void);
|
|
void far _BGIENTRY clearviewport(void);
|
|
void far _BGIENTRY closegraph(void);
|
|
void far _BGIENTRY detectgraph(int far *__graphdriver,int far *__graphmode);
|
|
void far _BGIENTRY drawpoly(int __numpoints, const int far *__polypoints);
|
|
void far _BGIENTRY ellipse(int __x, int __y, int __stangle, int __endangle,
|
|
int __xradius, int __yradius);
|
|
void far _BGIENTRY fillellipse( int __x, int __y, int __xradius, int __yradius );
|
|
void far _BGIENTRY fillpoly(int __numpoints, const int far *__polypoints);
|
|
void far _BGIENTRY floodfill(int __x, int __y, int __border);
|
|
void far _BGIENTRY getarccoords(struct arccoordstype far *__arccoords);
|
|
void far _BGIENTRY getaspectratio(int far *__xasp, int far *__yasp);
|
|
int far _BGIENTRY getbkcolor(void);
|
|
int far _BGIENTRY getcolor(void);
|
|
struct palettetype far * far _BGIENTRY getdefaultpalette( void );
|
|
char * far _BGIENTRY getdrivername( void );
|
|
void far _BGIENTRY getfillpattern(char far *__pattern);
|
|
void far _BGIENTRY getfillsettings(struct fillsettingstype far *__fillinfo);
|
|
int far _BGIENTRY getgraphmode(void);
|
|
void far _BGIENTRY getimage(int __left, int __top, int __right, int __bottom,
|
|
void far *__bitmap);
|
|
void far _BGIENTRY getlinesettings(struct linesettingstype far *__lineinfo);
|
|
int far _BGIENTRY getmaxcolor(void);
|
|
int far _BGIENTRY getmaxmode(void);
|
|
int far _BGIENTRY getmaxx(void);
|
|
int far _BGIENTRY getmaxy(void);
|
|
char * far _BGIENTRY getmodename( int __mode_number );
|
|
void far _BGIENTRY getmoderange(int __graphdriver, int far *__lomode,
|
|
int far *__himode);
|
|
unsigned far _BGIENTRY getpixel(int __x, int __y);
|
|
void far _BGIENTRY getpalette(struct palettetype far *__palette);
|
|
int far _BGIENTRY getpalettesize( void );
|
|
void far _BGIENTRY gettextsettings(struct textsettingstype far *__texttypeinfo);
|
|
void far _BGIENTRY getviewsettings(struct viewporttype far *__viewport);
|
|
int far _BGIENTRY getx(void);
|
|
int far _BGIENTRY gety(void);
|
|
void far _BGIENTRY graphdefaults(void);
|
|
char * far _BGIENTRY grapherrormsg(int __errorcode);
|
|
void far _BGIENTRY _graphfreemem(void far *__ptr, unsigned __size);
|
|
void far * far _BGIENTRY _graphgetmem(unsigned __size);
|
|
int far _BGIENTRY graphresult(void);
|
|
unsigned far _BGIENTRY imagesize(int __left, int __top, int __right, int __bottom);
|
|
void far _BGIENTRY initgraph(int far *__graphdriver,
|
|
int far *__graphmode,
|
|
const char far *__pathtodriver);
|
|
int far _BGIENTRY installuserdriver(const char far *__name,
|
|
int huge (*detect)(void));
|
|
int far _BGIENTRY installuserfont(const char far *__name);
|
|
void far _BGIENTRY line(int __x1, int __y1, int __x2, int __y2);
|
|
void far _BGIENTRY linerel(int __dx, int __dy);
|
|
void far _BGIENTRY lineto(int __x, int __y);
|
|
void far _BGIENTRY moverel(int __dx, int __dy);
|
|
void far _BGIENTRY moveto(int __x, int __y);
|
|
void far _BGIENTRY outtext(const char far *__textstring);
|
|
void far _BGIENTRY outtextxy(int __x, int __y, const char far *__textstring);
|
|
void far _BGIENTRY pieslice(int __x, int __y, int __stangle, int __endangle,
|
|
int __radius);
|
|
void far _BGIENTRY putimage(int __left, int __top, const void far *__bitmap,
|
|
int __op);
|
|
void far _BGIENTRY putpixel(int __x, int __y, int __color);
|
|
void far _BGIENTRY rectangle(int __left, int __top, int __right, int __bottom);
|
|
void far _BGIENTRY restorecrtmode(void);
|
|
void far _BGIENTRY sector(int __X, int __Y, int __StAngle, int __EndAngle,
|
|
int __XRadius, int __YRadius);
|
|
void far _BGIENTRY setactivepage(int __page);
|
|
void far _BGIENTRY setallpalette(const struct palettetype far *__palette);
|
|
void far _BGIENTRY setaspectratio(int __xasp, int __yasp);
|
|
void far _BGIENTRY setbkcolor(int __color);
|
|
void far _BGIENTRY setcolor(int __color);
|
|
void far _BGIENTRY setfillpattern(const char far *__upattern, int __color);
|
|
void far _BGIENTRY setfillstyle(int __pattern, int __color);
|
|
unsigned far _BGIENTRY setgraphbufsize(unsigned __bufsize);
|
|
void far _BGIENTRY setgraphmode(int __mode);
|
|
void far _BGIENTRY setlinestyle(int __linestyle, unsigned __upattern,
|
|
int __thickness);
|
|
void far _BGIENTRY setpalette(int __colornum, int __color);
|
|
void far _BGIENTRY setrgbpalette(int __colornum,
|
|
int __red, int __green, int __blue);
|
|
void far _BGIENTRY settextjustify(int __horiz, int __vert);
|
|
void far _BGIENTRY settextstyle(int __font, int __direction, int __charsize);
|
|
void far _BGIENTRY setusercharsize(int __multx, int __divx,
|
|
int __multy, int __divy);
|
|
void far _BGIENTRY setviewport(int __left, int __top, int __right, int __bottom,
|
|
int __clip);
|
|
void far _BGIENTRY setvisualpage(int __page);
|
|
void far _BGIENTRY setwritemode( int __mode );
|
|
int far _BGIENTRY textheight(const char far *__textstring);
|
|
int far _BGIENTRY textwidth(const char far *__textstring);
|
|
|
|
/***** graphics drivers *****/
|
|
|
|
int _BGIENTRY registerbgidriver(void (*driver)(void));
|
|
|
|
#if defined(__DPMI16__) || defined(__DPMI32__)
|
|
#define registerfarbgidriver registerbgidriver
|
|
#else
|
|
int far _BGIENTRY registerfarbgidriver(void far *__driver);
|
|
#endif
|
|
|
|
/* !! These "functions" are NOT user-callable !! */
|
|
/* !! They are there just so you can link in graphics drivers !! */
|
|
|
|
void _RTLENTRY CGA_driver(void);
|
|
void _RTLENTRY EGAVGA_driver(void);
|
|
void _RTLENTRY IBM8514_driver(void);
|
|
void _RTLENTRY Herc_driver(void);
|
|
void _RTLENTRY ATT_driver(void);
|
|
void _RTLENTRY PC3270_driver(void);
|
|
|
|
#if defined(__DPMI16__)
|
|
void _RTLENTRY CGA_driver_far(void);
|
|
void _RTLENTRY EGAVGA_driver_far(void);
|
|
void _RTLENTRY IBM8514_driver_far(void);
|
|
void _RTLENTRY Herc_driver_far(void);
|
|
void _RTLENTRY ATT_driver_far(void);
|
|
void _RTLENTRY PC3270_driver_far(void);
|
|
#else
|
|
extern int far _RTLENTRY CGA_driver_far[];
|
|
extern int far _RTLENTRY EGAVGA_driver_far[];
|
|
extern int far _RTLENTRY IBM8514_driver_far[];
|
|
extern int far _RTLENTRY Herc_driver_far[];
|
|
extern int far _RTLENTRY ATT_driver_far[];
|
|
extern int far _RTLENTRY PC3270_driver_far[];
|
|
#endif
|
|
|
|
/***** graphics fonts *****/
|
|
|
|
int _BGIENTRY registerbgifont(void (*font)(void));
|
|
|
|
#if defined(__DPMI16__) || defined(__DPMI32__)
|
|
#define registerfarbgifont registerbgifont
|
|
#else
|
|
int far _BGIENTRY registerfarbgifont(void far *__font);
|
|
#endif
|
|
|
|
/* !! These "functions" are NOT user-callable, !! */
|
|
/* !! they are there just so you can link in fonts !! */
|
|
|
|
void _RTLENTRY triplex_font(void);
|
|
void _RTLENTRY small_font(void);
|
|
void _RTLENTRY sansserif_font(void);
|
|
void _RTLENTRY gothic_font(void);
|
|
|
|
extern int far _RTLENTRY triplex_font_far[];
|
|
extern int far _RTLENTRY small_font_far[];
|
|
extern int far _RTLENTRY sansserif_font_far[];
|
|
extern int far _RTLENTRY gothic_font_far[];
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|