MODULE GSXTEST;

FROM GSXMAIN IMPORT OpenStation, CRT, CloseStation, VECTOR;
FROM GSXIN   IMPORT Locator, Mouse, CursorX, CursorY;
FROM GSXFILL IMPORT FillBar, FillPie, FillStyle, FillIndex, hatch, pattern;
FROM MathLib IMPORT Random;
FROM GSXLINE IMPORT PolyLine, LineType, solid, dot;

VAR
  X, Y : CARDINAL;
  C    : CHAR;
  Moved, Terminated : BOOLEAN;
  line : ARRAY [1..2] OF VECTOR;
  i    : CARDINAL;

PROCEDURE R () : CARDINAL;
BEGIN
  RETURN 1 + TRUNC ( Random () * 5.99 );
END R;

BEGIN
  OpenStation ( CRT );
  LineType ( dot );
  FOR i := 0 TO 32 DO
    Y := i * 1024;
    IF Y > 32767 THEN Y := 32767; END;
    line[1].X := 0;     line[1].Y := Y;
    line[2].X := 32767; line[2].Y := Y;
    PolyLine ( 2, line );
  END;
  LineType ( solid );
  FOR i := 0 TO 32 DO
    X := i * 1024;
    IF X > 32767 THEN X := 32767; END;
    line[1].X := X;     line[1].Y := 0;
    line[2].X := X;     line[2].Y := 32767;
    PolyLine ( 2, line );
  END;
  REPEAT
    Locator ( Mouse, C, Moved, Terminated );
    IF Terminated THEN
      X := ( ( CursorX + 512 ) DIV 1024 ) * 1024;
      Y := ( ( CursorY + 512 ) DIV 1024 ) * 1024;
      IF C = " " THEN
        FillStyle ( pattern );
        FillIndex ( R () );
        FillPie ( X, Y, R () * 500, R () * 400, R () * 600 );
      END;
      IF C = "!" THEN
        FillStyle ( hatch );
        FillIndex ( R () );
        FillBar    ( X, Y, R () * 800, R () * 600 );
      END;
    END;
  UNTIL Terminated AND ( C = '"' );
  CloseStation;
END GSXTEST.
                                                                                                         