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);