dps/src/ScaledDLWindow.m3


Copyright (C) 1994, Digital Equipment Corp.

MODULE ScaledDLWindow;

IMPORT ButtonDLE, DLWindow, DPSWindow, DPS, Stdio, Fmt, Wr, Thread;

PROCEDURE Paint (t: T; box: DPS.Box; only: REFANY) =
  <*FATAL DPS.BadPostScript*>
  BEGIN
  DLWindow.Paint (t, box, only);
  IF (t.desiredWidth # 0.0) AND (t.desiredHeight # 0.0) THEN
    t.Send (" gsave 0.5 setgray 0 setlinewidth newpath "
     & Fmt.Real(t.desiredWidth-10.0) & " "
      & Fmt.Real(t.desiredHeight) & " moveto "
     & Fmt.Real(t.desiredWidth) & " "
      & Fmt.Real(t.desiredHeight) & " lineto "
     & Fmt.Real(t.desiredWidth) & " "
      & Fmt.Real(t.desiredHeight-10.0) & " lineto stroke grestore");
    END;
  END Paint;

PROCEDURE InstallButtons (t: T) =
 VAR be: ButtonDLE.E;
  BEGIN
  be := NEW ( ButtonDLE.E,
   box := DPS.Box { DPS.Place {5.0, 5.0}, DPS.Place {5.0, 5.0} },
   text := "To PS", Proc := PostscriptButtonProc );
   t.displayList.Append (be);
  ButtonDLE.Init (be, t);
  END InstallButtons;

PROCEDURE PostscriptButtonProc (<*UNUSED*> e: ButtonDLE.E;
                                           window:DPSWindow. T;
                                <*UNUSED*> event: DPS.MouseEvent) =
  <*FATAL Thread.Alerted, Wr.Failure*>
  BEGIN
  Wr.PutText (Stdio.stdout, "%!IPS-Adobe-1.0\n");
  Wr.PutText (Stdio.stdout, "%%Creator: Postscript Button in ScaledDLWindow\n");
  Wr.PutText (Stdio.stdout, "%%Title: Client Postscript Window\n");
  Wr.PutText (Stdio.stdout, "%%DocumentFonts: Times-Roman Times-Italic Times-Bold\n");
  Wr.PutText (Stdio.stdout, "%%EndComments\n");
  Wr.PutText (Stdio.stdout, "%%EndProlog\n\n");
  DPS.PostscriptToWriter (window, Stdio.stdout);
  Wr.PutText (Stdio.stdout, "\nshowpage\n\n%%Trailer\n\n");
  Wr.Flush (Stdio.stdout);
  END PostscriptButtonProc;

  BEGIN
  END ScaledDLWindow.