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