(*******************************************************************)
(** Release history:                                              **)
(**    17th January 1985   version 1.0.0 First port to new world  **)
(*******************************************************************)
MODULE GraphTest;
FROM SysStreams IMPORT sysOut,sysErr;
FROM WriteF IMPORT WriteF0;
IMPORT Graphics;
IMPORT Polysys;
IMPORT HP, BBC(*, NS16K*);
PROCEDURE BRK1;BEGIN END BRK1;PROCEDURE BRK2;BEGIN END BRK2; (* Breakpoints *)
VAR
   BBCDev, HPDev,
   Dev :Graphics.GSTREAM;
   I   :INTEGER;
   Red,Green,Blue :Graphics.COLOUR;
   Work :Polysys.OPENSHEET;
   Square :Polysys.POLYGON;
   Buttons :ARRAY [0..255] OF CHAR;
   X, Y :INTEGER;
   PROCEDURE Cross(Dev :Graphics.GSTREAM; X, Y :INTEGER);
   BEGIN
      Graphics.MoveTo(Dev, X-250, Y-250);
      Graphics.LineTo(Dev, X+250, Y+250);
      Graphics.MoveTo(Dev, X+250, Y-250);
      Graphics.LineTo(Dev, X-250, Y+250);
   END Cross;
BEGIN
   BRK1();
WriteF0(sysErr, "opening HP\N");
(* HPDev := HP.FindOutput ("device hp7220c", "hp.plotfile");*)
   BBCDev := BBC.FindOutput("mode 0", 0,0, 1279,1023);
   Dev := BBCDev;
   I := Graphics.Command (Dev, "mode 8");
WriteF0(sysErr, "debug on?\N");
   I := Graphics.Command (Dev, "debug on");
WriteF0(sysErr, "debug tables?\N");
   I := Graphics.Command (Dev, "debug tables");
WriteF0(sysErr, "paper A3\N");
   I := Graphics.Command (Dev, "paper A3");
WriteF0(sysErr, "scale 1000\N");
   I := Graphics.Command (Dev, "scale 1000");
WriteF0(sysErr, "xon xoff\N");
   I := Graphics.Command (Dev, "xon xoff");
WriteF0(sysErr, "surface\N");
   Graphics.Surface (Dev, 0, 0, 3000, 3000); (* Should be ignored *)
WriteF0(sysErr, "red\N");
   Red := Graphics.Colour (Dev, "red");
   Green := Graphics.Colour (Dev, "dotted_green hatch");
   Blue := Graphics.Colour (Dev, "black outline");
   Graphics.SetLineColour (Dev, Green);
   Graphics.SetAreaColour (Dev, Red);
   Work := Polysys.newsheet (100, 100);
   Polysys.edgeto (Work, 800,100);
   Polysys.edgeto (Work, 800,800);
   Polysys.edgeto (Work, 100,800);
   Square := Polysys.unop(Polysys.Pos,
                          Polysys.endsheet (Work, Polysys.Complain));

   Graphics.DrawPolygon (Dev, Square);
   Graphics.MoveTo (Dev, 0,0);
   Graphics.LineTo (Dev, 0,1000);
   Graphics.LineTo (Dev, 1000,1000);
   Graphics.LineTo (Dev, 1000,0);
   Graphics.LineTo (Dev, 0,0);
   Graphics.TextAt (Dev, 500,500, "Text at 500,500");
   Graphics.Update (Dev);
BRK2();
   Graphics.SetAreaColour (Dev, Blue);
   Graphics.DrawPolygon (Dev, Square);
   Graphics.TextBox (Dev, 1000,1000, 3000,3000, "a very very very long text string for testing porpoises!");
(* REPEAT
      Graphics.ReadCursor(Dev,1000,1000,2000,2000,X,Y,Buttons);
      Cross(Dev, X, Y);
   UNTIL X < 0;*)
   Graphics.Update (Dev);
(* I := Graphics.Command (Dev, "view");
   I := Graphics.Command (Dev, "debug params");
   I := Graphics.Command (Dev, "debug off");
   Graphics.Delete (Dev);*)
END GraphTest.
