Program BUTTEST;

(*$I GSXMAIN  *)
(*$I GSXIN    *)
(*$I GSXFILL  *)
(*$I GSXLINE  *)
(*$I GSXBUTON *)

VAR
  X, Y : INTEGER;
  C    : CHAR;
  Moved, Terminated : BOOLEAN;
  line : ARRAY [1..2] OF VECTOR;
  i    : INTEGER;
  Break : BOOLEAN;
  B1,B2,B3 : BUTTON;

PROCEDURE Pie ( c : CHAR );
BEGIN
  FillStyle ( hatch );
  FillIndex ( xxx );
  DrawMode ( replace );
  CASE c OF
  ' ' : FillPie ( 16384, 16384, 2000, 0, 1800 );
  '!' : FillPie ( 16384, 16384, 2000, 0, 1900 );
  '"' : FillPie ( 16384, 16384, 2000, 0 ,2000 );
  END;
END;

PROCEDURE Bar ( c : CHAR );
BEGIN
  FillStyle ( pattern );
  FillIndex ( 5 );
  DrawMode ( replace );
  CASE c OF
  ' ' : FillBar ( 16384, 16384, 2048, 2048 );
  '!' : FillBar ( 16384, 16384, 3072, 3072 );
  '"' : FillBar ( 16384, 16384, 4096, 4096 );
  END;
END;

PROCEDURE Ende ( c : CHAR );
BEGIN
  Break := TRUE;
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;
  B1 := CreateButton ( 1000, 1000, 2000, 2000, Addr (Pie) );
  B2 := CreateButton ( 10000,10000,2000, 2000, Addr (Bar) );
  B3 := CreateButton ( 1000, 30000,2000, 2000, Addr (Ende) );
  FillStyle ( pattern );
  FillIndex ( 1 ); FillBar ( 1000, 1000, 2000, 2000 );
  FillIndex ( 2 ); FillBar ( 10000,10000,2000, 2000 );
  FillIndex ( 3 ); FillBar ( 1000, 30000,2000, 2000 );
  REPEAT
    Break := FALSE;
    GetLocator ( Mouse, C, Moved, Terminated );
    IF CursorAtButton ( B1 ) THEN
      BEGIN
        FlipButtonArea ( B1 ); ExecuteButton ( B1, C ); FlipButtonArea ( B1 );
      END;
    IF CursorAtButton ( B2 ) THEN
      BEGIN
        FlipButtonArea ( B2 ); ExecuteButton ( B2, C ); FlipButtonArea ( B2 );
      END;
    IF CursorAtButton ( B3 ) THEN
      BEGIN
        FlipButtonArea ( B3 ); ExecuteButton ( B3, C );
      END;
  UNTIL Break;
  CloseStation;
END.
