Mercurial > projects > doodle
comparison doodle/dia/standard_tools.d @ 57:9960c4fbd0dd
I is for Interface
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sun, 08 Aug 2010 22:01:54 +0930 |
parents | b190a9d9352e |
children | c63719604adb |
comparison
equal
deleted
inserted
replaced
56:b190a9d9352e | 57:9960c4fbd0dd |
---|---|
9 import std.math; | 9 import std.math; |
10 import std.stdio; | 10 import std.stdio; |
11 } | 11 } |
12 | 12 |
13 final class PanTool : Tool { | 13 final class PanTool : Tool { |
14 override bool handleButtonPress(scope Viewport viewport, in ButtonEvent event) { | 14 override bool handleButtonPress(scope IViewport viewport, in ButtonEvent event) { |
15 if (event.button_name == ButtonName.MIDDLE) { | 15 if (event.button_name == ButtonName.MIDDLE) { |
16 mLastPosition = event.pixelPoint; | 16 mLastPosition = event.pixelPoint; |
17 return true; | 17 return true; |
18 } | 18 } |
19 else { | 19 else { |
20 return false; | 20 return false; |
21 } | 21 } |
22 } | 22 } |
23 | 23 |
24 override bool handleMotion(scope Viewport viewport, in MotionEvent event) { | 24 override bool handleMotion(scope IViewport viewport, in MotionEvent event) { |
25 if (event.mask.isSet(Modifier.MIDDLE_BUTTON)) { | 25 if (event.mask.isSet(Modifier.MIDDLE_BUTTON)) { |
26 viewport.panRelative(mLastPosition - event.pixelPoint); | 26 viewport.panRelative(mLastPosition - event.pixelPoint); |
27 mLastPosition = event.pixelPoint; | 27 mLastPosition = event.pixelPoint; |
28 | 28 |
29 return true; | 29 return true; |
31 else { | 31 else { |
32 return false; | 32 return false; |
33 } | 33 } |
34 } | 34 } |
35 | 35 |
36 override bool handleScroll(scope Viewport viewport, in ScrollEvent event) { | 36 override bool handleScroll(scope IViewport viewport, in ScrollEvent event) { |
37 if (event.mask.isUnset(Modifier.MIDDLE_BUTTON)) { | 37 if (event.mask.isUnset(Modifier.MIDDLE_BUTTON)) { |
38 Vector delta; | 38 Vector delta; |
39 | 39 |
40 switch (event.scrollDirection) { | 40 switch (event.scrollDirection) { |
41 case ScrollDirection.UP: | 41 case ScrollDirection.UP: |
65 static invariant double AMOUNT = 60.0; | 65 static invariant double AMOUNT = 60.0; |
66 } | 66 } |
67 } | 67 } |
68 | 68 |
69 final class ZoomTool : Tool { | 69 final class ZoomTool : Tool { |
70 override bool handleScroll(scope Viewport viewport, in ScrollEvent event) { | 70 override bool handleScroll(scope IViewport viewport, in ScrollEvent event) { |
71 if (event.mask.isSet(Modifier.CONTROL)) { | 71 if (event.mask.isSet(Modifier.CONTROL)) { |
72 if (event.scrollDirection == ScrollDirection.DOWN) { | 72 if (event.scrollDirection == ScrollDirection.DOWN) { |
73 viewport.zoomRelative(event.pixelPoint, 1.0 / ZOOM); | 73 viewport.zoomRelative(event.pixelPoint, 1.0 / ZOOM); |
74 return true; | 74 return true; |
75 } | 75 } |
90 static invariant double ZOOM = sqrt(2.0); | 90 static invariant double ZOOM = sqrt(2.0); |
91 } | 91 } |
92 } | 92 } |
93 | 93 |
94 final class SelectTool : Tool { | 94 final class SelectTool : Tool { |
95 override bool handleButtonPress(scope Viewport viewport, in ButtonEvent event) { | 95 override bool handleButtonPress(scope IViewport viewport, in ButtonEvent event) { |
96 if (event.button_name == ButtonName.LEFT) { | 96 if (event.button_name == ButtonName.LEFT) { |
97 _active = true; | 97 _active = true; |
98 _anchorPoint = _currentPoint = event.pixelPoint; | 98 _anchorPoint = _currentPoint = event.pixelPoint; |
99 viewport.setCursor(Cursor.HAND); | 99 viewport.setCursor(Cursor.HAND); |
100 return true; | 100 return true; |
102 else { | 102 else { |
103 return false; | 103 return false; |
104 } | 104 } |
105 } | 105 } |
106 | 106 |
107 override bool handleButtonRelease(scope Viewport viewport, in ButtonEvent event) { | 107 override bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event) { |
108 if (event.button_name == ButtonName.LEFT && _active) { | 108 if (event.button_name == ButtonName.LEFT && _active) { |
109 _active = false; | 109 _active = false; |
110 viewport.damagePixel(feather(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH / 2.0)); | 110 viewport.damagePixel(feather(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH / 2.0)); |
111 viewport.setCursor(Cursor.DEFAULT); | 111 viewport.setCursor(Cursor.DEFAULT); |
112 return true; | 112 return true; |
114 else { | 114 else { |
115 return false; | 115 return false; |
116 } | 116 } |
117 } | 117 } |
118 | 118 |
119 override bool handleMotion(scope Viewport viewport, in MotionEvent event) { | 119 override bool handleMotion(scope IViewport viewport, in MotionEvent event) { |
120 if (_active) { | 120 if (_active) { |
121 viewport.damagePixel(feather(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH / 2.0)); | 121 viewport.damagePixel(feather(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH / 2.0)); |
122 _currentPoint = event.pixelPoint; | 122 _currentPoint = event.pixelPoint; |
123 viewport.damagePixel(feather(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH / 2.0)); | 123 viewport.damagePixel(feather(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH / 2.0)); |
124 } | 124 } |
125 | 125 |
126 return false; | 126 return false; |
127 } | 127 } |
128 | 128 |
129 override void draw(in Viewport viewport, | 129 override void draw(in IViewport viewport, |
130 in Rectangle pixelDamage, scope Context pixelCr) const { | 130 in Rectangle pixelDamage, scope Context pixelCr) const { |
131 if (_active) { | 131 if (_active) { |
132 /* | 132 /* |
133 pixelCr.save; { | 133 pixelCr.save; { |
134 pixelCr.setSourceRgba(0.0, 0.0, 0.8, 0.3); | 134 pixelCr.setSourceRgba(0.0, 0.0, 0.8, 0.3); |