74
|
1 module doodle.dia.layer_stack;
|
|
2
|
|
3 public {
|
|
4 import doodle.dia.icanvas;
|
|
5 }
|
|
6
|
|
7 final class LayerStack {
|
|
8 this(in Layer[] layers) {
|
|
9 _layers = layers.dup;
|
|
10 }
|
|
11
|
|
12 Rectangle bounds() const {
|
|
13 // Take the union of all layer bounds
|
|
14 Rectangle bounds = Rectangle.DEFAULT;
|
|
15 foreach (layer; _layers) { bounds = bounds | layer.bounds; }
|
88
|
16 //assert(bounds.valid);
|
74
|
17 return bounds;
|
|
18 }
|
|
19
|
84
|
20 void draw(in Rectangle screenDamage, scope Renderer screenRenderer,
|
89
|
21 in Rectangle modelDamage, scope Renderer modelRenderer,
|
|
22 in ScreenModel screenModel) const {
|
74
|
23 foreach(layer; _layers) {
|
89
|
24 layer.draw(screenDamage, screenRenderer, modelDamage, modelRenderer, screenModel);
|
74
|
25 }
|
|
26 }
|
|
27
|
|
28 private {
|
|
29 Layer[] _layers;
|
|
30 }
|
|
31 }
|