home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 22 / vsms / extvsm.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-01-04  |  5.3 KB  |  164 lines

  1. (* ----------------------------------------------------- *)
  2. (*                      EXTVSM.PAS                       *)
  3. (*                                                       *)
  4. (* ■ ExtVSManager: Fügt VSMangerObj noch die Methoden zum*)
  5. (*   bearbeiten des "aktiven" virtuellen Bildschirms     *)
  6. (*   hinzu.                                              *)
  7. (*                                                       *)
  8. (*           (c) 1991 by R.Reichert & toolbox            *)
  9. (* ----------------------------------------------------- *)
  10. UNIT ExtVSM;
  11.  
  12. INTERFACE
  13.  
  14. USES VSObj, ScrObj, RootVSM;
  15.  
  16. TYPE
  17.   ScreenObjPtr = ScrObj.ScreenObjPtr;
  18.   ScreenObj    = ScrObj.ScreenObj;
  19.  
  20. CONST
  21.   Screen = 0;
  22.  
  23. TYPE
  24.   VirtualScreenPtr = VSObj.VirtualScreenPtr;
  25.   VirtualScreen    = VSObj.VirtualScreen;
  26.   ExtVSMPtr        = ^ExtVSManager;
  27.   ExtVSManager     = OBJECT (VSManagerObj)
  28.     PROCEDURE Clear;
  29.     PROCEDURE ClearPart (x1,y1,x2,y2:BYTE);        VIRTUAL;
  30.     PROCEDURE Fill (Chr:CHAR;Attr:BYTE);           VIRTUAL;
  31.     PROCEDURE FillPart
  32.       (x1, y1, x2, y2, Attr : BYTE; Chr : CHAR);   VIRTUAL;
  33.     PROCEDURE FillPartAttr
  34.       (x1, y1, x2, y2, Attr : BYTE);               VIRTUAL;
  35.     PROCEDURE WriteChr
  36.       (x, y, Attr : BYTE; Chr : CHAR);             VIRTUAL;
  37.     PROCEDURE WriteStr
  38.       (x, y, Attr : BYTE; Str : STRING);           VIRTUAL;
  39.     PROCEDURE WriteAttr (x, y, Attr : BYTE);       VIRTUAL;
  40.  
  41.     PROCEDURE CopyVS (Source, Dest : BYTE);        VIRTUAL;
  42.     PROCEDURE CopyPart
  43.       (x1, y1, x2, y2,
  44.        ToX, ToY, Source, Dest : BYTE);             VIRTUAL;
  45.     PROCEDURE CopyToScr;                           VIRTUAL;
  46.     PROCEDURE CopyPartToScr
  47.       (x1, y1, x2, y2, ToX, ToY : BYTE);           VIRTUAL;
  48.   END;
  49.  
  50. IMPLEMENTATION
  51.  
  52. PROCEDURE ExtVSManager.Clear;
  53. BEGIN
  54.   VScreens^[VSAkt]^.Clear;
  55. END;
  56.  
  57. PROCEDURE ExtVSManager.ClearPart (x1,y1,x2,y2 : BYTE);
  58. BEGIN
  59.   VScreens^[VSAkt]^.ClearPart (x1, y1, x2, y2);
  60. END;
  61.  
  62. PROCEDURE ExtVSManager.Fill (Chr : CHAR; Attr: BYTE);
  63. BEGIN
  64.   VScreens^[VSAkt]^.Fill (Chr, Attr);
  65. END;
  66.  
  67. PROCEDURE ExtVSManager.FillPart
  68.             (x1, y1, x2, y2, Attr : BYTE; Chr : CHAR);
  69. BEGIN
  70.   VScreens^[VSAkt]^.FillPart (x1,y1,x2,y2,Attr,Chr);
  71. END;
  72.  
  73. PROCEDURE ExtVSManager.FillPartAttr
  74.             (x1, y1, x2, y2, Attr : BYTE);
  75. BEGIN
  76.   VScreens^[VSAkt]^.FillPartAttr (x1,y1,x2,y2,Attr);
  77. END;
  78.  
  79. PROCEDURE ExtVSManager.WriteChr
  80.             (x, y, Attr : BYTE; Chr : CHAR);
  81. BEGIN
  82.   VScreens^[VSAkt]^.WriteChr (x, y, Attr, Chr);
  83. END;
  84.  
  85. PROCEDURE ExtVSManager.WriteStr
  86.             (x, y, Attr : BYTE; Str : STRING);
  87. BEGIN
  88.   VScreens^[VSAkt]^.WriteStr (x, y, Attr, Str);
  89. END;
  90.  
  91. PROCEDURE ExtVSManager.WriteAttr (x,y : BYTE; Attr : BYTE);
  92. BEGIN
  93.   VScreens^[VSAkt]^.WriteAttr (x, y, Attr);
  94. END;
  95.  
  96. (* ----------------------------------------------------- *)
  97. (*  Kopiert ganzen vB (oder "richtigen" Bildschirm) mit  *)
  98. (*  Nummer Source in den mit Nummer Dest, wobei die      *)
  99. (*  Grösse des ZIEL-"Bildschirms" berücksichtigt wird.   *)
  100. (* ----------------------------------------------------- *)
  101. PROCEDURE ExtVsManager.CopyVS (Source, Dest : BYTE);
  102. BEGIN
  103.   IF (Source>=0) AND (Source<VSNum) AND
  104.      (Dest>=0) AND (Dest<VSNum) THEN
  105.     Move (VScreens^[Source]^.GetPartPtr (1,1)^,
  106.           VScreens^[Dest]^.GetPartPtr (1,1)^,
  107.           VScreens^[Dest]^.GetXLength*
  108.           VScreens^[Dest]^.GetYLength*2)
  109.   ELSE
  110.     SetReturnCode (VSInvalidNr);
  111. END;
  112.  
  113. (* ----------------------------------------------------- *)
  114. (*  Kopiert Ausschnitt (x1/y1)-(x2/y2) von Source nach   *)
  115. (*  (ToX/ToY) in Dest.                                   *)
  116. (* ----------------------------------------------------  *)
  117. PROCEDURE ExtVSManager.CopyPart
  118.             (x1, y1, x2, y2,
  119.              ToX, ToY, Source, Dest : BYTE);
  120.   VAR i : BYTE;
  121. BEGIN
  122.   IF (Source>=0) AND (Source<VSNum) AND
  123.      (Dest>=0) AND (Dest<VSNum) THEN BEGIN
  124.     IF VScreens^[Source]^.XYInVSMem (x1, y1) AND
  125.        VScreens^[Source]^.XYInVSMem (x2, y2) AND
  126.        VScreens^[Dest]^.XYInVSMem (ToX, ToY) AND
  127.        VScreens^[Dest]^.XYInVSMem
  128.          (ToX+(x2-x1), ToY+(y2-y1)) THEN
  129.       FOR i := y1 TO y2 DO
  130.         Move (VScreens^[Source]^.GetPartPtr (x1, i)^,
  131.               VScreens^[Dest]^.GetPartPtr
  132.                 (ToX, ToY+i-y1)^,
  133.               Succ (x2-x1)*2)
  134.     ELSE
  135.       SetReturnCode (VSXYInvalid)
  136.   END ELSE
  137.     SetReturnCode (VSInvalidNr);
  138. END;
  139.  
  140. (* ----------------------------------------------------- *)
  141. (*  Der aktuelle vB wird in den "richtigen" Bildschirm   *)
  142. (*  kopiert.                                             *)
  143. (* ----------------------------------------------------- *)
  144. PROCEDURE ExtVSManager.CopyToScr;
  145. BEGIN
  146.   IF VSAkt<>Screen THEN CopyVS (VSAkt, Screen);
  147. END;
  148.  
  149. (* ----------------------------------------------------- *)
  150. (*  Kopiert Ausschnitt des aktuellen vB in "richtigen"   *)
  151. (*  Bildschirm.                                          *)
  152. (* ----------------------------------------------------- *)
  153. PROCEDURE ExtVSManager.CopyPartToScr
  154.             (x1, y1, x2, y2, ToX, ToY : BYTE);
  155. BEGIN
  156.   IF VSAkt<>Screen THEN
  157.     CopyPart (x1, y1, x2, y2, ToX, ToY, VSAkt, Screen);
  158. END;
  159.  
  160. END.
  161. (* ----------------------------------------------------- *)
  162. (*                   Ende von EXTVSM.PAS                 *)
  163. (* ----------------------------------------------------- *)
  164.