comparison doodle/gtk/cairo_canvas.d @ 91:42766e14534e

Update screenViewBounds when the window is resized
author daveb
date Thu, 19 Aug 2010 18:28:18 +0930
parents 467febed7367
children a98116479793
comparison
equal deleted inserted replaced
90:885914257e0e 91:42766e14534e
174 } 174 }
175 } 175 }
176 176
177 private { 177 private {
178 178
179 void initialiseBounds(in Rectangle viewBoundsScreen) {
180 Rectangle layerBounds = _layerStack.bounds;
181 Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
182 _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen);
183 _grid.zoomChanged(_screenModel.zoom);
184
185 updateAdjustments;
186 updateRulers;
187 }
188
189 void consolidateBounds() { 179 void consolidateBounds() {
190 Rectangle layerBounds = _layerStack.bounds; 180 Rectangle layerBounds = _layerStack.bounds;
191 Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size); 181 Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
192 _screenModel.consolidateCanvasBounds(paddedLayerBounds); 182 _screenModel.consolidateCanvasBounds(paddedLayerBounds);
193 183
196 } 186 }
197 187
198 bool onConfigure(GdkEventConfigure * event, Widget widget) { 188 bool onConfigure(GdkEventConfigure * event, Widget widget) {
199 assert(widget is _drawingArea); 189 assert(widget is _drawingArea);
200 190
201 Rectangle viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height)); 191 auto viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height));
202 if (_screenModel is null) { initialiseBounds(viewBoundsScreen); } 192
203 else { consolidateBounds; } 193 if (_screenModel is null) {
194 Rectangle layerBounds = _layerStack.bounds;
195 Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
196 _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen);
197 _grid.zoomChanged(_screenModel.zoom);
198
199 updateAdjustments;
200 updateRulers;
201 }
202 else {
203 _screenModel.setViewBoundsScreen(viewBoundsScreen);
204 consolidateBounds;
205 }
204 206
205 return true; 207 return true;
206 } 208 }
207 209
208 bool onExpose(GdkEventExpose * event, Widget widget) { 210 bool onExpose(GdkEventExpose * event, Widget widget) {