home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / convrtrs / supershm.lzh / src / Support.Mod < prev   
Encoding:
Modula Implementation  |  1989-10-04  |  3.0 KB  |  82 lines

  1. IMPLEMENTATION MODULE Support;
  2.  
  3. (*======================================================================*)
  4. (*                       SuperSHAM Support Routines                     *)
  5. (*======================================================================*)
  6. (*         ⌐ Copyright 1989 Robert Salesas, All Rights Reserved         *)
  7. (*                         Use as you please!!!                         *)
  8. (*======================================================================*)
  9. (*      Version: 3.10           Author : Robert Salesas                 *)
  10. (*      Date   : 05-Oct-89      Changes: Original                       *)
  11. (*======================================================================*)
  12.  
  13.  
  14. (*$L+*)
  15.  
  16. FROM SYSTEM           IMPORT  ADR, BYTE, STRPTR;
  17. FROM Intuition        IMPORT  DisplayAlert, WindowPtr, IntuiMessagePtr;
  18. FROM Strings          IMPORT  LengthStr, AssignStr;
  19. FROM LoadSHAM         IMPORT  SHAMRegsPtr;
  20. FROM EasyPrintPict    IMPORT  PrintRastPort;
  21. FROM Views            IMPORT  ColorMap, ViewModeSet, ViewModes;
  22. FROM Ports            IMPORT  GetMsg, ReplyMsg;
  23.  
  24.  
  25.   PROCEDURE Alert(First, Second : ARRAY OF CHAR) : BOOLEAN;
  26.   VAR
  27.     AlertString     :   ARRAY [0..255] OF BYTE;
  28.     StringPtr       :   STRPTR;
  29.     Len             :   CARDINAL;
  30.   BEGIN
  31.     Len := LengthStr(First);
  32.  
  33.     AlertString[0] := BYTE((80 - Len) * 4 DIV 256);
  34.     AlertString[1] := BYTE((80 - Len) * 4 MOD 256);
  35.     AlertString[2] := BYTE(14);
  36.     StringPtr := ADR(AlertString[3]);  AssignStr(StringPtr^, First);
  37.     AlertString[Len + 3] := BYTE(0);  AlertString[Len + 4] := BYTE(1);
  38.  
  39.     AlertString[Len + 5] := BYTE((80 - LengthStr(Second)) * 4 DIV 256);
  40.     AlertString[Len + 6] := BYTE((80 - LengthStr(Second)) * 4 MOD 256);
  41.     AlertString[Len + 7] := BYTE(24);
  42.     StringPtr := ADR(AlertString[Len + 8]);  AssignStr(StringPtr^, Second);
  43.     Len := Len + LengthStr(Second);
  44.     AlertString[Len + 8] := BYTE(0);  AlertString[Len + 9] := BYTE(1);
  45.  
  46.     AlertString[Len + 10] := BYTE(0);  AlertString[Len + 11] := BYTE(16);
  47.     AlertString[Len + 12] := BYTE(40);
  48.     StringPtr := ADR(AlertString[Len + 13]);  AssignStr(StringPtr^,
  49.       "Left Mouse Button To Print...              Right Mouse Button To Continue...");
  50.     AlertString[Len + 89] := BYTE(0);  AlertString[Len + 90] := BYTE(0);
  51.  
  52.     RETURN DisplayAlert(NIL, ADR(AlertString), 50);
  53.   END Alert;
  54.  
  55.   PROCEDURE PrintScreen(Wp : WindowPtr;  Regs : SHAMRegsPtr) : BOOLEAN;
  56.   VAR
  57.     L       :   CARDINAL;
  58.     CMap    :   ColorMap;
  59.     Succ    :   BOOLEAN;
  60.     Msg     :   IntuiMessagePtr;
  61.   BEGIN
  62.     CMap := Wp^.WScreen^.VPort.ColorMap^;
  63.     L := 0;
  64.     REPEAT
  65.       CMap.ColorTable := ADR(Regs^[L, 0]);
  66.       IF (Wp^.Height > 200) THEN
  67.         Succ := PrintRastPort(Wp^.RPort, ADR(CMap), ViewModeSet{Lace, HAM}, 0, L + L, 320, 2);
  68.       ELSE
  69.         Succ := PrintRastPort(Wp^.RPort, ADR(CMap), ViewModeSet{HAM}, 0, L, 320, 1);
  70.       END;
  71.       Msg := GetMsg(Wp^.UserPort);
  72.       IF (Msg # NIL) THEN
  73.         ReplyMsg(Msg);
  74.         Succ := FALSE;
  75.       END;
  76.       INC(L);
  77.     UNTIL (NOT Succ) OR (L = 200);
  78.     RETURN Succ;
  79.   END PrintScreen;
  80.  
  81. END Support.
  82.