123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- MODULE WMScribble; (** AUTHOR "TF"; PURPOSE "Example program"; *)
- IMPORT WMWindowManager, Strings, WMGraphics, WMRectangles, Modules, WMDialogs;
- TYPE
- ScribbleWindow = OBJECT (WMWindowManager.BufferWindow);
- VAR lx, ly : LONGINT;
- PROCEDURE &New*;
- BEGIN
- Init(400, 400, FALSE);
- WMWindowManager.AddWindow(SELF, 200, 200);
- SetTitle(Strings.NewString("Scribble Example"));
- SetIcon(WMGraphics.LoadImage("WMIcons.tar://WMScribble.png", TRUE));
- canvas.Fill(WMRectangles.MakeRect(0, 0, GetWidth(), GetHeight()), WMGraphics.White, WMGraphics.ModeCopy);
- Invalidate(WMRectangles.MakeRect(0, 0, GetWidth(), GetHeight()));
- SetPointerInfo(manager.pointerCrosshair)
- END New;
- PROCEDURE PointerMove*(x, y : LONGINT; keys : SET);
- BEGIN
- IF 0 IN keys THEN canvas.Line(lx, ly, x, y, WMGraphics.Blue, WMGraphics.ModeSrcOverDst);
- Invalidate(
- WMRectangles.MakeRect(MIN(lx, x), MIN(ly, y), MAX(lx, x) + 1, MAX(ly, y) + 1)
- )
- END;
- lx := x; ly := y
- END PointerMove;
- PROCEDURE PointerDown*(x, y : LONGINT; keys : SET);
- BEGIN
- lx := x; ly := y;
- IF 2 IN keys THEN
- canvas.Fill(WMRectangles.MakeRect(0, 0, GetWidth(), GetHeight()), WMGraphics.White, WMGraphics.ModeCopy);
- Invalidate(WMRectangles.MakeRect(0, 0, GetWidth(), GetHeight()))
- END
- END PointerDown;
- PROCEDURE KeyEvent*(ucs : LONGINT; flags : SET; keySym : LONGINT);
- VAR res: WORD; filename : ARRAY 128 OF CHAR;
- BEGIN
- IF ucs = ORD("s") THEN
- filename := "scribble.bmp";
- IF WMDialogs.QueryString("Save as :", filename) = WMDialogs.ResOk THEN
- WMGraphics.StoreImage(img, filename, res);
- IF res # 0 THEN
- WMDialogs.Error("Sorry", "The image could not be stored. Try another file name.");
- END
- END
- END
- END KeyEvent;
- END ScribbleWindow;
- VAR s : ScribbleWindow;
- PROCEDURE Open*;
- BEGIN {EXCLUSIVE}
- IF s # NIL THEN s.Close END; NEW(s);
- END Open;
- PROCEDURE Cleanup;
- BEGIN
- IF s # NIL THEN s.Close END
- END Cleanup;
- BEGIN
- Modules.InstallTermHandler(Cleanup)
- END WMScribble.
- System.Free WMScribble ~
- WMScribble.Open ~
- WMPicView.Open scribble.bmp ~
|