home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Taifun Collection
/
Taifun_Collection_Vol_1.iso
/
richter
/
8353
/
8353.mhs
/
RICHTER.DTP
/
C_LIBRAR
/
VGA256.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-20
|
88KB
|
1,470 lines
/*/////////////////////////////////////////////////////////////////////////*/
/* */
/* H E A D E R Z U R L I B R A R Y F Ü R D E N */
/* */
/* 256 - Farben - VGA - Grafikmodus mit 4 Bildschirmseiten */
/* */
/*-------------------------------------------------------------------------*/
/* (C) 1991, Richard KOCH, H.Öschlgasse 19/4/1, A-3430 TULLN */
/*/////////////////////////////////////////////////////////////////////////*/
/*#########################################################################*/
/*###################### G L O B A L E T Y P E N ########################*/
/*#########################################################################*/
typedef unsigned char fontarray8 [256][8];
typedef unsigned char fontarray16[256][16];
typedef unsigned char palarray[256][3];
typedef struct arcuskoord
{
int X, Y;
int XStart, YStart, XEnd, YEnd;
};
typedef struct ellipskoord
{
int X, Y;
int XStart, YStart, XEnd, YEnd;
};
typedef struct linevar
{
int Thickness;
};
typedef struct textvar
{
int Horiz, Vert;
int Font;
};
typedef struct viewportvar
{
unsigned int X1, Y1, X2, Y2;
int Clip;
};
typedef struct pcxheader
{
unsigned char PCX_ID;
unsigned char PCXVersion;
unsigned char Encoding;
unsigned char BitsPerPixel;
unsigned int X1,Y1,X2,Y2;
unsigned int HorizRes;
unsigned int VertRes;
unsigned char ColorMap[16][3];
unsigned char Reserved;
unsigned char BitPlanes;
unsigned int BytesPerRow;
unsigned int Palette;
unsigned char EmptyBytes[58];
};
typedef struct buttonstyle
{
unsigned int X1, Y1; /* linke obere Ecke */
unsigned int Width; /* Breite */
unsigned int Height; /* Höhe */
signed char Status; /* akuelle Stellung */
char far *Title; /* Titel d. Knopfes */
};
/*#########################################################################*/
/*#################### G L O B A L E V A R I A B L E ####################*/
/*#########################################################################*/
extern palarray ActPal; /* nimmt die aktive Palette auf */
extern int HorizScroll;/* fürs Flackern bei Scrolling */
/*#########################################################################*/
/*################## G L O B A L E K O N S T A N T E ####################*/
/*#########################################################################*/
#define RECHTS 1,0 /* */
#define LINKS -1,0 /* */
#define UNTEN 0,1 /* */
#define OBEN 0,-1 /* */
#define RE_UNTEN 1,1 /* für's Scrollen */
#define RE_OBEN 1,-1 /* */
#define LI_OBEN -1,-1 /* */
#define LI_UNTEN -1,1 /* */
#define FULL 0,0,319,199,1 /* für ViewPort */
#define NO_CLIP 0,0 /* */
#define CLIP_RIGHT 1,0 /* für das Zeigen*/
#define CLIP_BOTTOM 0,1 /* von PCX-Bil- */
#define CLIP_BOTH 1,1 /* dern. */
/*-------------------------------------------------------------------------*/
enum ON_OFF { OFF, ON };
/*-------------------------------------------------------------------------*/
enum SAVE { NO_SAVE, SAVE };
/*-------------------------------------------------------------------------*/
enum EXIT { NO_EXIT, EXIT };
/*-------------------------------------------------------------------------*/
enum CHANGES { NO_CHANGE, CHANGE };
/*-------------------------------------------------------------------------*/
enum LAYOUT_MODES { VERT = 0,
ALL = 0,
HORIZ = 1,
DIAGON = 2 };
/*-------------------------------------------------------------------------*/
enum DIRECTIONS { LEFT = -1,
CENTER = 0,
RIGHT = 1,
TOP = -1,
BOTTOM = 1,
UP = 1,
DOWN = 0 };
/*-------------------------------------------------------------------------*/
enum CLIP_MODES { CLIPNEIN,
CLIPJA };
/*-------------------------------------------------------------------------*/
enum CHANGE_MODES { SOFT = -1, PENG, VERYSOFT };
/*-------------------------------------------------------------------------*/
enum HOLD_OR_FREE_MEM { FREE, HOLD };
/*-------------------------------------------------------------------------*/
enum CARET_BLINK { SLOW = 20,
MEDIUM = 9,
FAST = 3 };
/*-------------------------------------------------------------------------*/
enum CARET_TYPES { BLOCK,V_LINE,U_LINE };
/*-------------------------------------------------------------------------*/
enum BUTTON { PRESS = -1,
BOTH = 0,
RELEASE = 1 };
/*-------------------------------------------------------------------------*/
enum BUTTON_STATUS{ RELEASED = 0,
PRESSED = 1,
INACTIVE = -1 };
/*-------------------------------------------------------------------------*/
enum WRITE_MODES { DO_COPY,
DO_AND,
DO_OR,
DO_XOR };
/*-------------------------------------------------------------------------*/
enum LINE_STYLES { NORMAL = 1,
THICK1 = 2,
THICK2 = 3 };
/*-------------------------------------------------------------------------*/
enum TEXT_STYLES { DEFAULT,
SMALL,
ROM,
LIGHT };
/*-------------------------------------------------------------------------*/
enum ERRORS { InitErr = -1,
NoVGA = -2,
LFillErr = -6,
PFillErr = -7,
FFileNotFound = -8,
FontMemErr = -9,
GenericErr = -11,
FileLoadErr = -12,
FileErr = -13,
FontNoNotDef = -14,
PicMemErr = -15,
PicLoadErr = -16,
PageLayoutErr = -17,
ActPageNotDef = -18,
VisPageNotDef = -19,
FileCreatErr = -20,
NoPCXFile = -21,
FontLoadErr = -22,
PalLoadErr = -23 };
/*-------------------------------------------------------------------------*/
enum STAND_COLORS { BK_GROUND,
N_BLUE,
N_GREEN,
N_CYAN,
N_RED,
N_MAGENTA,
N_BROWN,
N_WHITE,
N_GRAY,
L_BLUE,
L_GREEN,
L_CYAN,
L_RED,
L_MAGENTA,
N_YELLOW,
L_WHITE,
N_BLACK };
/*-------------------------------------------------------------------------*/
/* Die folgenden Konstanten gelten nur für die Farbpalette "SORTIERT.PAL"! */
/*-------------------------------------------------------------------------*/
enum GRAYS { GRAY1 = 16, GRAY2 = 17, GRAY3 = 18, GRAY4 = 19,
GRAY5 = 20, GRAY6 = 21, GRAY7 = 22, GRAY8 = 23,
GRAY9 = 24, GRAY10 = 25, GRAY11 = 26, GRAY12 = 27,
GRAY13 = 28, GRAY14 = 29, GRAY15 = 30, GRAY16 = 31 };
/*-------------------------------------------------------------------------*/
enum BLUES { BLUE1 = 32, BLUE2 = 33, BLUE3 = 34, BLUE4 = 35,
BLUE5 = 36, BLUE6 = 37, BLUE7 = 38, BLUE8 = 39,
BLUE9 = 40, BLUE10 = 41, BLUE11 = 42, BLUE12 = 43,
BLUE13 = 44, BLUE14 = 45, BLUE15 = 46, BLUE16 = 47 };
/*-------------------------------------------------------------------------*/
enum GREENS { GREEN1 = 64, GREEN2 = 65, GREEN3 = 66, GREEN4 = 67,
GREEN5 = 68, GREEN6 = 69, GREEN7 = 70, GREEN8 = 71,
GREEN9 = 72, GREEN10 = 73, GREEN11 = 74, GREEN12 = 75,
GREEN13 = 76, GREEN14 = 77, GREEN15 = 78, GREEN16 = 79 };
/*-------------------------------------------------------------------------*/
enum CYANS { CYAN1 = 96, CYAN2 = 97, CYAN3 = 98, CYAN4 = 99,
CYAN5 = 100, CYAN6 = 101, CYAN7 = 102, CYAN8 = 103,
CYAN9 = 104, CYAN10 = 105, CYAN11 = 106, CYAN12 = 107,
CYAN13 = 108, CYAN14 = 109, CYAN15 = 110, CYAN16 = 111 };
/*-------------------------------------------------------------------------*/
enum REDS { RED1 = 48, RED2 = 49, RED3 = 50, RED4 = 51,
RED5 = 52, RED6 = 53, RED7 = 54, RED8 = 55,
RED9 = 56, RED10 = 57, RED11 = 58, RED12 = 59,
RED13 = 60, RED14 = 61, RED15 = 62, RED16 = 63 };
/*-------------------------------------------------------------------------*/
enum MAGENTAS { MAG1 = 80, MAG2 = 81, MAG3 = 82, MAG4 = 83,
MAG5 = 84, MAG6 = 85, MAG7 = 86, MAG8 = 87,
MAG9 = 88, MAG10 = 89, MAG11 = 90, MAG12 = 91,
MAG13 = 92, MAG14 = 93, MAG15 = 94, MAG16 = 95 };
/*-------------------------------------------------------------------------*/
enum BROWNS { BROWN1 = 112, BROWN2 = 113, BROWN3 = 114, BROWN4 = 115,
BROWN5 = 116, BROWN6 = 117, BROWN7 = 118, BROWN8 = 119,
BROWN9 = 120, BROWN10 = 121, BROWN11 = 122, BROWN12 = 123,
BROWN13 = 124, BROWN14 = 125, BROWN15 = 126, BROWN16 = 127 };
/*-------------------------------------------------------------------------*/
enum YELLOWS { YEL1 = 128, YEL2 = 129, YEL3 = 130, YEL4 = 131,
YEL5 = 132, YEL6 = 133, YEL7 = 134, YEL8 = 135,
YEL9 = 136, YEL10 = 137, YEL11 = 138, YEL12 = 139,
YEL13 = 140, YEL14 = 141, YEL15 = 142, YEL16 = 143 };
/*-------------------------------------------------------------------------*/
enum LIGHTBLUES { LBLUE1 = 144, LBLUE2 = 145, LBLUE3 = 146, LBLUE4 = 147,
LBLUE5 = 148, LBLUE6 = 149, LBLUE7 = 150, LBLUE8 = 151,
LBLUE9 = 152, LBLUE10 = 153, LBLUE11 = 154, LBLUE12 = 155,
LBLUE13 = 156, LBLUE14 = 157, LBLUE15 = 158, LBLUE16 = 159 };
/*-------------------------------------------------------------------------*/
enum ERDEN { ERD1 = 240, ERD2 = 241, ERD3 = 242, ERD4 = 243,
ERD5 = 244, ERD6 = 245, ERD7 = 246, ERD8 = 247,
ERD9 = 248, ERD10 = 249, ERD11 = 250, ERD12 = 251,
ERD13 = 252, ERD14 = 253, ERD15 = 254, ERD16 = 255 };
/*-------------------------------------------------------------------------*/
enum G2BLUES { G2B1 = 224, G2B2 = 225, G2B3 = 226, G2B4 = 227,
G2B5 = 228, G2B6 = 229, G2B7 = 230, G2B8 = 231,
G2B9 = 232, G2B10 = 233, G2B11 = 234, G2B12 = 235,
G2B13 = 236, G2B14 = 237, G2B15 = 238, G2B16 = 239 };
/*-------------------------------------------------------------------------*/
enum R2BLUES { R2B1 = 208, R2B2 = 209, R2B3 = 210, R2B4 = 211,
R2B5 = 212, R2B6 = 213, R2B7 = 214, R2B8 = 215,
R2B9 = 216, R2B10 = 217, R2B11 = 218, R2B12 = 219,
R2B13 = 220, R2B14 = 221, R2B15 = 222, R2B16 = 223 };
/*-------------------------------------------------------------------------*/
enum R2WHITES { R2WHITE1 = 144, R2WHITE2 = 145, R2WHITE3 = 146,
R2WHITE4 = 147, R2WHITE5 = 148, R2WHITE6 = 149,
R2WHITE7 = 150, R2WHITE8 = 151, R2WHITE9 = 152,
R2WHITE10 = 153, R2WHITE11 = 154, R2WHITE12 = 155,
R2WHITE13 = 156, R2WHITE14 = 157, R2WHITE15 = 158,
R2WHITE16 = 159 };
/*-------------------------------------------------------------------------*/
enum CYBLUES { CYBLUE1 = 168, CYBLUE2 = 169, CYBLUE3 = 170,
CYBLUE4 = 171, CYBLUE5 = 172, CYBLUE6 = 173,
CYBLUE7 = 174, CYBLUE8 = 175 };
/*-------------------------------------------------------------------------*/
enum DROSAS { DROSA1 = 160, DROSA2 = 161, DROSA3 = 162,
DROSA4 = 163, DROSA5 = 164, DROSA6 = 165,
DROSA7 = 166, DROSA8 = 167 };
/*-------------------------------------------------------------------------*/
enum REDGREENS { REDGRN1 = 184, REDGRN2 = 185, REDGRN3 = 186,
REDGRN4 = 187, REDGRN5 = 188, REDGRN6 = 189,
REDGRN7 = 190, REDGRN8 = 191 };
/*-------------------------------------------------------------------------*/
enum YELGREENS { YELGRN1 = 176, YELGRN2 = 177, YELGRN3 = 178,
YELGRN4 = 179, YELGRN5 = 180, YELGRN6 = 181,
YELGRN7 = 182, YELGRN8 = 183 };
/*#########################################################################*/
/*################ G L O B A L E F U N K T I O N E N ##################*/
/*#########################################################################*/
/*========================================================================*/
/* Funktion A R C U S */
/*------------------------------------------------------------------------*/
/* Zeichnet einen Kreisbogen. */
/* Parameter: Mittelpunkt (X,Y) */
/* Startwinkel in Grad (0 - 360) */
/* Endwinkel in Grad (0 - 360) */
/* Radius (Radius) */
/* Die Farbe des Kreisbogens entspricht der aktuellen Vordergrundfarbe. */
/*========================================================================*/
void far Arcus (int X, int Y, int StartW, int EndW,
int Radius);
/*========================================================================*/
/* Funktion B U T T O N */
/*------------------------------------------------------------------------*/
/* Bildet einen 3D-Druckknopf mit einer Aufschrift. Einer der Buch- */
/* staben kann hervorgehoben werden. */
/* Parameter : die Koordinaten des Knopfes (X1, Y1, X2, Y2) */
/* der Text für die Aufschrift (Text) */
/* der hervorzuhebende Buchstabe (Highlight) */
/* die Farbe des hervorzuhebenden Buchstabens (HLFarbe) */
/* die Nummer des Speicher-Puffers (0-29) */
/*------------------------------------------------------------------------*/
/* Bemerkung : Wird kein hervorgehobener Buchstaben gewünscht, so ist */
/* für die beiden letzten Parameter eine Zahl < 0 anzu- */
/* geben. */
/* Bevor ein Knopf mit einer bereits verwendeten Nummer er- */
/* zeugt wird, muß dieser mit FREEBUTTON gelöscht werden. */
/*========================================================================*/
void far Button (int X1, int Y1, int X2, int Y2,
char far *Text, int Highlight,
unsigned char HLFarbe, int BufNr);
/*========================================================================*/
/* Funktion C A R E T */
/*------------------------------------------------------------------------*/
/* Steuert den blinkenden Textcursor (Caret). */
/* Parameter: den Namen des Strings, mit dem das Caret verbunden ist. */
/* Bemerkung: Dem Aufruf von CARET muß ein Aufruf von MAKECARET und */
/* CARETSHOW vorangegangen sein. */
/*========================================================================*/
void far Caret (char far *CaretString);
/*========================================================================*/
/* Funktion C A R E T H I D E */
/*------------------------------------------------------------------------*/
/* Versteckt das sichtbare Caret. */
/* Parameter: keine. */
/* Bemerkung: Dem Aufruf von CARETHIDE muß ein Aufruf von MAKECARET und */
/* CARETSHOW vorangegangen sein. */
/*========================================================================*/
void far CaretHide ();
/*========================================================================*/
/* Funktion C A R E T S H O W */
/*------------------------------------------------------------------------*/
/* Bringt das Caret auf den Bildschirm. */
/* Parameter: keine. */
/* Bemerkung: Dem Aufruf von CARETSHOW muß ein Aufruf von MAKECARET */
/* vorangegangen sein. */
/*========================================================================*/
void far CaretShow ();
/*========================================================================*/
/* Funktion C I R C 2 5 6 */
/*------------------------------------------------------------------------*/
/* Zeichnet einen Kreis. */
/* Parameter: Mittelpunkt (X,Y) */
/* Radius (Radius) */
/* Die Farbe des Kreises entspricht der aktuellen Vordergrundfarbe. */
/*------------------------------------------------------------------------*/
/* Der Algorithmus stammt (abgesehen von kleinen Änderungen aus dem */
/* Buch "Graphik in C" */
/*========================================================================*/
void far Circ256 (int X, int Y, int Radius);
/*=========================================================================*/
/* Funktion C L E A R A L L P A G E S */
/*-------------------------------------------------------------------------*/
/* Löscht alle Bildschirmseiten mit der aktuellen Hintergrundfarbe. */
/*=========================================================================*/
void far ClearAllPages ();
/*=========================================================================*/
/* Funktion C L E A R P A G E */
/*-------------------------------------------------------------------------*/
/* Löscht die aktuelle Bildschirmseite mit der aktuellen Hintergrundfarbe. */
/*=========================================================================*/
void far ClearPage ();
/*========================================================================*/
/* Funktion C L E A R V I E W P */
/*------------------------------------------------------------------------*/
/* Löscht das aktuelle Sichtfenster mit der aktuellen Hintergrundfarbe. */
/*========================================================================*/
void far ClearViewP ();
/*=========================================================================*/
/* Funktion C L O S E 2 5 6 */
/*-------------------------------------------------------------------------*/
/* Beendet den 256-Farben-VGA-Modus mittels einer Assembler-Routine */
/* und gibt den belegten Speicher frei. */
/*=========================================================================*/
void far Close256 ();
/*========================================================================*/
/* Funktion C O P Y P A G E */
/*------------------------------------------------------------------------*/
/* Kopiert eine Bildschirmseite in eine andere. */
/* Parameter: die Nummer der Seite, die kopiert werden soll. */
/* die Nummer der Ziel-Bildschirmseite. */
/*========================================================================
extern void far CopyPage (int SrcPage, int DestPage);
========================================================================*/
/* Funktion D A R K E N S C R E E N */
/*------------------------------------------------------------------------*/
/* Verdunkelt langsam den Bildschirm. */
/* Parameter: 0 , wenn Programm nach der Funktion NICHT beendet wird, */
/* 1 , wenn Programm nach der Funktion beendet wird. */
/*========================================================================*/
void far DarkenScreen (int Exit);
/*========================================================================*/
/* Funktion D I S P L A Y P C X */
/*------------------------------------------------------------------------*/
/* Bringt ein Bild, das als PCX-Datei vorliegt, auf den Bildschirm. */
/* Parameter: linke obere Ecke (X,Y) */
/* die Art des Clipping: CLIP_RIGHT : nur rechts, */
/* CLIP_BOTTOM : nur unten, */
/* CLIP_BOTH : beide Seiten, */
/* NO_CLIP : nichts beschnitten. */
/* den Namen der Bilddatei (Erweiterung nicht erforderlich) */
/* den Namen einer Datei, in der die zum Bild gehörige */
/* Farbpalette gespeichert werden soll. (Sollte dies nicht */
/* erwünscht sein, so muß ein Leerstring "" übergeben */
/* werden. */
/* 0 oder 1, je nachdem, ob die Palette, die dem PCX-Bild */
/* zugrunde liegt, in die Register geladen werden soll. */
/*------------------------------------------------------------------------*/
/* Bemerkung: Verläuft alles fehlerfrei, so wird 0, andernfalls -1 zu- */
/* rückgegeben und Fehlercodes gesetzt. */
/* Alle schon vorher aufgetretenen Fehlercodes werden ge- */
/* löscht. */
/* Die Clipping-Angaben beziehen sich nur auf den Bildschirm,*/
/* nicht auf ein etwaiges Zeichenfenster. */
/*========================================================================*/
int far DisplayPCX (int X, int Y, int ClipRight,
int ClipBottom, char far *FileName,
char far *WritePalToFile,
int LoadPalette);
/*========================================================================*/
/* Funktion E L L I P 2 5 6 */
/*------------------------------------------------------------------------*/
/* Zeichnet einen elliptischen Bogen. */
/* Parameter: Mittelpunkt (X,Y) */
/* Startwinkel in Grad (0 - 360) */
/* Endwinkel in Grad (0 - 360) */
/* horizontaler Radius (XRad) */
/* vertikaler Radius (YRad) */
/* Die Farbe der Ellipse entspricht der aktuellen Vordergrundfarbe. */
/*========================================================================*/
void far Ellip256 (int X, int Y, int StartW, int EndW,
int XRad, int YRad);
/*=========================================================================*/
/* Funktion E R R O R M E S S */
/*-------------------------------------------------------------------------*/
/* Liefert für alle Errorcodes eine entsprechende Meldung als String */
/* zurück. */
/* Parameter : der Errorcode. */
/*=========================================================================*/
char far *ErrorMess (int Errorcode);
/*========================================================================*/
/* Funktion F I L L E D E L L I P */
/*------------------------------------------------------------------------*/
/* Zeichnet einen Kreis oder eine Ellipse und füllt es mit einer Farbe. */
/* Parameter: Parameter der Funktion ELLIPSE */
/* Füll-Farbe */
/*========================================================================*/
void far FilledEllip (int X, int Y, int XRad, int YRad,
unsigned char FuellFarbe);
/*=========================================================================*/
/* Funktion F I L L E D R E C T */
/*-------------------------------------------------------------------------*/
/* Zeichnet ein gefülltes Rechteck mit den Koordinaten: */
/* X1,Y1 linkes oberes Eck, */
/* X2,Y2 rechtes unteres Eck. */
/* Weiters ist Füllfarbe anzugeben. */
/* Die Randfarbe entspricht der aktuellen Vordergrundfarbe. */
/* Ist die Füllfarbe Null, so wird das Rechteck nicht gefüllt, bzw. */
/* die Füllfarbe ist gleich der aktuellen Hintergrundfarbe */
/*=========================================================================*/
void far FilledRect (int X1, int Y1, int X2, int Y2,
unsigned char Fuellfarbe);
/*========================================================================*/
/* Funktionen F R E E B U T T O N , F R E E A L L B U T T O N S */
/*------------------------------------------------------------------------*/
/* Deaktiviert einen oder alle zuvor aktiv gewesene(n) Druckknopf(e). */
/* Parameter: die Nummer des Knopfes (0 - 39) (nur FREEBUTTON). */
/*========================================================================*/
void far FreeButton (unsigned int Nr);
void far FreeAllButtons();
/*========================================================================*/
/* Funktionen F R E E P I C B U F F E R , */
/* F R E E A L L P I C B U F F E R S */
/*------------------------------------------------------------------------*/
/* Gibt einen zuvor mit SAVEPIC allokierten Speicher für einen Bild- */
/* schirmausschnitt wieder frei. */
/* Parameter: die Nummer des Puffers (0 - 9) (nur FREEPICBUFFER) */
/*========================================================================*/
void far FreePicBuffer (unsigned int Nr);
void far FreeAllPicBuffers ();
/*========================================================================*/
/* Funktion G E T A C T P A G E */
/*------------------------------------------------------------------------*/
/* Ermittelt die gerade aktive Bildschirmseite. */
/* Parameter: keine. */
/* Rückgabe : die Nummer der Bildschirmseite. */
/*========================================================================*/
int far GetActPage ();
/*========================================================================*/
/* Funktion G E T A C T P A L */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über die gerade aktive Farbpalette. */
/* Möglichkeiten : "BIOS" : Es ist die Palette des BIOS aktiv. */
/* "Dateiname.pal" : Es wurde eine Farbpalette von */
/* Palettendatei geladen. */
/* Parameter : keine. */
/*========================================================================*/
char far *GetActPal ();
/*========================================================================*/
/* Funktion G E T A R C U S */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über die Werte des letzten Aufrufs von ARCUS. */
/* Parameter: Variable von Typ ARCUSKOORD, die die Werte aufnimmt. */
/*------------------------------------------------------------------------*/
/* Hinweis : Wurde ARCUS noch nicht aufgerufen oder wurde mit ARCUS */
/* ein voller Kreis gebildet, so sind die Werte -1 und der */
/* allgemeine Fehlercode -11 wird gesetzt. */
/*========================================================================*/
void far GetArcus (struct arcuskoord far *ArcusKoord);
/*========================================================================*/
/* Funktion G E T B U T T O N */
/*------------------------------------------------------------------------*/
/* Gibt alle wichtigen Daten eines Druckknopfs zurück. */
/* Parameter: die Nummer des Knopfes, dessen Werte ermittelt werden, */
/* Variable von Typ BUTTONSTYLE, die die Werte aufnimmt. */
/*========================================================================*/
void far GetButton (int NrOfButton,
struct buttonstyle far *Butt);
/*========================================================================*/
/* Funktion G E T E L L I P S E */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über die Werte des letzten Aufrufs von ELLIPSE. */
/* Parameter: Variable von Typ ELLIPSKOORD, die die Werte aufnimmt. */
/*------------------------------------------------------------------------*/
/* Hinweis : Wurde ELLIPSE noch nicht aufgerufen oder eine volle */
/* Ellipse gebildet, so sind die Werte -1 und der allgemeine */
/* Fehlercode -11 wird gesetzt. */
/*========================================================================*/
void far GetEllipse (struct ellipskoord far *EllipsKoord);
/*=========================================================================*/
/* Funktion G E T E R R O R 2 5 6 */
/*-------------------------------------------------------------------------*/
/* Liefert den Errorcode der letzten Operation und setzt denselben */
/* wieder auf 0 zurück. */
/* Bei Fehler können folgende Codes auftreten: */
/* (Turbo-kompatible Codes) */
/* -1 Initialisierung des 256-Farben-Modus nicht gelungen */
/* -2 Keine VGA-Karte im System vorhanden */
/* -6 Kein Speicher zum Linien-Füllen mehr vorhanden */
/* -7 Kein Speicher zum Punkt-Füllen mehr vorhanden */
/* -8 Zeichensatzdatei wurde nicht gefunden */
/* -9 Nicht genug Speicher für Zeichensatz */
/* -11 unklassifizierbarer Fehler */
/* -12 Laden einer Datei schlug fehl */
/* -13 Datei ungültig, falsch, zerstört */
/* -14 Kennzahl für Zeichensatz nicht definiert */
/* (zusätzliche Codes eigener Definition) */
/* -15 zuwenig Speicher für Bildschirmausschnitt */
/* -16 fehlgeschlagener Ladevorgang eines Bildschirmausschnittes */
/* -17 Anordnung der Bildschirmseiten nicht definiert */
/* -18 Nummer der aktiven Bildschirmseite nicht vorgesehen */
/* -19 Nummer der sichtbaren Bildschirmseite nicht vorgesehen */
/* -20 Datei kann nicht angelegt werden. */
/* -21 Angegebene Datei keine PCX-Datei. */
/* -22 Fehler beim Laden einer Font-Datei. */
/* -23 Fehler beim Laden einer Paletten-Datei. */
/*=========================================================================*/
int far GetError256 ();
/*========================================================================*/
/* Funktionen G E T F C O L O R , G E T B C O L O R */
/*------------------------------------------------------------------------*/
/* Geben den entsprechenden aktuellen Farbwert zurück. */
/*========================================================================*/
unsigned char far GetBColor ();
unsigned char far GetFColor ();
/*========================================================================*/
/* Funktion G E T L I N E */
/*------------------------------------------------------------------------*/
/* Liefert die aktuellen Einstellungen bezüglich Linien zurück. */
/* Parameter : Struktur-Variable vom Typ 'linevar' */
/*========================================================================*/
void far GetLine (struct linevar far *LVar);
/*========================================================================*/
/* Funktion G E T P I C T U R E */
/*------------------------------------------------------------------------*/
/* Speichert einen Bildschirmausschnitt in einem Puffer. */
/* Parameter : die linke obere Ecke des Ausschnitts (X1,Y1) */
/* die rechte, untere Ecke des Ausschnitts (X2,Y2) */
/* Zeiger auf den Puffer, in dem der Ausschnitt gespeichert */
/* werden soll. */
/* Bemerkung : Vor Aufruf dieser Funktion muß erst Speicher für den */
/* Bildschirmausschnitt reserviert werden! */
/*========================================================================
extern void far GetPicture (int X1, int Y1, int X2, int Y2,
void far *Puffer);
========================================================================*/
/* Funktion G E T P I X */
/*------------------------------------------------------------------------*/
/* Stellt die Farbe eines Bildpunktes fest. */
/* Parameter : die Koordinaten des Bildpunktes (X,Y) */
/* Rückgabe : die Farbe des Bildpunktes. */
/*========================================================================
extern unsigned char far GetPix (int Spalte, int Zeile);
========================================================================*/
/* Funktionen G E T S C R X , G E T S C R Y */
/*------------------------------------------------------------------------*/
/* Bestimmen die Koordinaten der linken oberen Ecke des sichtbaren */
/* Bildschirmes. */
/* Parameter : keine. */
/* Rückgabe : GETSCRX : die X-Koordinate, */
/* GETSCRY : die Y-Koordinate des virtuellen Bildschirms. */
/*========================================================================*/
unsigned int far GetScrX ();
unsigned int far GetScrY ();
/*========================================================================*/
/* Funktion G E T T X T */
/*------------------------------------------------------------------------*/
/* Liefert die aktuellen Einstellungen der Textausgabe zurück. */
/* Parameter : Struktur-Variable vom Typ 'textvar' */
/*========================================================================*/
void far GetTxt (struct textvar far *TVar);
/*========================================================================*/
/* Funktion G E T T X T H E I G H T */
/*------------------------------------------------------------------------*/
/* Gibt die Höhe des aktuellen Zeichensatzes in Pixeln zurück. */
/*========================================================================*/
unsigned int far GetTxtHeight ();
/*========================================================================*/
/* Funktion G E T T X T W I D T H */
/*------------------------------------------------------------------------*/
/* Gibt die Länge eines String in Pixeln zurück. */
/* Parameter: den String. */
/*========================================================================*/
unsigned int far GetTxtWidth (char far *Text);
/*========================================================================*/
/* Funktion G E T V I E W P */
/*------------------------------------------------------------------------*/
/* Liefert die aktuellen Einstellungen des Sichtfensters zurück. */
/* Liefert Bildschirmwerte, Seiten werden nicht einbezogen! */
/* Parameter : Struktur-Variable vom Typ 'viewportvar' */
/*========================================================================*/
void far GetViewP (struct viewportvar far *VPVar);
/*========================================================================*/
/* Funktion G E T V I S P A G E */
/*------------------------------------------------------------------------*/
/* Ermittelt die gerade sichtbare Bildschirmseite. */
/* Parameter: keine. */
/* Rückgabe : die Nummer der Bildschirmseite. */
/*========================================================================*/
int far GetVisPage ();
/*========================================================================*/
/* Funktionen G E T X 2 5 6 , G E T Y 2 5 6 */
/*------------------------------------------------------------------------*/
/* Geben die aktuellen Koordinaten des Graphik-Cursors zurück. */
/*========================================================================*/
unsigned int far GetX256 ();
unsigned int far GetY256 ();
/*========================================================================*/
/* Funktion H L I N E */
/*------------------------------------------------------------------------*/
/* Zeichnet eine horizontale Linie. */
/* Die Farbe der Linie entspricht der aktuellen Vordergrundfarbe. */
/* Parameter : der Anfangspunkt (X1,Y) */
/* der Endpunkt (X2,Y) */
/*========================================================================*/
void far HLine (int X1, int Y, int X2);
/*=========================================================================*/
/* Funktion I N I T 2 5 6 */
/*-------------------------------------------------------------------------*/
/* Initialisiert den 256-Farben-VGA-Modus mittels einer Assembler- */
/* Routine, lädt die Default-Schriftdatei, sichert die BIOS-Farb- */
/* palette und lädt die Farbpalette SORTIERT.PAL. */
/* Weiters werden horizontal nebeneinander liegende Bildschirmseiten */
/* eingestellt und der Sound-Generator initialisiert. */
/* Parameter : keine. */
/*=========================================================================*/
void far Init256 ();
/*========================================================================*/
/* Funktion I N S T A L L N E W F O N T */
/*------------------------------------------------------------------------*/
/* Installiert einen fremden Zeichensatz. */
/* Folgende Bedingungen muß der neue Zeichensatz erfüllen: */
/* 1) die Font-Datei muß die Extension .FNT haben. */
/* 2) die Breite der Zeichen muß 8 Pixel sein. */
/* 3) die Höhe der Zeichen muß 8 oder 16 Pixel sein. */
/* 4) die Zeichensatzdatei darf vor der Bearbeitung mit MAKEFONTFILE */
/* nur soviele Bytes haben, als das Produkt aus der Höhe und der */
/* Zahl der Zeichen (256) ergibt, also 2048 oder 4096. */
/* 5) die Datei muß mit MAKEFONTFILE bearbeitet sein, d.h. einen */
/* Header von 2 Bytes (Höhe, Breite) beinhalten. */
/* Parameter : der Name der Font-Datei. */
/* Verläuft die Installation erfolgreich, wird die Zahl zurückgegeben, */
/* die von nun an dem neuen Font zugeordnet ist und der Funktion */
/* TEXTSTYLE übergeben werden kann. Schlug die Installation fehl, ist */
/* das Ergebnis -1. Weiters werden noch diverse Errorcodes gesetzt, */
/* die angeben, warum die Installation fehlgeschlagen ist (abzufragen */
/* mit SAYERROR(). */
/*========================================================================*/
int far InstallNewFont(char far *FileName);
/*========================================================================*/
/* Funktion L I N E 2 5 6 */
/*------------------------------------------------------------------------*/
/* Zeichnet eine Linie von den Anfangskoordinaten X1,Y1 zu den End- */
/* koordinaten X2,Y2. */
/* Die Farbe der Linie entspricht der aktuellen Vordergrundfarbe. */
/* Diese Prozedur ist für nicht-horizontale und nicht-vertikale Linien */
/* gedacht. Für horizontale und vertikale Linien sind die Assembler- */
/* funktionen HLINE und VLINE (wegen der Geschwindigkeit) besser */
/* geeignet. */
/* Der Algorithmus stammt aus dem Buch "Grafik in C". */
/*========================================================================*/
void far Line256 (int X1, int Y1, int X2, int Y2);
/*========================================================================*/
/* Funktion L I N E F I L L */
/*------------------------------------------------------------------------*/
/* Füllt einen umschlossenen Bereich mit einer Farbe. */
/* Parameter : Einstiegsspalte (X) */
/* Einstiegszeile (Y) */
/* die Füllfarbe (Farbe) */
/* die Randfarbe (Rand) */
/*------------------------------------------------------------------------*/
/* Bemerkung : Es wird nicht garantiert, daß eine besonders komplizier- */
/* te Fläche von jedem Punkt aus vollständig gefüllt wird. */
/* Der Einstiegspunkt sollte am besten an der breitesten, */
/* nicht unterbrochenen Stelle liegen. Möglicherweise müssen*/
/* verschiedene Punkte ausprobiert werden. */
/* Da der verwendete Algorithmus wesentlich schneller ist, */
/* als der in den TURBO-Sprachen verwendete, sollte seine */
/* Geschwindigkeit nicht durch die Vermeidung ALLER Even- */
/* tualitäten beeinträchtigt werden. */
/*========================================================================*/
void far LineFill (int X, int Y, unsigned char Farbe,
unsigned char Rand);
/*========================================================================*/
/* Funktionen L I N E T O 2 5 6 , L I N E R E L 2 5 6 */
/*------------------------------------------------------------------------*/
/* LineTo256 : zeichnet eine Linie von der aktuellen Cursorposition zu */
/* dem angegebenen Punkt. */
/* Parameter : die X-Koordinate des Endpunktes der Linie, */
/* die Y-Koordinate des Endpunktes der Linie. */
/* LineRel256: zeichnet eine Linie relativ zur aktuellen Position des */
/* Cursors. */
/* Parameter : den X-Wert, */
/* den Y-Wert. */
/*========================================================================*/
void far LineRel256 (int XAdd, int YAdd);
void far LineTo256 (int X2, int Y2);
/*========================================================================*/
/* Funktion L O A D P I C */
/*------------------------------------------------------------------------*/
/* Bringt einen zuvor abgespeicherten Bildschirmausschnitt auf den */
/* Bildschirm und gibt den reservierten Speicherbereich wieder frei. */
/* Parameter: die linke obere Ecke der gewünschten Position (X,Y) */
/* die Nummer des Puffers, in dem das Bild zuvor gespeichert */
/* wurde (0 - 9). */
/* Soll der Bildpuffer freigegeben werden : FREE (0) */
/* HOLD (1). */
/* Rückgabewert: 0 - alles lief ordnungsgemäß ab */
/* 1 - Speicher wurde vorher nicht reserviert */
/*========================================================================*/
int far LoadPic (int X, int Y, int PufferNr,
int FreeBuffer);
/*========================================================================*/
/* Funktion M A K E C A R E T */
/*------------------------------------------------------------------------*/
/* Initialisiert den Textcursor (Caret) und legt grundsätzliche */
/* Parameter fest. */
/* Parameter: das Erscheinungsbild : 0 - BLOCK (Blockform) */
/* 1 - V_LINE (Vertikale Linie) */
/* 2 - U_LINE (Unterlinie) */
/* die Farbe (0 - 255) */
/* die Blinkgeschwindigkeit : 2 - 20 oder Konstanten: */
/* SLOW (20), */
/* MEDIUM (12), */
/* FAST (3). */
/* die X-Koordinate und */
/* die Y-Koordinate, an der das Caret zum ersten Mal */
/* erscheinen soll. */
/* der Font, mit dem der String, hinter dem das Caret steht, */
/* dargestellt wird. */
/*========================================================================*/
void far MakeCaret (int CretType, unsigned char Farbe,
int Blink_Time, int Caret_X,
int Caret_Y, int Caret_Font);
/*========================================================================*/
/* Funktionen M O V E T O 2 5 6 , M O V E R E L 2 5 6 */
/*------------------------------------------------------------------------*/
/* MoveTo256 : Bewegt den Graphik-Cursor auf die Position X,Y. */
/* Parameter : die neue X-Position, */
/* die neue Y-Position des Cursors */
/* MoveRel256: Bewegt den Cursor um die in den Parametern angebenenen */
/* Längen weiter. */
/* Parameter: den Wert, um den der Cursor in der X-Richtung,*/
/* den Wert, um den der Cursor in der Y-Richtung */
/* weiterbewegt werden soll */
/*========================================================================*/
void far MoveRel256 (unsigned int XAdd, unsigned int YAdd);
void far MoveTo256 (unsigned int NewX, unsigned int NewY);
/*========================================================================*/
/* Funktionen O U T T X T X Y , O U T T X T */
/*------------------------------------------------------------------------*/
/* Geben einen Text auf dem Bildschirm aus. */
/* Position des Texts: OutTxtXY : an der angegebenen Position */
/* OutTxt : an der aktuellen Cursorposition. */
/* Obligatorische Parameter: der Text */
/* Spaltenposition (nur OutTxtXY) */
/* Zeilenposition (nur OutTxtXY) */
/* Optionale Parameter : Die Nummer eines hervorzuhebenden Buch- */
/* staben (Zählung beginnt mit 1) */
/* Die Farbe des hervorzuhebenden Buchstabens */
/*========================================================================*/
void far OutTxt (char far *Text, ...);
void far OutTxtXY (char far *Text, int X, int Y, ...);
/*========================================================================*/
/* Funktion P E L P A N S P L I T */
/*------------------------------------------------------------------------*/
/* Begrenzt die Wirkung des Horizontal Pixel Panning Registers auf */
/* einen oberen Teil des Bildschirms. */
/* Parameter : keine. */
/*------------------------------------------------------------------------*/
/* Bemerkung : Diese Funktion wird für das horizontale Scrolling des */
/* oberen Bildschirmteils verwendet. */
/*========================================================================
extern void far PelPanSplit ();
========================================================================*/
/* Funktion P I C S I Z E */
/*------------------------------------------------------------------------*/
/* Bestimmt die Anzahl an Bytes, die für die Speicherung eines Bild- */
/* schirmasuschnittes notwendig sind. */
/* Parameter : die Koordinaten des Bildschirmausschnittes, */
/* Rückgabe : den erforderlichen Speicherbedarf in Bytes. */
/*========================================================================
extern unsigned int far PicSize (int X1, int Y1, int X2, int Y2);
========================================================================*/
/* Funktion P O I N T F I L L */
/*------------------------------------------------------------------------*/
/* Füllt einen umschlossenen Bereich mit einer Farbe. */
/* Parameter : Einstiegsspalte (X) */
/* Einstiegszeile (Y) */
/* die Füllfarbe (Farbe) */
/* die Randfarbe (Rand) */
/*------------------------------------------------------------------------*/
/* Bemerkung : Dieser Füllalgorithmus arbeitet punktorientiert. */
/*========================================================================*/
void far PointFill (int X, int Y, unsigned char Fuellfarbe,
unsigned char RandFarbe);
/*========================================================================*/
/* Funktion P O L Y G O N */
/*------------------------------------------------------------------------*/
/* Zeichnet die Umrisse eines Polygons. */
/* Parameter : die Anzahl der Eckpunkte */
/* ein Array mit den Koordinaten der Eckpunkte. */
/*========================================================================*/
void far Polygon (int PunkteZahl, int far *PolyP);
/*========================================================================*/
/* Funktion P R B U T T O N */
/*------------------------------------------------------------------------*/
/* Simuliert den Druckvorgang eines Buttons. */
/* Parameter : die linke obere Ecke des Button (X,Y) */
/* die Nummer des Buttons, die ihm beim Aufruf von BUTTON */
/* innerhalb des Arrays BUTTONBUF zugewiesen wurde. */
/* die Art der Aktion, die mit dem Button stattfinden soll: */
/* 1) PRESS (-1), Knopf wird nur gedrückt, */
/* 2) RELEASE (1), Knopf wird nur losgelassen, */
/* 3) BOTH (0), Knopf vollführt beide Aktionen. */
/*========================================================================*/
void far PrButton (int X, int Y, int BufNr, int Action);
/*========================================================================*/
/* Funktion P U T P I C T U R E */
/*------------------------------------------------------------------------*/
/* Bringt einen zuvor abgespeicherten Bildausschnitt wieder auf den */
/* Bildschirm. */
/* Parameter : die linke obere Ecke des Ausschnitts (X,Y) */
/* Zeiger auf den Puffer, in dem der Ausschnitt gespeichert */
/* wurde. */
/*========================================================================
extern void far PutPicture (int X, int Y, void far *Puffer);
========================================================================*/
/* Funktion P U T P I X */
/*------------------------------------------------------------------------*/
/* Setzt einen Bildpunkt. */
/* Parameter : die Koordinaten des Punktes */
/* die Farbe des Punktes */
/*========================================================================
extern void far PutPix (int Spalte, int Zeile,
unsigned char Farbe);
========================================================================*/
/* Funktion R E A D P A L B L O C K */
/*------------------------------------------------------------------------*/
/* Liest einen Block von Werten aus den Palettenregistern in ein Array. */
/* Parameter : der Name des Arrays, das die Werte aufnimmt */
/* der erste zu lesende Register */
/* die Anzahl der zu lesenden Register */
/*------------------------------------------------------------------------*/
/* Bemerkung: Das Array muß folgendes Aussehen haben : */
/* ArrayName [NrOfRegs][3]; */
/* Ist das Array zu klein, kann es zu einem Systemabsturz */
/* kommen. */
/*========================================================================*/
void far ReadPalBlock (palarray PalArray, int FirstReg,
int NrOfRegs);
/*=========================================================================*/
/* Funktion R E C T */
/*-------------------------------------------------------------------------*/
/* Zeichnet ein leeres Rechteck mit den Koordinaten: */
/* X1,Y1 linkes oberes Eck, */
/* X2,Y2 rechtes unteres Eck. */
/* Die Farbe entspricht der aktuellen Vordergrundfarbe. */
/*=========================================================================*/
void far Rect (int X1, int Y1, int X2, int Y2);
/*========================================================================*/
/* Funktion R E S T O R E A C T P A L */
/*------------------------------------------------------------------------*/
/* Stellt die zuvor aktiv gewesene Farbpalette wieder her. */
/* Parameter : SOFT (1) : Palette wird übergangsmäßig ausgetauscht */
/* PENG (0) : Palette wird plötzlich ausgetauscht */
/* Bemerkung : Dem Aufruf von RESTORACTPAL muß ein Aufruf von */
/* SAVEACTIVEPAL vorausgegangen sein! */
/*========================================================================*/
void far RestoreActPal (int ChangeMode);
/*========================================================================*/
/* Funktion R E S T O R E B I O S P A L */
/*------------------------------------------------------------------------*/
/* Restauriert eine möglicherweise veränderte BIOS-Farbpalette. */
/* Parameter : SOFT (1) : Palette wird übergangsmäßig ausgetauscht */
/* PENG (0) : Palette wird plötzlich ausgetauscht */
/* Bemerkung : diese Routine wird bei der Beendigung des 256-Farben- */
/* Modus automatisch aufgerufen. */
/*========================================================================*/
void far RestoreBIOSPal(int ChangeMode);
/*=========================================================================*/
/* Funktion R E S T O R E T E X T M O D E */
/*-------------------------------------------------------------------------*/
/* Stellt den Textmodus, der vor dem 256-Farben-Grafikmodus aktiv war, */
/* wieder her, gibt den Grafikspeicher aber nicht frei. */
/*=========================================================================*/
void far RestoreTextMode();
/*========================================================================*/
/* Funktion S A V E A C T I V E P A L */
/*------------------------------------------------------------------------*/
/* Speichert die gerade aktive Farbpalette in dem Array PALETTE, */
/* um sie später wieder restaurieren zu können (siehe RESTOREACTPAL). */
/* Parameter : keine. */
/*========================================================================*/
void far SaveActivePal ();
/*========================================================================*/
/* Funktion S A V E B I O S P A L */
/*------------------------------------------------------------------------*/
/* Liest die gesamte BIOS-Farbpalette in ein Array, damit sie später */
/* wieder restauriert werden kann (siehe RESTOREBIOSPAL). */
/* Parameter : keine. */
/* Bemerkung : diese Routine wird bei der Initialisierung des 256- */
/* Farben-Modus automatisch aufgerufen. */
/*========================================================================*/
void far SaveBIOSPal ();
/*========================================================================*/
/* Funktion S A V E P I C */
/*------------------------------------------------------------------------*/
/* Berechnet die Größe eines Bildschirmausschnittes, reserviert */
/* Speicher für ihn und speichert ihn in einen Puffer. */
/* Parameter: die Koordinaten des Bildschirmausschnittes (X1,Y1,X2,Y2) */
/* die Nummer des Puffers (es stehen 10 (0-9) Puffer mit dem */
/* Namen SPEICHER zur Verfügung) */
/* Rückgabewert: 0 - Reservierung des Speichers okay */
/* 1 - Speicher konnte nicht reserviert werden */
/* Bemerkung : die Breite des Bildschirmausschnittes muß mindestens */
/* 6 Pixel betragen!
/*========================================================================*/
int far SavePic (int X1, int Y1, int X2, int Y2,
int PufferNr);
/*========================================================================*/
/* Funktion S C R O L L */
/*------------------------------------------------------------------------*/
/* Bewegt den Bildschirm in vertikaler, horizontaler und diagonaler */
/* Richtung. */
/* Parameter: Pixelzahl, um die gescrollt werden soll (ScrollZahl) */
/* Horizontale Schrittweite (HorizStep) */
/* ( < 0 : nach links, > 0 : nach rechts ) */
/* Vertikale Schrittweite (VertiStep) */
/* ( < 0 : nach oben, > 0 : nach unten ) */
/* Bemerkung: Beim Scrollen um eine oder mehrere ganze Seiten wird auch */
/* die sichtbare Seite (VISPAGE) angeglichen. */
/*========================================================================*/
void far Scroll (int ScrollZahl, int HorizStep,
int VertiStep);
/*=========================================================================*/
/* Funktion S E T 2 5 6 M O D E */
/*-------------------------------------------------------------------------*/
/* Schaltet vom Textmodus, der vor INIT256 aktiv war und wieder */
/* aktiviert wurde, neuerlich in den 256-Farben-Grafikmodus zurück. */
/* Der Grafikmodus muß also vorher schon einmal mit INIT256 initiali- */
/* worden sein! */
/*=========================================================================*/
void far Set256Mode ();
/*========================================================================*/
/* Funktion S E T A C T P A G E */
/*------------------------------------------------------------------------*/
/* Legt jene Bildschirmseite fest, auf die bei den nachfolgenden */
/* Operationen geschrieben wird. */
/* Parameter: die Nummer der Bildschirmseite */
/* Hinweis: bei jedem Wechsel der aktiven Bildschirmseite wird auto- */
/* matisch das Zeichenfenster mit den Standardwerten einge- */
/* stellt. */
/*========================================================================*/
void far SetActPage (int PageNr);
/*========================================================================*/
/* Funktion S E T B A C K W R I T I N G */
/*------------------------------------------------------------------------*/
/* Bestimmt, ob bei OUTTEXT und OUTTEXTXY auch der Hintergrund des */
/* Textes mitgeschrieben werden soll. */
/* Parameter : 0 oder 1 (ON oder OFF) */
/*========================================================================*/
void far SetBackWriting(int OnOff);
/*========================================================================*/
/* Funktion S E T B C O L O R */
/*------------------------------------------------------------------------*/
/* Setzt die aktuelle Hintergrundfarbe. */
/* Parameter: die Farbe. */
/*========================================================================*/
void far SetBColor (unsigned char Farbe);
/*========================================================================*/
/* Funktion S E T D E F A U L T S */
/*------------------------------------------------------------------------*/
/* Setzt alle Einstellungen auf den Standard zurück. */
/*========================================================================*/
void far SetDefaults ();
/*========================================================================*/
/* Funktion S E T F C O L O R */
/*------------------------------------------------------------------------*/
/* Setzt die aktuelle Vordergrundfarbe. */
/* Parameter: die Farbe. */
/*========================================================================*/
void far SetFColor (unsigned char Farbe);
/*=========================================================================*/
/* Funktion S E T L I N E */
/*-------------------------------------------------------------------------*/
/* Setzt die Linienbreite für nachfolgende Zeichenoperationen. */
/* Parameter : die Linienbreite */
/* ( 1 : normal breit, */
/* 2 : doppelt breit, */
/* 3 : sehr breit. ) */
/* Voreingestellt ist normal breit (1).
/*=========================================================================*/
void far SetLine (int Style);
/*========================================================================*/
/* Funktion S E T N E W P A L */
/*------------------------------------------------------------------------*/
/* Schreibt die Werte für eine komplette Farbpalette in die Farb- */
/* register. */
/* Parameter : 1) entweder ein voller Dateiname mit der Erweiterung .PAL*/
/* für eine Datei, die die Farbwerte enthält, */
/* oder "BIOS", worauf die BIOS-Farbpalette geladen */
/* wird. */
/* 2) SAVE (1) oder NO_SAVE (0), je nachdem, ob die neue */
/* Palette in das Array ACTPAL, das die gerade aktive */
/* Farbpalette enthält, geladen werden soll. */
/* 3) SOFT (1) : Palette wird übergangsmäßig ausgetauscht */
/* PENG (0) : Palette wird plötzlich ausgetauscht */
/*========================================================================*/
int far SetNewPal (char far *PalFile, int Save,
int ModeOfChange);
/*========================================================================*/
/* Funktion S E T P A G E L A Y O U T */
/*------------------------------------------------------------------------*/
/* Legt die Anordnung der 4 Bildschirmseiten fest. */
/* Parameter: die Art der Anordnung (siehe unten) */
/* Bemerkung: Die erste Seite ist die aktive und sichtbare Seite. */
/*------------------------------------------------------------------------*/
/* VERT : 0 HORIZ : 0123 DIAGON : 01 */
/* 1 23 */
/* 2 */
/* 3 */
/*========================================================================*/
void far SetPageLayout (int Layout);
/*========================================================================*/
/* Funktion S E T P A L B L O C K */
/*------------------------------------------------------------------------*/
/* Schreibt einen Block von Werten aus einem Array in die angegebenen */
/* Palettenregister. */
/* Parameter : der Name des Arrays, von dem die Werte stammen */
/* der erste zu belegende Register */
/* die Anzahl der zu belegenden Register */
/*------------------------------------------------------------------------*/
/* Bemerkung: Das Array muß folgendes Aussehen haben : */
/* ArrayName [NrOfRegs][3]; */
/* Ist das Array zu klein, werden ungewünschte Werte in die */
/* Register geladen. */
/*========================================================================*/
void far SetPalBlock (palarray PalArray, int FirstReg,
int NrOfRegs);
/*========================================================================*/
/* Funktion S E T P A L R E G */
/*------------------------------------------------------------------------*/
/* Belegt eines der 256 Farbregister. */
/* Parameter : die Nummer des Farbregisters (0 - 255) */
/* der Rotanteil der neuen Farbe (0 - 63) */
/* der Grünanteil der neuen Farbe (0 - 63) */
/* der Blauanteil der neuen Farbe (0 - 63) */
/*========================================================================*/
void far SetPalReg (int FarbNr,
int Rot, int Gruen, int Blau);
/*========================================================================*/
/* Funktion S E T S C R W I D T H */
/*------------------------------------------------------------------------*/
/* Stellt die Breite des virtuellen Bildschirms ein. */
/* Parameter : die Bildschirmbreite (80 - 320) */
/* Bemerkung : 80 Bytes pro Zeile entspricht einer Bildschirmseite. */
/*========================================================================
extern void far SetScrWidth (int Schirmbreite);
========================================================================*/
/* Funktion S E T S C R X Y */
/*------------------------------------------------------------------------*/
/* Legt die linke obere Ecke des virtuellen Bildschirms fest. */
/* Parameter : die linke obere Bildschirmecke (X,Y) */
/*========================================================================*/
void far SetScrXY (int X, int Y);
/*========================================================================*/
/* Funktion S E T S P L I T */
/*------------------------------------------------------------------------*/
/* Legt die Zeile für den geteilten Bildschirm fest. */
/* Parameter : die Zeile, ab der der Bildschirm geteilt werden soll. */
/*========================================================================
extern void far SetSplit (int Zeile);
========================================================================*/
/* Funktion S E T S T A N D P A L */
/*------------------------------------------------------------------------*/
/* Verändert einen Eintrag in der Palette Nr. 0 - 15. */
/* Parameter : die Farbe die neu gesetzt werden soll, */
/* die Farbnummer, statt der die neue Farbe erscheinen soll.*/
/*========================================================================
extern void far SetStandPal (unsigned char ColorWish,
unsigned char ColorNum);
========================================================================*/
/* Funktion S E T T X T J U S T I F Y */
/*------------------------------------------------------------------------*/
/* Legt die horizonate und vertikale Textausrichtung für OUTTEXTXY und */
/* OUTTEXT fest. */
/* Parameter: die Art der horizontalen Textausrichtung: */
/* linksbündig (-1, LEFT) */
/* rechtsbündig (1 , RIGHT) */
/* zentriert (0 , CENTER). */
/* die Art der vertikalen Textausrichtung: */
/* obenbündig (-1, TOP) */
/* untenbündig (1 , BOTTOM) */
/* mittig (0 , CENTER). */
/* */
/* Voreingestellt ist linksbündig und obenbündig. */
/*========================================================================*/
void far SetTxtJustify (int JustifyW, int JustifyH);
/*========================================================================*/
/* Funktion S E T T X T S T Y L E */
/*------------------------------------------------------------------------*/
/* Lädt einen Zeichensatz. */
/* Parameter : der Zeichensatz (0 - DEFAULT.FNT, 1 - SMALL.FNT) */
/* (2 - ROM.FNT, 3 - LIGHT.FNT) */
/* Rückgabe : 0, wenn alles erfolgreich verläuft, */
/* -1 im Fehlerfalle. */
/*========================================================================*/
int far SetTxtStyle (int Font);
/*========================================================================*/
/* Funktion S E T V I E W P */
/*------------------------------------------------------------------------*/
/* Bestimmt die Koordinaten eines Sichtfensters. Voreingestellt ist */
/* der gesamte Bildschirm, also 0,0,319,199. Die anzugebenden Werte */
/* müssen innerhalb dieser Grenzen liegen. */
/* Der 5.Parameter bestimmt die Art des Clipping, d.h. ob über die */
/* Sichtfenster hinaus geszeichnet werden soll. Voreingestellt ist */
/* aktives Clipping. */
/* Parameter: die Koordinaten des Sichtfensters (X1,Y1,X2,Y2) */
/* das Clipping (0 für aus, 1 für ein). */
/*========================================================================*/
void far SetViewP (int X1, int Y1, int X2, int Y2,
int ClippJN);
/*========================================================================*/
/* Funktion S E T V I S P A G E */
/*------------------------------------------------------------------------*/
/* Legt jene Bildschirmseite fest, die sichtbar ist. */
/* Parameter: die Nummer der Bildschirmseite */
/* Bemerkung: Diese Funktion legt die gewählte Bildschirmseite immer */
/* an ihre standardmäßige linke obere Ecke (z.B die erste, */
/* Nr.0, an die Position (0/0) usw.). Sollte eine andere, */
/* dazwischen liegende, gewünscht sein, muß dies NACHHER */
/* mit der Funktion SETSCRXY eingestellt werden. */
/*========================================================================*/
void far SetVisPage (int PageNr);
/*========================================================================*/
/* Funktion S E T W R I T E M O D */
/*------------------------------------------------------------------------*/
/* Stellt den Verknüpfungsmodus der Zeichen-Operationen mit dem */
/* vorhandenen Hintergrund ein. */
/* Parameter: der Verknüpfungsmodus: */
/* 0 (COPY) : die neue Zeichnung überschreibt Hintergrund */
/* 1 (DO_AND) : AND-Verknüpfung zw. neuer Zeichnung und */
/* Hintergrund */
/* 2 (DO_OR) : OR-Verknüpfung zw. neuer Zeichnung und */
/* Hintergrund */
/* 3 (DO_XOR) : XOR-Verknüpfung zw. neuer Zeichnung und */
/* Hintergrund */
/*========================================================================
extern void far SetWriteMod (char Mode);
========================================================================*/
/* Funktion S H I F T P G O V E R P G */
/*------------------------------------------------------------------------*/
/* Schiebt die erste Bildschirmseite über die gerade aktive Bildschirm- */
/* seite. */
/* Parameter: die Startzeile des Schiebevorgangs (auf dieser Start- */
/* zeile kommt die erste Zeile der ersten Bildschirmseite */
/* zu liegen, dann wird geschoben) (0 - 199) */
/* die Endzeile des Schiebevorgangs (nach der Schiebung */
/* liegt die erste Zeile der ersten Bildschirmseite auf */
/* dieser Zeile) (0 - 199) */
/* die Richtung des Schiebevorgangs (UP, DOWN) */
/* ob die sichtbare Bildschirmseite gewechselt werden soll */
/* (CHANGE - 1, NO_CHANGE - 0) */
/* Bemerkung: Der letzte Parameter wird nur dann beachtet, wenn die 1. */
/* Bildschirmseite VOLLSTÄNDIG und NACH OBEN verschoben wird.*/
/*========================================================================*/
void far ShiftPgOverPg (int StartLine, int EndLine,
int Direction, int ChangeVisPage);
/*========================================================================*/
/* Funktion S O F T D A R K E N S C R E E N */
/*------------------------------------------------------------------------*/
/* Verdunkelt langsam den Bildschirm. */
/* Parameter: 0 , wenn Programm nach der Funktion NICHT beendet wird, */
/* 1 , wenn Programm nach der Funktion beendet wird. */
/* Bemerkung: siehe Makro SOFTLIGHTSCREEN. */
/*========================================================================*/
void far SoftDarkenScreen(int Exit);
/*========================================================================*/
/* Funktion T U R N S C R E E N */
/*------------------------------------------------------------------------*/
/* Schaltet den Bildschirm ein oder aus. */
/* Parameter : ON (1) oder */
/* OFF (0). */
/*========================================================================
extern void far TurnScreen (char OnOff);
========================================================================*/
/* Funktion V L I N E */
/*------------------------------------------------------------------------*/
/* Zeichnet eine vertikale Linie. */
/* Die Farbe der Linie entspricht der aktuellen Vordergrundfarbe. */
/* Parameter : der Anfangspunkt (X,Y1) */
/* der Endpunkt (X,Y2) */
/*========================================================================*/
void far VLine (int X, int Y1, int Y2);
/*========================================================================*/
/* Funktionen W A I T D I S P L A Y , W A I T V R E T R A C E */
/*------------------------------------------------------------------------*/
/* Wartet auf die nächste Zeichenperiode (WAITDISPLAY) oder auf die */
/* nächste vertikale Strahlenrücklaufperiode (WAITVRETRACE) der */
/* Bildschirm-Hardware. */
/* Parameter : keine. */
/*========================================================================
extern void far WaitDisplay ();
extern void far WaitVRetrace ();
========================================================================*/
/* Funktion W I N D O W */
/*------------------------------------------------------------------------*/
/* Zeichnet ein rechteckiges Fenster mit verschiedener Randstärke (1 - */
/* 3 Pixel) und einem Kopfteil mit Beschriftung. */
/* Parameter : die Koordinaten des Fensters (X1,Y1,X2,Y2) */
/* die Dicke der Fenster-Umrandung (1 - 3) */
/* die Farbe des Randes (0 - 255) */
/* die Hauptfarbe des Fensters (0 - 255) */
/* der Text der Beschriftung */
/* ob mit oder ohne Schatten (0,1) */
/* die Nummer des Puffers, in dem der Fensterhintergrund */
/* gespeichert werden soll (0 - 9). */
/* Sollte eine Speicherung nicht erwünscht sein, muß -1 */
/* angegeben werden. */
/*------------------------------------------------------------------------*/
/* Bemerkung: Doppelbelegungen der Speicherpuffer können zu Fehl- */
/* funktionen und Systemabstürzen führen. */
/*========================================================================*/
void far Window (int X1, int Y1, int X2, int Y2,
int Randdicke, unsigned char RandF,
unsigned char HauptF,
char far *KopfText, int Schatten,
unsigned char SchattenF,
int SaveHintergrund);
/*========================================================================*/
/* Funktion W R I T E A S P C X */
/*------------------------------------------------------------------------*/
/* Speichert einen Bildschirmausschnitt im PCX-Format auf das aktuelle */
/* Laufwerk. */
/* Parameter : die Koordinaten des Bildschirmausschnitts (X1,Y1,X2,Y2) */
/* den Dateinamen (die Erweiterung .PCX muß nicht unbedingt */
/* angegeben werden.) */
/* Bemerkung : Tritt ein Fehler während des Speicherns auf, so wird -1 */
/* zurückgegeben, ansonsten 0. */
/* Alle schon vorher aufgetretenen Fehlercodes werden ge- */
/* löscht. */
/*========================================================================*/
int far WriteAsPCX (int X1, int Y1, int X2, int Y2,
char far *FileName);
/*========================================================================*/
/* Funktion L I G H T S C R E E N */
/*------------------------------------------------------------------------*/
/* Erhellt den Bildschirm durch langsames Überführen einer schwarzen */
/* in die gewünschte Farbpalette. */
/* Parameter : den Namen der Funktion, die in der Schwarzperiode den */
/* Bildschirm , der dann erhellt wird, beschreibt. */
/* die Art des Erhellens: */
/* SOFT : jede Farbe wird sukzessive heller. */
/* VERYSOFT : die Erhellung erfolgt zuerst mit Grau- */
/* werten, zuletzt bilden sich dann die */
/* Farben aus. */
/* Bemerkung : die Parameter-Funktion muß vorher definiert werden, */
/* wenn sie auch leer ist. */
/*========================================================================*/
void far LightScreen (void (*Func)(), int Mode);
/*=========================================================================*/