home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* CURMOUSE.PAS *)
- (* 255 Zeiger im Grafikmodus *)
- (* (c) 1990 Thorsten Remer & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT CurMouse; { txMouse }
-
- INTERFACE
-
- FUNCTION MouseInit : INTEGER;
- { liefert die Anzahl der Mausknöpfe. Ist das Resultat }
- { der Funktion 0, ist kein Maustreiber eingebunden. }
-
- PROCEDURE MousePos(VAR button, x, y : INTEGER);
- { liefert die Position der Maus sowie die Anzahl der }
- { gedrückten Buttons zurück. }
-
- PROCEDURE CreateCursor(curnum : BYTE);
- { definiert einen Cursor (1..255) }
-
- PROCEDURE PutCursor(VAR xbak, ybak, x, y : INTEGER);
- { setzt den Maus-Cursor auf die Koordinaten x, y und }
- { speichert die aktuellen Werte in xbax, ybak. }
-
- PROCEDURE CursorOn(x, y : INTEGER);
- { schaltet den Cursor ein und setzt ihn auf x, y. }
-
- PROCEDURE CursorOff(xbak, ybak : INTEGER);
- { schaltet den Cursor an der Position xbak, ybak aus. }
-
- PROCEDURE GetWindow(x1, y1, x2, y2 : INTEGER);
-
- PROCEDURE PutWindow(x1, y1 : INTEGER);
-
- IMPLEMENTATION
-
- USES Dos, Crt, Graph;
-
- VAR
- Button : INTEGER;
- CurImgSize : WORD;
- CursorImage : POINTER;
- xbak, ybak : INTEGER;
- WindImgSize : WORD;
- WindowImage : POINTER;
-
- FUNCTION MouseInit : INTEGER;
- VAR
- Regs : Registers;
- Mstat : WORD;
- NButtons : WORD;
- BEGIN
- IF ((Mem[0000:$00CC] = 0) AND
- (Mem[0000:$00CD] = 0) AND
- (Mem[0000:$00CE] = 0) AND
- (Mem[0000:$00CF] = 0)) THEN
- MouseInit := 0
- ELSE BEGIN
- Regs.ax := 0;
- Intr($33, Regs);
- WITH Regs DO BEGIN
- Mstat := ax;
- NButtons := bx;
- END;
- IF Mstat = 0 THEN
- MouseInit := 0
- ELSE
- MouseInit := NButtons;
- END;
- END;
-
- PROCEDURE MousePos(VAR button, x, y : INTEGER);
- VAR
- Regs : Registers;
- BEGIN
- Regs.ax := 3;
- Intr($33, Regs);
- WITH Regs DO BEGIN
- button := bx;
- x := CX;
- y := DX;
- IF x > 639 THEN x := 639;
- IF y > 479 THEN y := 479;
- END;
- END;
-
- PROCEDURE CreateCursor(curnum : BYTE);
- BEGIN
- IF curnum = 1 THEN BEGIN
- Line( 1, 10, 10, 1);
- Line(10, 1, 5, 1);
- Line(10, 1, 10, 5);
- CurImgSize := ImageSize(1, 1, 21, 21);
- GetMem(CursorImage, CurImgSize);
- GetImage(1, 1, 20, 20, CursorImage^);
- PutImage(1, 1, CursorImage^, XorPut);
- END;
- IF curnum = 2 THEN BEGIN
- Line( 1,10, 19, 10);
- Line(10, 1, 10, 19);
- CurImgSize := ImageSize(1, 1, 21, 21);
- GetMem(CursorImage, CurImgSize);
- GetImage(1, 1, 20, 20, CursorImage^);
- PutImage(1, 1, CursorImage^, XorPut);
- END;
- END;
-
- PROCEDURE PutCursor(VAR xbak, ybak, x, y : INTEGER);
- BEGIN
- PutImage(xbak, ybak, CursorImage^, XorPut);
- PutImage(x, y, CursorImage^, XorPut);
- xbak := x; ybak := y;
- END;
-
- PROCEDURE CursorOn(x, y : INTEGER);
- BEGIN
- PutImage(x, y, CursorImage^, XorPut);
- END;
-
- PROCEDURE CursorOff(xbak, ybak : INTEGER);
- BEGIN
- PutImage(xbak, ybak, CursorImage^, XorPut);
- END;
-
- PROCEDURE GetWindow(x1, y1, x2, y2 : INTEGER);
- BEGIN
- WindImgSize := ImageSize(x1, y1, x2, y2);
- GetMem(WindowImage, WindImgSize);
- GetImage(x1, y1, x2, y2, WindowImage^);
- END;
-
- PROCEDURE PutWindow(x1, y1 : INTEGER);
- BEGIN
- PutImage(x1, y1, WindowImage^, CopyPut);
- FreeMem(WindowImage, WindImgSize);
- END;
-
- END.
- (* ------------------------------------------------------ *)
- (* Ende von CURMOUSE.PAS *)