annotate doodle/dia/layer_stack.d @ 74:c03ed75c0f8e

Icky
author "David Bryant <bagnose@gmail.com>"
date Sun, 15 Aug 2010 01:11:58 +0930
parents
children b759414d2b72
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
1 module doodle.dia.layer_stack;
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
2
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
3 public {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
4 import doodle.dia.icanvas;
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
5 }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
6
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
7 final class LayerStack {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
8 this(in Layer[] layers) {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
9 _layers = layers.dup;
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
10 }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
11
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
12 Rectangle bounds() const {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
13 // Take the union of all layer bounds
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
14 Rectangle bounds = Rectangle.DEFAULT;
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
15 foreach (layer; _layers) { bounds = bounds | layer.bounds; }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
16 assert(bounds.valid);
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
17 return bounds;
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
18 }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
19
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
20 void draw(in Rectangle pixelDamage, scope Context pixelCr,
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
21 in Rectangle modelDamage, scope Context modelCr) {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
22 foreach(layer; _layers) {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
23 layer.draw(pixelDamage, pixelCr, modelDamage, modelCr);
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
24 }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
25 }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
26
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
27 private {
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
28 Layer[] _layers;
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
29 }
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
30 }