home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------- *)
- (* EXTVSM.PAS *)
- (* *)
- (* ■ ExtVSManager: Fügt VSMangerObj noch die Methoden zum*)
- (* bearbeiten des "aktiven" virtuellen Bildschirms *)
- (* hinzu. *)
- (* *)
- (* (c) 1991 by R.Reichert & toolbox *)
- (* ----------------------------------------------------- *)
- UNIT ExtVSM;
-
- INTERFACE
-
- USES VSObj, ScrObj, RootVSM;
-
- TYPE
- ScreenObjPtr = ScrObj.ScreenObjPtr;
- ScreenObj = ScrObj.ScreenObj;
-
- CONST
- Screen = 0;
-
- TYPE
- VirtualScreenPtr = VSObj.VirtualScreenPtr;
- VirtualScreen = VSObj.VirtualScreen;
- ExtVSMPtr = ^ExtVSManager;
- ExtVSManager = OBJECT (VSManagerObj)
- PROCEDURE Clear;
- PROCEDURE ClearPart (x1,y1,x2,y2:BYTE); VIRTUAL;
- PROCEDURE Fill (Chr:CHAR;Attr:BYTE); VIRTUAL;
- PROCEDURE FillPart
- (x1, y1, x2, y2, Attr : BYTE; Chr : CHAR); VIRTUAL;
- PROCEDURE FillPartAttr
- (x1, y1, x2, y2, Attr : BYTE); VIRTUAL;
- PROCEDURE WriteChr
- (x, y, Attr : BYTE; Chr : CHAR); VIRTUAL;
- PROCEDURE WriteStr
- (x, y, Attr : BYTE; Str : STRING); VIRTUAL;
- PROCEDURE WriteAttr (x, y, Attr : BYTE); VIRTUAL;
-
- PROCEDURE CopyVS (Source, Dest : BYTE); VIRTUAL;
- PROCEDURE CopyPart
- (x1, y1, x2, y2,
- ToX, ToY, Source, Dest : BYTE); VIRTUAL;
- PROCEDURE CopyToScr; VIRTUAL;
- PROCEDURE CopyPartToScr
- (x1, y1, x2, y2, ToX, ToY : BYTE); VIRTUAL;
- END;
-
- IMPLEMENTATION
-
- PROCEDURE ExtVSManager.Clear;
- BEGIN
- VScreens^[VSAkt]^.Clear;
- END;
-
- PROCEDURE ExtVSManager.ClearPart (x1,y1,x2,y2 : BYTE);
- BEGIN
- VScreens^[VSAkt]^.ClearPart (x1, y1, x2, y2);
- END;
-
- PROCEDURE ExtVSManager.Fill (Chr : CHAR; Attr: BYTE);
- BEGIN
- VScreens^[VSAkt]^.Fill (Chr, Attr);
- END;
-
- PROCEDURE ExtVSManager.FillPart
- (x1, y1, x2, y2, Attr : BYTE; Chr : CHAR);
- BEGIN
- VScreens^[VSAkt]^.FillPart (x1,y1,x2,y2,Attr,Chr);
- END;
-
- PROCEDURE ExtVSManager.FillPartAttr
- (x1, y1, x2, y2, Attr : BYTE);
- BEGIN
- VScreens^[VSAkt]^.FillPartAttr (x1,y1,x2,y2,Attr);
- END;
-
- PROCEDURE ExtVSManager.WriteChr
- (x, y, Attr : BYTE; Chr : CHAR);
- BEGIN
- VScreens^[VSAkt]^.WriteChr (x, y, Attr, Chr);
- END;
-
- PROCEDURE ExtVSManager.WriteStr
- (x, y, Attr : BYTE; Str : STRING);
- BEGIN
- VScreens^[VSAkt]^.WriteStr (x, y, Attr, Str);
- END;
-
- PROCEDURE ExtVSManager.WriteAttr (x,y : BYTE; Attr : BYTE);
- BEGIN
- VScreens^[VSAkt]^.WriteAttr (x, y, Attr);
- END;
-
- (* ----------------------------------------------------- *)
- (* Kopiert ganzen vB (oder "richtigen" Bildschirm) mit *)
- (* Nummer Source in den mit Nummer Dest, wobei die *)
- (* Grösse des ZIEL-"Bildschirms" berücksichtigt wird. *)
- (* ----------------------------------------------------- *)
- PROCEDURE ExtVsManager.CopyVS (Source, Dest : BYTE);
- BEGIN
- IF (Source>=0) AND (Source<VSNum) AND
- (Dest>=0) AND (Dest<VSNum) THEN
- Move (VScreens^[Source]^.GetPartPtr (1,1)^,
- VScreens^[Dest]^.GetPartPtr (1,1)^,
- VScreens^[Dest]^.GetXLength*
- VScreens^[Dest]^.GetYLength*2)
- ELSE
- SetReturnCode (VSInvalidNr);
- END;
-
- (* ----------------------------------------------------- *)
- (* Kopiert Ausschnitt (x1/y1)-(x2/y2) von Source nach *)
- (* (ToX/ToY) in Dest. *)
- (* ---------------------------------------------------- *)
- PROCEDURE ExtVSManager.CopyPart
- (x1, y1, x2, y2,
- ToX, ToY, Source, Dest : BYTE);
- VAR i : BYTE;
- BEGIN
- IF (Source>=0) AND (Source<VSNum) AND
- (Dest>=0) AND (Dest<VSNum) THEN BEGIN
- IF VScreens^[Source]^.XYInVSMem (x1, y1) AND
- VScreens^[Source]^.XYInVSMem (x2, y2) AND
- VScreens^[Dest]^.XYInVSMem (ToX, ToY) AND
- VScreens^[Dest]^.XYInVSMem
- (ToX+(x2-x1), ToY+(y2-y1)) THEN
- FOR i := y1 TO y2 DO
- Move (VScreens^[Source]^.GetPartPtr (x1, i)^,
- VScreens^[Dest]^.GetPartPtr
- (ToX, ToY+i-y1)^,
- Succ (x2-x1)*2)
- ELSE
- SetReturnCode (VSXYInvalid)
- END ELSE
- SetReturnCode (VSInvalidNr);
- END;
-
- (* ----------------------------------------------------- *)
- (* Der aktuelle vB wird in den "richtigen" Bildschirm *)
- (* kopiert. *)
- (* ----------------------------------------------------- *)
- PROCEDURE ExtVSManager.CopyToScr;
- BEGIN
- IF VSAkt<>Screen THEN CopyVS (VSAkt, Screen);
- END;
-
- (* ----------------------------------------------------- *)
- (* Kopiert Ausschnitt des aktuellen vB in "richtigen" *)
- (* Bildschirm. *)
- (* ----------------------------------------------------- *)
- PROCEDURE ExtVSManager.CopyPartToScr
- (x1, y1, x2, y2, ToX, ToY : BYTE);
- BEGIN
- IF VSAkt<>Screen THEN
- CopyPart (x1, y1, x2, y2, ToX, ToY, VSAkt, Screen);
- END;
-
- END.
- (* ----------------------------------------------------- *)
- (* Ende von EXTVSM.PAS *)
- (* ----------------------------------------------------- *)