home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* *)
- (* Amiga Oberon Library MODULE: XYPlane Date: 02-Nov-92 *)
- (* *)
- (* © 1992 BY Fridtjof Siebert *)
- (* *)
- (*-------------------------------------------------------------------------*)
-
- MODULE XYplane;
-
- IMPORT Display,
- I := Intuition,
- u := Utility,
- e := Exec;
-
- CONST
- erase * = 0;
- draw * = 1;
-
- VAR
- window: Display.WindowPtr;
- X*, Y*, W*, H*: INTEGER;
- tags: POINTER TO ARRAY 3 OF LONGINT;
-
-
- PROCEDURE Clear*;
-
- BEGIN
- Display.Clear(window);
- END Clear;
-
-
- PROCEDURE Open *;
- BEGIN
- NEW(window);
- IF ~ Display.OpenWindowTags(window,NIL,TRUE,"XY Plane",0,0,640,200,NIL,TRUE,tags) THEN HALT(20) END;
- Display.Jam1(window);
- IF ~ I.ModifyIDCMP(window.window,LONGSET{I.vanillaKey,I.closeWindow}) & (I.int.libNode.version>=36) THEN
- HALT(20)
- END;
- X := 0;
- Y := 0;
- W := window.width;
- H := window.height;
- END Open;
-
-
- PROCEDURE Dot * (x,y,mode: INTEGER);
- BEGIN
- Display.FrontPen(window,SHORT(mode));
- Display.Dot(window,x,window.height-y);
- END Dot;
-
-
- PROCEDURE IsDot * (x,y: INTEGER): BOOLEAN;
- BEGIN
- RETURN Display.DotColor(window,x,window.height-y)#erase;
- END IsDot;
-
-
- PROCEDURE Key * (): CHAR;
- VAR
- msg: I.IntuiMessagePtr;
- ch : CHAR;
- BEGIN
- ch := 0X;
- msg := e.GetMsg(window.window.userPort);
- WHILE msg#NIL DO
- IF I.vanillaKey IN msg.class THEN
- ch := CHR(msg.code);
- ELSIF I.closeWindow IN msg.class THEN
- ch := "Q"
- END;
- e.ReplyMsg(msg);
- msg := e.GetMsg(window.window.userPort);
- END;
- RETURN ch;
- END Key;
-
-
- BEGIN
- NEW(tags);
- tags[0] := I.waSizeGadget;
- tags[1] := I.LFALSE;
- tags[2] := u.done;
- Open;
- END XYplane.
-
-
-