annotate doodle/fig/diagram_elements.d @ 97:dcd641209671

What to do...
author David Bryant <bagnose@gmail.com>
date Fri, 27 Aug 2010 18:01:33 +0930
parents 66210d8ea37a
children bc5baa585b32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
1 module doodle.fig.diagram_elements;
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
2
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
3 public {
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
4 import doodle.tk.geometry;
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
5 }
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
6
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
7 private {
84
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 80
diff changeset
8 import doodle.tk.renderer;
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
9 }
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
10
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
11 interface IDiagram {
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
12 void add(DiagramElement element);
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
13 }
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
14
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
15 abstract class DiagramElement {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
16 Rectangle bounds() const;
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
17
84
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 80
diff changeset
18 void draw(in Rectangle damage, scope Renderer cr) const;
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
19
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
20 private {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
21 GraphElement _container;
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
22 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
23 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
24
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
25 abstract class SemanticModelBridge {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
26 }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
27
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
28 final class SimpleSemanticModelElement : SemanticModelBridge {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
29 private {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
30 string _typeInfo;
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
31 }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
32 }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
33
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
34 abstract class GraphElement : DiagramElement {
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
35 // Link to model via bridge goes here
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
36 private {
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
37 SemanticModelBridge _modelBridge;
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
38 GraphConnector[] _anchorages;
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
39 DiagramElement[] _containeds;
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
40 }
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
41 }
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
42
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
43 class GraphConnector {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
44 private {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
45 GraphElement _graphElement;
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
46 GraphEdge[] _graphEdges;
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
47 }
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
48 }
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
49
67
31d10176415d Checkpoint
daveb
parents: 66
diff changeset
50 final class GraphNode : GraphElement {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
51 override Rectangle bounds() const { return _bounds; }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
52
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
53 override void draw(in Rectangle damage, scope Renderer cr) const {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
54 }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
55
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
56 private {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
57 Rectangle _bounds;
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
58 }
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
59 }
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
60
67
31d10176415d Checkpoint
daveb
parents: 66
diff changeset
61 final class GraphEdge : GraphElement {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
62 override Rectangle bounds() const { return _bounds; }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
63
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
64 override void draw(in Rectangle damage, scope Renderer cr) const {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
65 }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
66
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
67 private {
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
68 GraphConnector[2] _anchors;
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
69 Point[] _waypoints;
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
70 Rectangle _bounds;
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
71 }
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
72 }
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
73
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
74 abstract class LeafElement : DiagramElement {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
75 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
76
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
77 class TextElement : LeafElement {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
78 override Rectangle bounds() const { return _bounds; }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
79
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
80 override void draw(in Rectangle damage, scope Renderer cr) const {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
81 }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
82
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
83 private {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
84 Rectangle _bounds;
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
85 }
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
86 }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
87
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
88 abstract class GraphicPrimitive : LeafElement {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
89 }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
90
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
91 class PolylinePrimitive : GraphicPrimitive {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
92 override Rectangle bounds() const { return _bounds; }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
93
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
94 override void draw(in Rectangle damage, scope Renderer cr) const {
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
95 }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
96
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
97 private {
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
98 Point[] _waypoints;
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
99 Rectangle _bounds;
96
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
100 }
66210d8ea37a Added some junk
David Bryant <bagnose@gmail.com>
parents: 84
diff changeset
101 }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
102
67
31d10176415d Checkpoint
daveb
parents: 66
diff changeset
103 final class RectanglePrimitive : GraphicPrimitive {
97
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
104 override Rectangle bounds() const { return _bounds; }
dcd641209671 What to do...
David Bryant <bagnose@gmail.com>
parents: 96
diff changeset
105
84
cdd4fc728d94 Renamed Drawable to Renderer
daveb
parents: 80
diff changeset
106 override void draw(in Rectangle damage, scope Renderer drawable) const {
80
b759414d2b72 Switched from cairo to Drawable abstraction
"David Bryant <bagnose@gmail.com>"
parents: 73
diff changeset
107 drawable.drawRectangle(bounds, false);
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
108 }
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
109
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
110 private {
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
111 Rectangle _bounds;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
112 }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
113 }