home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Taifun Collection
/
Taifun_Collection_Vol_1.iso
/
richter
/
8353
/
8353.mhs
/
RICHTER.DTP
/
C_LIBRAR
/
MAUS256.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-20
|
23KB
|
367 lines
/*/////////////////////////////////////////////////////////////////////////*/
/* */
/* H E A D E R Z U D E N M A U S F U N K T I O N E N */
/* */
/* 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 */
/*/////////////////////////////////////////////////////////////////////////*/
/***************************************************************************/
/*-----------------------------------------------------Typen-Definitionen-*/
typedef struct mouse {
int Druck,X,Y;
};
typedef struct graphcursor {
int Mask[2][16];
int xspot,yspot;
};
typedef struct mousesens {
int MickeyHor, MickeyVert, Schwelle;
};
typedef struct mousebutt {
int ButtStatus, ButtPressRel;
int MPosHor, MPosVert;
};
typedef struct mousemotion {
signed int Hor, Vert;
};
typedef struct aboutmouse {
int Vorkomma, Nachkomma;
int MausTyp, PCTyp;
};
/*------------------------------------------------Konstanten-Definitionen-*/
enum MOUSE_TYPES { PFEIL, PFEILAUF, PFEILLINKS, HAKEN, HAND, FINGER,
KREUZ, SANDUHR };
#define NO_BL 0,0,0,0
/*-------------------------------------------------Variablen-Definitionen-*/
extern struct graphcursor MouseGrCursor[9];
/* hält fest, ob eine Maus im System vorhanden ist */
extern int MausOK;
/* die Werte des alten, deinstallierten Event-Handlers */
extern int OldMask;
extern int OldHandlerSeg, OldHandlerOff;
/**************************************************************************/
/* Funktions-Definitionen */
/**************************************************************************/
/*========================================================================*/
/* Funktion C H A N G E M C U R S O R */
/*------------------------------------------------------------------------*/
/* Bestimmt das Erscheinungsbild des Mauscursors. */
/* Parameter : die Art des Mauscursors. */
/* Folgende Cursorarten stehen zur Auswahl: */
/* 0 - NORMAL, 1 - PFEILAUF, 2 - PFEILLINKS, 3 - HAKEN, */
/* 4 - HAND, 5 - KREUZ, 6 - SANDUHR */
/* die Randfarbe , */
/* die Füllfarbe des Mauscursors. */
/* Bemerkung : -1 als Parameter beläßt die alte Einstellung. */
/*========================================================================*/
void far ChangeMCursor (int CurType, unsigned char Rand, unsigned char Fuell);
/*========================================================================*/
/* Funktion C L O S E M O U S E */
/*------------------------------------------------------------------------*/
/* Führt einen generellen Reset der Maus durch. */
/* Parameter: keine. */
/* Bemerkung: Zum Aufruf der Funktion muß die Maus vorher aktiv gewesen */
/* sein. */
/* Wird von CLOSE256 aufgerufen. */
/*========================================================================*/
void far CloseMouse ();
/*========================================================================*/
/* Funktion G E T M A C T P A G E */
/*------------------------------------------------------------------------*/
/* Ermittelt die gerade aktive Bildschirmseite für die Maus. */
/* Parameter: keine. */
/* Rückgabe : die Nummer der Bildschirmseite, im Fehlerfalle -1. */
/*========================================================================*/
int far GetMActPage ();
/*========================================================================*/
/* Funktion G E T M B U F F E R */
/*------------------------------------------------------------------------*/
/* Ermittelt die Größe jenes Puffers, der die Mausdaten aufnehmen kann. */
/* Parameter : keine. */
/* Rückgabe : die Größe des Puffers in Byte oder 0 im Fehlerfalle. */
/* Bemerkung : Unterfunktion 15h des Interrupts 33h. */
/*========================================================================*/
unsigned int far GetMBuffer ();
/*========================================================================*/
/* Funktion G E T M B U T T O N R E L E A S E */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über den Status der Mausknöpfe, wieoft der ange- */
/* sprochene Mausknopf losgelassen wurde und an welcher Position */
/* sich die Maus beim Aufruf der Funktion befand. */
/* Parameter : den angesprochenen Mausknopf */
/* eine Variable vom Typ MOUSEBUTT für die anderen Werte. */
/* Weitere Informationen siehe SAYMBUTTONSTATUS. */
/* Bemerkung : Unterfunktion 06h des Interrupts 33h. */
/*========================================================================*/
void far GetMButtonRelease (int WhatButton, struct mousebutt far *MButt);
/*========================================================================*/
/* Funktion G E T M B U T T O N S T A T U S */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über den Status der Mausknöpfe, wieoft der ange- */
/* sprochene Mausknopf betätigt wurde und an welcher Position */
/* sich die Maus beim Aufruf der Funktion befand. */
/* Parameter : den angesprochenen Mausknopf (0 - linker, 1 - rechter, */
/* 2 - mittlerer Mausknopf) */
/* eine Variable vom Typ MOUSEBUTT für die anderen Werte. */
/* ad Status : 1 = linker, 2 = rechter, 3 = linker und rechter, */
/* 4 = mittlerer, 5 = linker und mittlerer, */
/* 6 = rechter und mittlerer, 7 = alle drei Maus- */
/* knöpfe beim Aufruf der Funktion betätigt. */
/* Bemerkung : Unterfunktion 05h des Interrupts 33h. */
/*========================================================================*/
void far GetMButtonStatus (int WhatButton, struct mousebutt far *MButt);
/*========================================================================*/
/* Funktion G E T M M O T I O N */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über die Bewegungswerte seit dem letzten Aufruf dieser */
/* Funktion. */
/* Parameter : Variable vom Typ MOUSEMOTION für die Aufnahme dieser */
/* Werte. */
/* ad Werte : horizontal : > 0 = nach rechts, < 0 = nach links. */
/* vertikal : > 0 = nach unten, < 0 = nach oben. */
/* Um sinnvolle Werte zu liefern muß die Funktion zweimal aufge- */
/* rufen werden. */
/* Bemerkung : Unterfunktion 0Bh des Interrupts 33h. */
/*========================================================================*/
void far GetMMotion (struct mousemotion far *MMotion);
/*========================================================================*/
/* Funktion G E T M P O S */
/*------------------------------------------------------------------------*/
/* Bestimmt die Position des Mauscursors und welcher Mausknopf zuletzt */
/* gedrückt wurde. */
/* Parameter : Eine Variable vom Strukturtyp MOUSE, die die Werte auf- */
/* nehmen kann. */
/* Druck = 1 : linker, */
/* = 2 : rechter, */
/* = 4 : mittlerer Mausknopf gedrückt. */
/* Bemerkung : Unterfunktion 3 des Interrupts 33h. */
/*========================================================================*/
void far GetMPos (struct mouse far *Maus);
/*========================================================================*/
/* Funktion G E T M S E N S */
/*------------------------------------------------------------------------*/
/* Gibt die Werte für die Maus-Sensitivität zurück, die über die */
/* Funktion SETMSENS eingestellt wurden. */
/* Parameter : eine Variable vom Typ MOUSESENS, die die Werte aufnimmt. */
/* Bemerkung : Unterfunktion 1Bh des Interrupts 33h. */
/*========================================================================*/
void far GetMSens (struct mousesens far *MSens);
/*========================================================================*/
/* Funktion G E T M S T A T */
/*------------------------------------------------------------------------*/
/* Gibt Auskunft über die Versionsnummer des Maustreibers und die Art */
/* der Maus. */
/* Parameter : Variable vom Typ ABOUTMOUSE für die Werte. */
/* Rückgaben : Vorkommateil der Versionsnummer */
/* Nachkommateil der Versionsnummer */
/* Maustyp : 1 - Bus-Maus, 2 - serielle Maus, */
/* 3 - InPort-Maus, 4 - PS/2-Maus, 5 - HP-Maus. */
/* PC-Typ (Interrupttyp) : 0 - PS/2 */
/* 2,3,4,5,7 - PC */
/* Bemerkung : Unterfunktion 24h des Interrupts 33h. */
/*========================================================================*/
void far GetMStat (struct aboutmouse far *AboutM);
/*========================================================================*/
/* Funktion H I D E M C U R S O R */
/*------------------------------------------------------------------------*/
/* Entfernt den Mauscursor vom Bildschirm. */
/* Parameter : keine. */
/* Bemerkung : Diese Funktion ersetzt die Unterfunktion 2 des Inter- */
/* rupts 33h. */
/*========================================================================*/
void far HideMCursor ();
/*========================================================================*/
/* Funktion I N I T M O U S E */
/*------------------------------------------------------------------------*/
/* Initialisiert den Maustreiber, versteckt die Maus, setzt sie */
/* (unsichtbar) in die Mitte des Bildschirmes und installiert einen */
/* Eventhandler, der die Mausbewegungen steuert. */
/* Parameter : 0 oder 1, ob abgebrochen werden soll, wenn kein Maus- */
/* treiber gefunden wurde. */
/* Bemerkung : Unterfunktion 0 des Interrupts 33h. */
/*========================================================================*/
void far InitMouse (int Exit);
/*========================================================================*/
/* Funktion I N S T H A N D L E R */
/*------------------------------------------------------------------------*/
/* Installiert einen Event-Handler, der die Maus bei bestimmten Maus- */
/* aktionen anders reagieren läßt als dies normalerweise */
/* der Fall ist. */
/* Parameter : eine Bitmaske, die den Event für das Aufrufen der alter- */
/* nativen Funktion bestimmt (siehe Maus-Interrupt). */
/* Zeiger auf eine Funktion, die die standardmäßige ersetzt.*/
/* Bemerkung : Unterfunktion 0Ch des Interrupts 33h. */
/* Die Funktion legt die Werte des deinstallierten Handlers */
/* in den Variablen OLDMASK, OLDHANDLERSEG und OLD- */
/* HANDLEROFF ab. */
/*========================================================================*/
void far InstHandler (int Event, void far *Func);
/*========================================================================*/
/* Funktionen M O U S E I N X , M O U S E I N X Y , M O U S E I N Y */
/*------------------------------------------------------------------------*/
/* Überprüft, ob sich die Maus in einer Zeile (MOUSEINY), Spalte */
/* (MOUSEINX) oder in einem rechteckigen Bereich (MOUSEINXY) */
/* befindet und ob gleichzeitig ein Mausknopf gedrückt wurde. */
/* Parameter : der Name der Maus-Variablen, */
/* gedrückter Mausknopf (1,2,3), */
/* linke X-Koordinate (MOUSEINX, MOUSEINXY), */
/* rechte X-Koordinate (MOUSEINX, MOUSEINXY), */
/* obere Y-Koordinate (MOUSEINXY, MOUSEINY), */
/* untere Y-Koordinate (MOUSEINXY, MOUSEINY). */
/* Rückgabe : 1 - Druck OK, Maus im Bereich */
/* 0 - nicht gedrückt, oder Maus nicht im Bereich */
/*========================================================================*/
int far MouseInX (struct mouse *mvar, int Button, int X1, int X2);
int far MouseInXY (struct mouse *mvar,
int Druck, int X1, int X2, int Y1, int Y2);
int far MouseInY (struct mouse *mvar, int Button, int Y1, int Y2);
/*========================================================================*/
/* Funktion M B L A C K O U T */
/*------------------------------------------------------------------------*/
/* Definiert einen Ausschlußbereich, in dem die Maus nicht sichtbar ist.*/
/* Parameter : die Koordinaten des Bereichs (X1,Y1,X2,Y2). */
/* NO_BL als Parameter schaltet diese Funktion aus. */
/* Bemerkung : Diese Funktion ersetzt die Unterfunktion 10h des Inter- */
/* rupts 33h. */
/* Funktioniert nicht, wenn die Maus sichtbar ist! */
/*========================================================================*/
void far MBlackOut (int X1, int Y1, int X2, int Y2);
/*========================================================================*/
/* Funktion M A K E M C U R S O R */
/*------------------------------------------------------------------------*/
/* Initialisiert den Mauscursor, bestimmt die Bildschirmseite, auf der */
/* er sich bewegt, und sein Erscheinungsbild. */
/* Parameter : die Seitennummer (0 - 3) */
/* die neue X-Koordinate, wenn nicht -1 */
/* die neue Y-Koordinate, wenn nicht -1 */
/* die neue Randfarbe des Cursors, wenn nicht -1 */
/* die neue Füllfarbe des Cursors, wenn nicht -1 */
/* die neue Cursor-Figur, wenn nicht gewünscht -1. */
/* Bemerkung : Diese Funktion ersetzt die Unterfunktion 1Dh des Inter- */
/* rupts 33h (teilweise). */
/*========================================================================*/
void far MakeMCursor (int PageNr, int X, int Y, int RF, int FF, int Shape);
/*========================================================================*/
/* Funktion P U T M O U S E A T */
/*------------------------------------------------------------------------*/
/* Setzt den Mauscursor an eine bestimmt Bildschirmposition. */
/* Parameter : die X-Koordinate (0 - 319) */
/* die Y-Koordinate (0 - 199) */
/* die neue Cursorfigur, ansonsten -1. */
/* die neue Randfarbe, ansonsten -1. */
/* die neue Füllfarbe, ansonsten -1. */
/* Bemerkung : Unterfunktion 4 des Interrupts 33h. */
/*========================================================================*/
void far PutMouseAt (int X, int Y, int RF, int FF, int Shape);
/*========================================================================*/
/* Funktion R E S T O R E M O U S E */
/*------------------------------------------------------------------------*/
/* Sichert alle Mausdaten in einem Puffer und diversen Variablen. */
/* Parameter : keine. */
/*========================================================================*/
void far RestoreMouse ();
/*========================================================================*/
/* Funktion S A V E M O U S E */
/*------------------------------------------------------------------------*/
/* Sichert alle Mausdaten in einem Puffer und diversen Variablen. */
/* Parameter : keine. */
/*========================================================================*/
void far SaveMouse ();
/*========================================================================*/
/* Funktion S E T M S E N S */
/*------------------------------------------------------------------------*/
/* Legt die Geschwindigkeit fest, nach deren Erreichen sich die Maus- */
/* geschwindigkeit verdoppelt; weiters wird die Anzahl von Mickeys */
/* (8 Punkte) festgelegt, die bei einer Mausbewegung zurückgelegt */
/* werden. */
/* Parameter : den Horizontalwert für die Geschwindigkeit (1 - 32767) */
/* den Vertikalwert für die Geschwindigkeit (1 - 32767) */
/* die Geschwindigkeit in Mickeys pro Sekunde. */
/* Wird 0 (Null) beim dritten Parameter angegeben, so wird wieder */
/* der Defaultwert von 64 Mickeys pro Sekunde eingestellt. */
/* Je größer die Werte der ersten beiden Parameter, desto */
/* langsamer bewegt sich die Maus. */
/* Bemerkung : Unterfunktion 1Ah des Interrupts 33h. */
/*========================================================================*/
void far SetMSens (int MickeyHor, int MickeyVert, int MickeysProSec);
/*========================================================================*/
/* Funktion S E T X Y R A N G E */
/*------------------------------------------------------------------------*/
/* Legt den horizontalen und vertikalen Bewegungsbereich der Maus fest. */
/* Parameter : linker X-Wert (0 - 319) */
/* rechter X-Wert (0 - 319) */
/* oberer Y-Wert (0 - 199) */
/* unterer Y-Wert (0 - 199) */
/* Bemerkung : Unterfunktion 07h und 08h des Interrupts 33h. */
/*========================================================================*/
void far SetXYRange (int XMin, int XMax, int YMin, int YMax);
/*========================================================================*/
/* Funktion S H O W M C U R S O R */
/*------------------------------------------------------------------------*/
/* Bringt den Mauscursor auf den Bildschirm. */
/* Parameter : keine. */
/* Bemerkung : Diese Funktion ersetzt die Unterfunktion 1 des Inter- */
/* rupts 33h. */
/* Dem Aufruf von SHOWMCURSOR muß ein Aufruf von */
/* MAKEMCURSOR vorangegangen sein! */
/*========================================================================*/
void far ShowMCursor ();
/*========================================================================*/
/* Funktion T U R N M O U S E */
/*------------------------------------------------------------------------*/
/* Schaltet den Maustreiber OFF oder ON, je nach Parameter. */
/* Parameter : 0 - OFF, oder 1 - ON. */
/* Bemerkung : Unterfunktion 1Fh und 20h des Interrupts 33h. */
/*========================================================================*/
void far TurnMouse (int Mode);
/*========================================================================*/