Mercurial > projects > doodle
comparison handler.d @ 0:e907d2c54ec3
Initial import
author | David Bryant <daveb@acres.com.au> |
---|---|
date | Wed, 13 May 2009 15:42:39 +0930 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e907d2c54ec3 |
---|---|
1 module handler; | |
2 | |
3 import std.stdio; | |
4 | |
5 private import icanvas; | |
6 private import tk.types; | |
7 private import tk.geometry; | |
8 private import tk.events; | |
9 //IToolStack | |
10 class ToolStack : ICanvasEventHandler { | |
11 override bool handle_button_press(ICanvas canvas, ButtonEvent event) { | |
12 writefln("%s", event); | |
13 return true; | |
14 } | |
15 | |
16 override bool handle_button_release(ICanvas canvas, ButtonEvent event) { | |
17 writefln("%s", event); | |
18 return true; | |
19 } | |
20 | |
21 override bool handle_key_press(ICanvas canvas, KeyEvent event) { | |
22 writefln("%s", event); | |
23 return true; | |
24 } | |
25 | |
26 override bool handle_key_release(ICanvas canvas, KeyEvent event) { | |
27 writefln("%s", event); | |
28 return true; | |
29 } | |
30 | |
31 override bool handle_motion(ICanvas canvas, MotionEvent event) { | |
32 writefln("%s", event); | |
33 return true; | |
34 } | |
35 | |
36 override bool handle_scroll(ICanvas canvas, ScrollEvent event) { | |
37 writefln("%s", event); | |
38 | |
39 if (event.mask.query(Modifier.CONTROL)) { | |
40 // Zoom about the pointer | |
41 double zoom = 1.44; | |
42 | |
43 if (event.scroll_direction == ScrollDirection.DOWN) { | |
44 zoom = 1.0 / zoom; | |
45 } | |
46 | |
47 canvas.rel_zoom(event.screen_point(), zoom); | |
48 } | |
49 else { | |
50 // Scroll | |
51 | |
52 const double AMOUNT = 30.0; | |
53 Vector v; | |
54 | |
55 if (event.mask.query(Modifier.SHIFT)) { | |
56 // left to right | |
57 v = new Vector(AMOUNT, 0.0); | |
58 } | |
59 else { | |
60 // down to up | |
61 v = new Vector(0.0, AMOUNT); | |
62 } | |
63 | |
64 if (event.scroll_direction == ScrollDirection.UP) { | |
65 v = -v; | |
66 } | |
67 | |
68 canvas.rel_pan(v); | |
69 } | |
70 | |
71 return true; | |
72 } | |
73 | |
74 /* | |
75 override void push(Tool tool) { | |
76 } | |
77 | |
78 override void pop() { | |
79 } | |
80 | |
81 override void replace(Tool tool) { | |
82 } | |
83 | |
84 private { | |
85 Tool[] mTools; | |
86 } | |
87 */ | |
88 }; |