Mercurial > projects > doodle
changeset 75:3cac0ee8ca35
Ok, things are seem on-track again
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sun, 15 Aug 2010 01:14:26 +0930 |
parents | c03ed75c0f8e |
children | 78bc2046256e |
files | doodle/gtk/canvas.d |
diffstat | 1 files changed, 7 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/doodle/gtk/canvas.d Sun Aug 15 01:11:58 2010 +0930 +++ b/doodle/gtk/canvas.d Sun Aug 15 01:14:26 2010 +0930 @@ -8,9 +8,10 @@ private { import doodle.core.misc; import doodle.core.logging; + import doodle.tk.pixel_model; import doodle.tk.cairo; + import doodle.dia.layer_stack; import doodle.gtk.conversions; - import doodle.tk.pixel_model; import cairo.Surface; @@ -47,7 +48,7 @@ _damageScreen = Rectangle.DEFAULT; - _layers = layers.dup; + _layerStack = new LayerStack(layers); _eventHandler = eventHandler; _grid = grid; _pixelsPerMillimetre = pixelsPerMillimetre; @@ -197,15 +198,8 @@ private { - Rectangle layerBounds() const { - Rectangle bounds = Rectangle.DEFAULT; - foreach (layer; _layers) { bounds = bounds | layer.bounds; } - assert(bounds.valid); - return bounds; - } - void initialiseBounds(in Rectangle viewBounds) { - Rectangle lb = layerBounds; + Rectangle lb = _layerStack.bounds; // FIXME use a function that grows a rectangle about its centre // and change 2.0 to a class-level constant @@ -220,7 +214,7 @@ } void consolidateBounds() { - Rectangle lb = layerBounds; + Rectangle lb = _layerStack.bounds; // FIXME likewise as above Rectangle paddedLayerBounds = expand(move(lb, - lb.size), 2.0 * lb.size); @@ -297,10 +291,7 @@ pixelCr.fill; } pixelCr.restore; - // Draw each layer - foreach(layer; _layers) { - layer.draw(pixelDamage, pixelCr, modelDamage, modelCr); - } + _layerStack.draw(pixelDamage, pixelCr, modelDamage, modelCr); } pixelCr.restore; modelCr.restore; return true; @@ -496,7 +487,7 @@ _drawingArea.grabFocus(); } - Layer[] _layers; + LayerStack _layerStack; IEventHandler _eventHandler; IGrid _grid; double _pixelsPerMillimetre;