diff handler.d @ 0:e907d2c54ec3

Initial import
author David Bryant <daveb@acres.com.au>
date Wed, 13 May 2009 15:42:39 +0930
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/handler.d	Wed May 13 15:42:39 2009 +0930
@@ -0,0 +1,88 @@
+module handler;
+
+import std.stdio;
+
+private import icanvas;
+private import tk.types;
+private import tk.geometry;
+private import tk.events;
+//IToolStack
+class ToolStack : ICanvasEventHandler {
+    override bool handle_button_press(ICanvas canvas, ButtonEvent event) {
+        writefln("%s", event);
+        return true;
+    }
+
+    override bool handle_button_release(ICanvas canvas, ButtonEvent event) {
+        writefln("%s", event);
+        return true;
+    }
+
+    override bool handle_key_press(ICanvas canvas, KeyEvent event) {
+        writefln("%s", event);
+        return true;
+    }
+
+    override bool handle_key_release(ICanvas canvas, KeyEvent event) {
+        writefln("%s", event);
+        return true;
+    }
+
+    override bool handle_motion(ICanvas canvas, MotionEvent event) {
+        writefln("%s", event);
+        return true;
+    }
+
+    override bool handle_scroll(ICanvas canvas, ScrollEvent event) {
+        writefln("%s", event);
+
+        if (event.mask.query(Modifier.CONTROL)) {
+            // Zoom about the pointer
+            double zoom = 1.44;
+
+            if (event.scroll_direction == ScrollDirection.DOWN) {
+                zoom = 1.0 / zoom;
+            }
+
+            canvas.rel_zoom(event.screen_point(), zoom);
+        }
+        else {
+            // Scroll
+
+            const double AMOUNT = 30.0;
+            Vector v;
+
+            if (event.mask.query(Modifier.SHIFT)) {
+                // left to right
+                v = new Vector(AMOUNT, 0.0);
+            }
+            else {
+                // down to up
+                v = new Vector(0.0, AMOUNT);
+            }
+
+            if (event.scroll_direction == ScrollDirection.UP) {
+                v = -v;
+            }
+
+            canvas.rel_pan(v);
+        }
+
+        return true;
+    }
+
+    /*
+    override void push(Tool tool) {
+    }
+
+    override void pop() {
+    }
+
+    override void replace(Tool tool) {
+    }
+
+    private {
+        Tool[] mTools;
+    }
+    */
+};