changeset 91:42766e14534e

Update screenViewBounds when the window is resized
author daveb
date Thu, 19 Aug 2010 18:28:18 +0930
parents 885914257e0e
children a98116479793
files doodle/dia/grid_layer.d doodle/dia/icanvas.d doodle/gtk/cairo_canvas.d doodle/tk/screen_model.d
diffstat 4 files changed, 18 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/doodle/dia/grid_layer.d	Thu Aug 19 00:28:57 2010 +0930
+++ b/doodle/dia/grid_layer.d	Thu Aug 19 18:28:18 2010 +0930
@@ -37,16 +37,14 @@
         assert(_zoomValid);
 
         auto z = screenModel.zoom;
-        // Is _zoom like screenModel.zoom ?
 
         modelRenderer.pushState; {
             modelRenderer.setColor(Color(0.0, 0.0, 0.0, 0.3));
-            modelRenderer.setLineWidth(0.5);
+            modelRenderer.setLineWidth(1 / z);
 
             auto x = start(modelDamage.corner0.x, _spacing);
 
             for (;;) {
-                writefln("Doing something %s", x);
                 modelRenderer.drawVLine(x, modelDamage.corner0.y, modelDamage.corner1.y);
                 x += _spacing;
                 if (x > modelDamage.corner1.x) break;
@@ -55,62 +53,11 @@
             auto y = start(modelDamage.corner0.y, _spacing);
 
             for (;;) {
-                writefln("Doing something %s", y);
                 modelRenderer.drawHLine(y, modelDamage.corner0.x, modelDamage.corner1.x);
                 y += _spacing;
                 if (y > modelDamage.corner1.y) break;
             }
         } modelRenderer.popState;
-
-/+
-        modelCr.save(); {
-            modelCr.setSourceRgba(0.0, 0.0, 0.0, 0.3);
-            modelCr.setLineWidth(0.5);
-
-            {
-                // vertical grid lines
-                double x = start(modelDamage.corner0.x, _spacing);
-
-                for (;;) {
-                    vline(modelCr, x, modelDamage.corner0.y, modelDamage.corner1.y);
-
-                    // Ensure 1 pixel wide FIXME is this naughty? We are sneaking
-                    // through cairo to mix model and pixel coordinates...
-                    modelCr.save(); {
-                        modelCr.scale(1.0 / z, 1.0 / z);
-                        modelCr.stroke();
-                    } modelCr.restore();
-
-                    if (x > modelDamage.corner1.x) {
-                        break;
-                    }
-
-                    x += _spacing;
-                }
-            }
-
-            {
-                // horizontal grid lines
-                double y = start(modelDamage.corner0.y, _spacing);
-
-                for (;;) {
-                    hline(modelCr, y, modelDamage.corner0.x, modelDamage.corner1.x);
-
-                    // FIXME?
-                    modelCr.save(); {
-                        modelCr.scale(1.0 / xx, 1.0 / yy);
-                        modelCr.stroke();
-                    } modelCr.restore();
-
-                    if (y > modelDamage.corner1.y) {
-                        break;
-                    }
-
-                    y += _spacing;
-                }
-            }
-        } modelCr.restore();
-        +/
     }
 
     // IGrid overrides:
--- a/doodle/dia/icanvas.d	Thu Aug 19 00:28:57 2010 +0930
+++ b/doodle/dia/icanvas.d	Thu Aug 19 18:28:18 2010 +0930
@@ -52,7 +52,7 @@
     void zoomChanged(double zoom);
 
     // TODO  inout?
-    bool snap(in Point a, out Point b) const;
+    bool snap(in Point a, out Point b) const;               // XXX remove this and add it to Layer
 }
 
 interface IPage {
--- a/doodle/gtk/cairo_canvas.d	Thu Aug 19 00:28:57 2010 +0930
+++ b/doodle/gtk/cairo_canvas.d	Thu Aug 19 18:28:18 2010 +0930
@@ -176,16 +176,6 @@
 
     private {
 
-        void initialiseBounds(in Rectangle viewBoundsScreen) {
-            Rectangle layerBounds = _layerStack.bounds;
-            Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
-            _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen);
-            _grid.zoomChanged(_screenModel.zoom);
-
-            updateAdjustments;
-            updateRulers;
-        }
-
         void consolidateBounds() {
             Rectangle layerBounds = _layerStack.bounds;
             Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
@@ -198,9 +188,21 @@
         bool onConfigure(GdkEventConfigure * event, Widget widget) {
             assert(widget is _drawingArea);
 
-            Rectangle viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height));
-            if (_screenModel is null) { initialiseBounds(viewBoundsScreen); }
-            else { consolidateBounds; }
+            auto viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height));
+
+            if (_screenModel is null) {
+                Rectangle layerBounds = _layerStack.bounds;
+                Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
+                _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen);
+                _grid.zoomChanged(_screenModel.zoom);
+
+                updateAdjustments;
+                updateRulers;
+            }
+            else {
+                _screenModel.setViewBoundsScreen(viewBoundsScreen);
+                consolidateBounds;
+            }
 
             return true;
         }
--- a/doodle/tk/screen_model.d	Thu Aug 19 00:28:57 2010 +0930
+++ b/doodle/tk/screen_model.d	Thu Aug 19 18:28:18 2010 +0930
@@ -36,6 +36,7 @@
         _viewCentreModel = _canvasBoundsModel.centre;
     }
 
+    void setViewBoundsScreen(in Rectangle viewBoundsScreen) { _viewBoundsScreen = viewBoundsScreen; }
     void consolidateCanvasBounds(in Rectangle requiredCanvasBounds) { _canvasBoundsModel = screenToModel(_viewBoundsScreen) | requiredCanvasBounds; }
     void canvasAccommodate(in Rectangle bounds) { _canvasBoundsModel = _canvasBoundsModel | bounds; }