2
0

TestGraph.Mod 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. MODULE TestGraph;
  2. IMPORT G := Graph, Out;
  3. VAR c, f: G.Color;
  4. X, Y, W, H: INTEGER;
  5. font: G.Font;
  6. ZZ: ARRAY 2 OF CHAR;
  7. PROCEDURE Draw;
  8. BEGIN
  9. G.ClearToColor(c);
  10. IF X # -1 THEN
  11. G.Line(0, 0, X, Y, f);
  12. G.Line(0, H, X, Y, f);
  13. G.Line(W, H, X, Y, f);
  14. G.Line(W, 0, X, Y, f)
  15. END
  16. END Draw;
  17. PROCEDURE Message;
  18. BEGIN
  19. IF font # NIL THEN
  20. G.DrawString('Press space to return. X for down, ESC for up.',
  21. 0, 0, font, f);
  22. G.DrawString(ZZ, 0, 16, font, f)
  23. END
  24. END Message;
  25. PROCEDURE Animation;
  26. VAR ch: CHAR;
  27. BEGIN ch := 0X;
  28. REPEAT
  29. INC(X); IF X > W THEN X := 0 END;
  30. Draw;
  31. Message;
  32. G.Flip;
  33. G.Delay(1);
  34. IF G.KeyPressed() THEN
  35. ch := G.ReadKey();
  36. IF ch = 'x' THEN INC(Y, 100)
  37. ELSIF ch = CHR(27) THEN DEC(Y, 100)
  38. END
  39. END
  40. UNTIL ch = ' ';
  41. END Animation;
  42. PROCEDURE ByKey;
  43. VAR ch: CHAR;
  44. BEGIN
  45. REPEAT
  46. INC(X, 50); IF X > W THEN X := 0 END;
  47. Draw;
  48. Message;
  49. G.Flip;
  50. ch := G.ReadKey();
  51. IF ch = 'x' THEN INC(Y, 100)
  52. ELSIF ch = CHR(27) THEN DEC(Y, 100)
  53. ELSE ZZ[0] := ch
  54. END
  55. UNTIL ch = ' '
  56. END ByKey;
  57. PROCEDURE Do;
  58. VAR e: G.Event;
  59. done: BOOLEAN;
  60. BEGIN
  61. (*G.Settings(320, 200, {G.window});*)
  62. G.Init;
  63. G.ShowMouse(FALSE);
  64. font := G.LoadFont('Data/Fonts/Main');
  65. IF font = NIL THEN
  66. Out.String("Could not load font."); Out.Ln;
  67. ELSE
  68. G.GetTargetSize(W, H); DEC(W); DEC(H);
  69. G.MakeCol(c, 20, 30, 80);
  70. G.MakeCol(f, 0, 180, 255);
  71. done := FALSE; X := -1; ZZ[0] := 0X; ZZ[1] := 0X;
  72. REPEAT
  73. WHILE G.HasEvents() DO
  74. G.WaitEvent(e);
  75. IF e.type = G.quit THEN done := TRUE
  76. ELSIF e.type = G.mouseMove THEN
  77. X := e.x; Y := e.y
  78. ELSIF e.type = G.mouseDown THEN
  79. IF e.button = 1 THEN Animation
  80. ELSIF e.button = 2 THEN ByKey
  81. END
  82. END
  83. END;
  84. Draw;
  85. G.DrawString('Left mouse button - KeyPressed, right - ReadKey test',
  86. 0, 0, font, f);
  87. G.Flip;
  88. G.Delay(1)
  89. UNTIL done
  90. END;
  91. G.Close
  92. END Do;
  93. BEGIN
  94. Do
  95. END TestGraph.