annotate doodle/fig/diagram_layer.d @ 57:9960c4fbd0dd

I is for Interface
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 22:01:54 +0930
parents 30ecedfe2ce2
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_layer;
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
2
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
3 public {
28
1754cb773d41 Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents: 27
diff changeset
4 import doodle.dia.icanvas;
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
5 import doodle.fig.diagram_elements;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
6 import std.array;
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
7 }
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
8
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
9 class DiagramLayer : Layer {
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
10 this(in string name) {
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
11 super(name);
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
12 }
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
13
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
14 void add(DiagramElement element) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
15 _elements ~= element;
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
38
452915ecd1f4 Basic logging functionality
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
18 // Layer overrides:
452915ecd1f4 Basic logging functionality
David Bryant <bagnose@gmail.com>
parents: 28
diff changeset
19
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
20 override Rectangle bounds() const {
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
21 return Rectangle.DEFAULT;
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
22 }
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
23
57
9960c4fbd0dd I is for Interface
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
24 override void draw(in IViewport viewport,
48
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 44
diff changeset
25 in Rectangle pixelDamage, scope Context pixelCr,
1b4c9ba58673 Stylistic overhaul.
daveb
parents: 44
diff changeset
26 in Rectangle modelDamage, scope Context modelCr) const {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
27 foreach (e; _elements) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
28 if ((e.bounds & modelDamage).valid) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
29 e.draw(modelDamage, modelCr);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
30 }
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
31 }
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
32 }
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
33
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
34 private {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
35 // Root elements in z-buffer order, ie we draw in forward
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
36 // order thru the array
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 48
diff changeset
37 DiagramElement[] _elements;
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
38 }
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
39 }