home *** CD-ROM | disk | FTP | other *** search
- (********************************************************)
- (* ZOOM.PAS *)
- (* Unit zur Ansteuerung des Hardwarezoom *)
- (* entsprechener VGA-Grafikkarten. *)
- (* (C) 1990 M.Schlöter & toolbox *)
-
- UNIT Zoom;
-
- INTERFACE
-
- USES Dos;
-
- (* Datentyp für Beschreibung der *)
- (* Eigenschaften des Zoom-Fensters: *)
- (* Lage der beiden Fenster-Eckpunkte, *)
- (* Vergrößerungsfaktor, *)
- (* Linke obere Ecke des *)
- (* zu vergrößernden Bereichs *)
- TYPE ZoomWindow = RECORD
- x1, y1,
- x2, y2,
- Faktor,
- xoffs, yoffs : INTEGER;
- END;
-
- (* Der Interface-Interrupt des Zoom-Treibers *)
- VAR ZoomInt : INTEGER;
-
- (* Zoomfaktor wählen *)
- PROCEDURE Zoomen(faktor : INTEGER);
-
- (* Fenster so positionieren, daß der Punkt x,y so *)
- (* gut wie möglich in der Bildschirmmitte liegt. *)
- PROCEDURE Zentrieren(x,y : INTEGER);
-
- (* Zoomen beenden *)
- PROCEDURE ZoomenEnde;
-
- (* Aktuelle Vergrößerung erfragen *)
-
- FUNCTION ZoomFaktor : INTEGER;
-
- (* Interaktiven Modus des Zoomtreibers aktivieren *)
- PROCEDURE ZoomInteraktiv;
-
- (* Werte des Zoom-Fensters erfragen *)
- PROCEDURE HoleZoomWindow(VAR Window : ZoomWindow);
-
- (* Werte des Zoom-Fensters setzen *)
- PROCEDURE SetzeZoomWindow(Window : ZoomWindow);
-
- (* Ist die Applikationstaste grdrückt ? *)
- FUNCTION AppTasteStatus : BOOLEAN;
-
- (* Koordinaten des Punktes, der links oben im *)
- (* Zoomfenster auftauchen soll. *)
- PROCEDURE ZoomOffset(xoffs, yoffs : INTEGER);
-
- IMPLEMENTATION
-
- VAR Regs : Registers;
-
- PROCEDURE Zoomen(Faktor : INTEGER);
- BEGIN
- Regs.AX := 0;
- Regs.BX := WORD(Faktor);
- Intr(ZoomInt,Regs);
- END;
-
-
- PROCEDURE Zentrieren(x,y : INTEGER);
- BEGIN
- Regs.AX := 1;
- Regs.BX := WORD(x);
- Regs.CX := WORD(y);
- Intr(ZoomInt,Regs);
- END;
-
-
- PROCEDURE ZoomenEnde;
- BEGIN
- Regs.AX := 2;
- Intr(ZoomInt,Regs);
- END;
-
-
- FUNCTION ZoomFaktor : INTEGER;
- BEGIN
- Regs.AX := 3;
- Intr(ZoomInt,Regs);
- ZoomFaktor := INTEGER(Regs.AX);
- END;
-
-
- PROCEDURE ZoomInteraktiv;
- BEGIN
- Regs.AX := 4;
- Intr(ZoomInt,Regs);
- END;
-
-
- PROCEDURE HoleZoomWindow(VAR Window : ZoomWindow);
- BEGIN
- Regs.AX := 5;
- Regs.BX := Seg(Window);
- Regs.CX := Ofs(Window);
- Intr(ZoomInt,Regs);
- END;
-
-
- PROCEDURE SetzeZoomWindow(Window : ZoomWindow);
- BEGIN
- Regs.AX := 6;
- Regs.BX := Seg(Window);
- Regs.CX := Ofs(Window);
- Intr(ZoomInt,Regs);
- END;
-
-
- FUNCTION AppTasteStatus : BOOLEAN;
- BEGIN
- Regs.AX := 7;
- Intr(ZoomInt,Regs);
- AppTasteStatus := INTEGER(Regs.AX) = 1;
- END;
-
-
- PROCEDURE ZoomOffset(xoffs, yoffs : INTEGER);
- BEGIN
- Regs.AX := 8;
- Regs.BX := WORD(xoffs);
- Regs.CX := WORD(yoffs);
- Intr(ZoomInt,Regs);
- END;
-
-
- BEGIN
- (* Interface-Vektor des residenten *)
- (* Zoom-Tools erfragen. *)
- Regs.AH := $FF;
- Intr($16,Regs);
- ZoomInt := INTEGER(Regs.AL)+1;
- END.
- (*******************************************************)
- (* Ende ZOOM.PAS *)