Mercurial > projects > doodle
diff tool_stack.d @ 2:d6f44347373d
* Switched over to geometry done with structs instead of classes.
* Removed direct access to gtk structs
* Refactoring
author | David Bryant <daveb@acres.com.au> |
---|---|
date | Fri, 10 Jul 2009 15:15:27 +0930 |
parents | |
children | 7d57cae10805 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_stack.d Fri Jul 10 15:15:27 2009 +0930 @@ -0,0 +1,91 @@ +module tool_stack; + +import std.stdio; + +private import icanvas; +private import tk.types; +private import tk.geometry2; +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; + Vector2 v; + + if (event.mask.query(Modifier.SHIFT)) { + // left to right + v = Vector2(AMOUNT, 0.0); + } + else { + // down to up + v = Vector2(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; + int mGrabbedToolIndex; // -1 for none + } + */ +}