annotate doodle/fig/select_tool.d @ 84:cdd4fc728d94

Renamed Drawable to Renderer
author daveb
date Mon, 16 Aug 2010 17:23:09 +0930
parents d92b9f04b1e8
children bc5baa585b32
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 final class SelectTool : Tool {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
8 this() {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
9 super("Select");
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
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
12 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
13 if (event.buttonName == ButtonName.LEFT) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
14 _active = true;
80
b759414d2b72 Switched from cairo to Drawable abstraction
"David Bryant <bagnose@gmail.com>"
parents: 79
diff changeset
15 _anchorPoint = _currentPoint = event.screenPoint;
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
16 viewport.setCursor(Cursor.HAND);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
17 return true;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
18 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
19 else {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
20 return false;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
21 }
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
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
24 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
25 if (event.buttonName == ButtonName.LEFT && _active) {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
26 _active = false;
79
535bae7a7305 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 77
diff changeset
27 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
28 viewport.setCursor(Cursor.DEFAULT);
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
29 return true;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
30 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
31 else {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
32 return false;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
33 }
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
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
36 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
37 if (_active) {
79
535bae7a7305 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 77
diff changeset
38 viewport.damageScreen(growCentre(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH));
80
b759414d2b72 Switched from cairo to Drawable abstraction
"David Bryant <bagnose@gmail.com>"
parents: 79
diff changeset
39 _currentPoint = event.screenPoint;
79
535bae7a7305 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 77
diff changeset
40 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
41 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
42
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
43 return false;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
44 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
45
84
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
46 override void draw(in Rectangle screenDamage, scope Renderer screenRenderer) const {
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
47 if (_active) {
84
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
48 screenRenderer.pushState; {
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
49 screenRenderer.setLineStyle(Renderer.LineStyle.DASHED);
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
50 screenRenderer.setLineWidth(LINE_WIDTH);
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
51 screenRenderer.setColor(Color(0.0, 0.0, 0.5, 1.0));
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
52 screenRenderer.drawRectangle(Rectangle(_currentPoint, _anchorPoint), false);
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 81
diff changeset
53 } screenRenderer.popState;
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
54 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
55 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
56
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
57 private {
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
58 bool _active;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
59 Point _currentPoint;
81
d92b9f04b1e8 Bed time
"David Bryant <bagnose@gmail.com>"
parents: 80
diff changeset
60 Point _anchorPoint;
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
61 static immutable double LINE_WIDTH = 1.0;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
62 }
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
diff changeset
63 }