comparison dia/standard_tools.d @ 26:06c30d250c0a

Cleanup
author "David Bryant <bagnose@gmail.com>"
date Thu, 16 Jul 2009 00:12:02 +0930
parents a24c13bb9c98
children f3d91579bb28
comparison
equal deleted inserted replaced
25:8f58a8f88735 26:06c30d250c0a
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 handle_button_press(Viewport viewport, in ButtonEvent event) { 14 override bool handle_button_press(scope Viewport viewport, in ButtonEvent event) {
15 if (event.button_name == ButtonName.MIDDLE) { 15 if (event.button_name == ButtonName.MIDDLE) {
16 mLastPosition = event.pixel_point; 16 mLastPosition = event.pixel_point;
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 handle_motion(Viewport viewport, in MotionEvent event) { 24 override bool handle_motion(scope Viewport viewport, in MotionEvent event) {
25 if (event.mask.is_set(Modifier.MIDDLE_BUTTON)) { 25 if (event.mask.is_set(Modifier.MIDDLE_BUTTON)) {
26 viewport.pan_relative(mLastPosition - event.pixel_point); 26 viewport.pan_relative(mLastPosition - event.pixel_point);
27 mLastPosition = event.pixel_point; 27 mLastPosition = event.pixel_point;
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 handle_scroll(Viewport viewport, in ScrollEvent event) { 36 override bool handle_scroll(scope Viewport viewport, in ScrollEvent event) {
37 if (event.mask.is_unset(Modifier.MIDDLE_BUTTON)) { 37 if (event.mask.is_unset(Modifier.MIDDLE_BUTTON)) {
38 Vector delta; 38 Vector delta;
39 39
40 switch (event.scroll_direction) { 40 switch (event.scroll_direction) {
41 case ScrollDirection.UP: 41 case ScrollDirection.UP:
63 static invariant double AMOUNT = 60.0; 63 static invariant double AMOUNT = 60.0;
64 } 64 }
65 } 65 }
66 66
67 final class ZoomTool : Tool { 67 final class ZoomTool : Tool {
68 override bool handle_scroll(Viewport viewport, in ScrollEvent event) { 68 override bool handle_scroll(scope Viewport viewport, in ScrollEvent event) {
69 if (event.mask.is_set(Modifier.CONTROL)) { 69 if (event.mask.is_set(Modifier.CONTROL)) {
70 if (event.scroll_direction == ScrollDirection.DOWN) { 70 if (event.scroll_direction == ScrollDirection.DOWN) {
71 viewport.zoom_relative(event.pixel_point, 1.0 / ZOOM); 71 viewport.zoom_relative(event.pixel_point, 1.0 / ZOOM);
72 return true; 72 return true;
73 } 73 }
88 static invariant double ZOOM = sqrt(2.0); 88 static invariant double ZOOM = sqrt(2.0);
89 } 89 }
90 } 90 }
91 91
92 final class LassoTool : Tool { 92 final class LassoTool : Tool {
93 override bool handle_button_press(Viewport viewport, in ButtonEvent event) { 93 override bool handle_button_press(scope Viewport viewport, in ButtonEvent event) {
94 if (event.button_name == ButtonName.LEFT) { 94 if (event.button_name == ButtonName.LEFT) {
95 mActive = true; 95 mActive = true;
96 mAnchorPoint = mCurrentPoint = event.pixel_point; 96 mAnchorPoint = mCurrentPoint = event.pixel_point;
97 return true; 97 return true;
98 } 98 }
99 else { 99 else {
100 return false; 100 return false;
101 } 101 }
102 } 102 }
103 103
104 override bool handle_button_release(Viewport viewport, in ButtonEvent event) { 104 override bool handle_button_release(scope Viewport viewport, in ButtonEvent event) {
105 if (event.button_name == ButtonName.LEFT && mActive) { 105 if (event.button_name == ButtonName.LEFT && mActive) {
106 mActive = false; 106 mActive = false;
107 viewport.damage_pixel(Rectangle(mAnchorPoint, mCurrentPoint).feathered(LINE_WIDTH / 2.0)); 107 viewport.damage_pixel(Rectangle(mAnchorPoint, mCurrentPoint).feathered(LINE_WIDTH / 2.0));
108 return true; 108 return true;
109 } 109 }
110 else { 110 else {
111 return false; 111 return false;
112 } 112 }
113 } 113 }
114 114
115 override bool handle_motion(Viewport viewport, in MotionEvent event) { 115 override bool handle_motion(scope Viewport viewport, in MotionEvent event) {
116 if (mActive) { 116 if (mActive) {
117 viewport.damage_pixel(Rectangle(mAnchorPoint, mCurrentPoint).feathered(LINE_WIDTH / 2.0)); 117 viewport.damage_pixel(Rectangle(mAnchorPoint, mCurrentPoint).feathered(LINE_WIDTH / 2.0));
118 mCurrentPoint = event.pixel_point; 118 mCurrentPoint = event.pixel_point;
119 viewport.damage_pixel(Rectangle(mAnchorPoint, mCurrentPoint).feathered(LINE_WIDTH / 2.0)); 119 viewport.damage_pixel(Rectangle(mAnchorPoint, mCurrentPoint).feathered(LINE_WIDTH / 2.0));
120 } 120 }
121 121
122 return false; 122 return false;
123 } 123 }
124 124
125 override void draw(const Viewport viewport, 125 override void draw(in Viewport viewport,
126 in Rectangle pixel_damage, scope Context pixel_cr, 126 in Rectangle pixel_damage, scope Context pixel_cr,
127 in Rectangle model_damage, scope Context model_cr) const { 127 in Rectangle model_damage, scope Context model_cr) const {
128 if (mActive) { 128 if (mActive) {
129 pixel_cr.save; { 129 pixel_cr.save; {
130 double[] dashes = [ 4.0, 4.0 ]; 130 pixel_cr.setSourceRgba(0.0, 0.0, 0.8, 0.3);
131 pixel_cr.setDash(dashes, 0.0); 131 rectangle(pixel_cr, Rectangle(mCurrentPoint, mAnchorPoint));
132 pixel_cr.fill();
133 } pixel_cr.restore();
134
135 pixel_cr.save(); {
136 //double[] dashes = [ 4.0, 4.0 ];
137 //pixel_cr.setDash(dashes, 0.0);
132 pixel_cr.setSourceRgba(0.0, 0.0, 0.5, 1.0); 138 pixel_cr.setSourceRgba(0.0, 0.0, 0.5, 1.0);
133 pixel_cr.setLineWidth(LINE_WIDTH); 139 pixel_cr.setLineWidth(LINE_WIDTH);
134 //writefln("Drawing rectangle: %s", Rectangle(mCurrentPoint, mAnchorPoint)); 140 //writefln("Drawing rectangle: %s", Rectangle(mCurrentPoint, mAnchorPoint));
135 rectangle(pixel_cr, Rectangle(mCurrentPoint, mAnchorPoint)); 141 rectangle(pixel_cr, Rectangle(mCurrentPoint, mAnchorPoint));
136 pixel_cr.stroke; 142 pixel_cr.stroke;