annotate doodle/fig/diagram_elements.d @ 54:30ecedfe2ce2

Partial palette support
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 21:07:47 +0930
parents doodle/fig/fig.d@1b4c9ba58673
children c63719604adb
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
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
3 private {
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
4 import doodle.tk.geometry;
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
5 import doodle.cairo.routines;
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
6 }
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
7
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
8 abstract class DiagramElement {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
9 Rectangle bounds() const;
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
10
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
11 void draw(in Rectangle damage, scope Context cr) const;
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
12
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
13 private {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
14 GraphElement _container;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
15 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
16 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
17
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
18 abstract class SemanticModelBridge {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
19 };
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
20
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
21 abstract class GraphElement : DiagramElement {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
22 // Link to model via bridge goes here
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
23 private {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
24 SemanticModelBridge _modelBridge;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
25 GraphConnector[] _anchorages;
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
26 }
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
27 }
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
28
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
29 final class GraphConnector {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
30 }
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
31
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
32 final class GraphNode : GraphElement {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
33 }
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 26
diff changeset
34
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
35 final class GraphEdge : GraphElement {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
36 private {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
37 GraphConnector[2] _anchors;
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
38 }
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
39 }
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
40
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
41 abstract class LeafElement : DiagramElement {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
42 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
43
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
44 final class TextElement : LeafElement {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
45 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
46
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
47 abstract class GraphicPrimitive : LeafElement {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 28
diff changeset
48 }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
49
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
50 final class PolylinePrimitive : GraphicPrimitive {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
51 private {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
52 Point[] _waypoints;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
53 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
54 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
55
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
56 final class RectanglePrimitive : GraphicPrimitive {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
57 override void draw(in Rectangle damage, scope Context cr) const {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
58 rectangle(cr, bounds);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
59 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
60 }