DEFINITION XYplane; (*Basic facilities for graphics programming Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Compiler Developers". The drawing plane is repainted when Key is invoked. Fullscreen mode is toggled with Ctrl-f; it can also be exited with Esc.*) CONST (*drawing modes*) draw = 1; erase = 0; VAR X, Y: INTEGER; (*X = 0 and Y = 0. Included for compatibility with The Oakwood Guidelines.*) W, H: INTEGER; (*width and height of the drawing plane in pixels*) PROCEDURE Open; (*initializes the drawing plane*) PROCEDURE Clear; (*erases all pixels in the drawing plane*) PROCEDURE Dot(x, y, mode: INTEGER); (*Dot(x, y, m) draws or erases the pixel at the coordinates (x, y) relative to the lower left corner of the plane. If m = draw the pixel is drawn, if m = erase the pixel is erased.*) PROCEDURE IsDot(x, y: INTEGER): BOOLEAN; (*returns TRUE if the pixel at the coordinates (x, y) relative to the lower left corner of the screen is drawn, otherwise it returns FALSE*) PROCEDURE Key(): CHAR; (*reads the keyboard. If a key was pressed prior to invocation, its character value is returned, otherwise the result is 0X.*) PROCEDURE SetSize(width, height: INTEGER); (*sets the width and height of the drawing plane. The setting takes effect when Open is called. NOTE: This procedure is an extension to The Oakwood Guidelines.*) PROCEDURE UseColor(color: INTEGER); (*sets the red, green and blue components of the drawing color as a three-byte value where red = 0FF0000H, green = 00FF00H and blue = 0000FFH. NOTE: This procedure is an extension to The Oakwood Guidelines.*) PROCEDURE Color(x, y: INTEGER): INTEGER; (*returns the color of the pixel at the coordinates (x, y). NOTE: This procedure is an extension to The Oakwood Guidelines.*) (*Example: MODULE drawpixels; (*click or drag the mouse to draw pixels*) IMPORT Input, XYplane; VAR x, y: INTEGER; keys: SET; BEGIN XYplane.Open; REPEAT Input.Mouse(keys, x, y); IF 2 IN keys THEN XYplane.Dot(x, y, XYplane.draw) END UNTIL XYplane.Key() = "q" END drawpixels. *) END XYplane.