annotate doodle/fig/select_tool.d @ 79:535bae7a7305

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sun, 15 Aug 2010 23:18:05 +0930
parents 15ca7d5cd1ed
children b759414d2b72
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
1 module doodle.fig.select_tool;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
2
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
3 public {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
4 import doodle.dia.tool;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
5 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
6
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
7 private {
73
6f2525e170f2 Cairo/OpenGL checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 66
diff changeset
8 import doodle.tk.cairo;
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
9 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
10
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
11 final class SelectTool : Tool {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
12 this() {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
13 super("Select");
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
14 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
15
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
16 override bool handleButtonPress(scope IViewport viewport, in ButtonEvent event) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
17 if (event.buttonName == ButtonName.LEFT) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
18 _active = true;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
19 _anchorPoint = _currentPoint = event.pixelPoint;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
20 viewport.setCursor(Cursor.HAND);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
21 return true;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
22 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
23 else {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
24 return false;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
25 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
26 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
27
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
28 override bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
29 if (event.buttonName == ButtonName.LEFT && _active) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
30 _active = false;
79
535bae7a7305 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 77
diff changeset
31 viewport.damageScreen(growCentre(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH));
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
32 viewport.setCursor(Cursor.DEFAULT);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
33 return true;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
34 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
35 else {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
36 return false;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
37 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
38 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
39
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
40 override bool handleMotion(scope IViewport viewport, in MotionEvent event) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
41 if (_active) {
79
535bae7a7305 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 77
diff changeset
42 viewport.damageScreen(growCentre(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH));
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
43 _currentPoint = event.pixelPoint;
79
535bae7a7305 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 77
diff changeset
44 viewport.damageScreen(growCentre(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH));
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
45 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
46
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
47 return false;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
48 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
49
74
"David Bryant <bagnose@gmail.com>"
parents: 73
diff changeset
50 override void draw(in Rectangle pixelDamage, scope Context pixelCr) const {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
51 if (_active) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
52 /*
66
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
53 pixelCr.save; {
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
54 pixelCr.setSourceRgba(0.0, 0.0, 0.8, 0.3);
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
55 rectangle(pixelCr, Rectangle(_currentPoint, _anchorPoint));
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
56 pixelCr.fill();
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
57 } pixelCr.restore();
43cc2135ced0 Some code cleanups
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
58 */
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
59
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
60 pixelCr.save(); {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
61 double[] dashes = [ 4.0, 4.0 ];
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
62 pixelCr.setDash(dashes, 0.0);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
63 pixelCr.setSourceRgba(0.0, 0.0, 0.5, 1.0);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
64 pixelCr.setLineWidth(LINE_WIDTH);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
65 rectangle(pixelCr, Rectangle(_currentPoint, _anchorPoint));
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
66 pixelCr.stroke;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
67 } pixelCr.restore;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
68 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
69 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
70
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
71 private {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
72 bool _active;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
73 Point _currentPoint;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
74 Point _anchorPoint; // Pixel
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
75 static immutable double LINE_WIDTH = 1.0;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
76 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
77 }