Mercurial > projects > doodle
diff doodle/gtk/canvas.d @ 67:31d10176415d
Checkpoint
author | daveb |
---|---|
date | Fri, 13 Aug 2010 15:28:04 +0930 |
parents | eb5436b47d13 |
children | 64bd864db30d |
line wrap: on
line diff
--- a/doodle/gtk/canvas.d Thu Aug 12 22:43:42 2010 +0930 +++ b/doodle/gtk/canvas.d Fri Aug 13 15:28:04 2010 +0930 @@ -6,10 +6,10 @@ } private { + import doodle.core.misc; import doodle.core.logging; + import doodle.cairo.routines; import doodle.gtk.conversions; - import doodle.tk.misc; - import doodle.cairo.routines; import cairo.Surface; @@ -131,7 +131,7 @@ // value, lower, upper, step-inc, page-inc, page-size // Give the adjustments dummy values until we receive a configure _hAdjustment = new Adjustment(0.0, 0.0, 1.0, 0.2, 0.5, 0.5); - _hAdjustment.addOnValueChanged(&onValueChanged); + _hAdjustment.addOnValueChanged(&onAdjustmentValueChanged); _hScrollbar = new HScrollbar(_hAdjustment); _hScrollbar.setInverted(false); attach(_hScrollbar, @@ -142,7 +142,7 @@ 0, 0); _vAdjustment = new Adjustment(0.0, 0.0, 1.0, 0.2, 0.5, 0.5); - _vAdjustment.addOnValueChanged(&onValueChanged); + _vAdjustment.addOnValueChanged(&onAdjustmentValueChanged); _vScrollbar = new VScrollbar(_vAdjustment); _vScrollbar.setInverted(true); attach(_vScrollbar, @@ -219,7 +219,7 @@ void initialiseBounds() { Rectangle layerBounds = Rectangle.DEFAULT; - foreach (ref layer; _layers) { + foreach (layer; _layers) { layerBounds = layerBounds | layer.bounds; } @@ -245,7 +245,7 @@ void consolidateBounds() { Rectangle layerBounds = Rectangle.DEFAULT; - foreach (ref layer; _layers) { + foreach (layer; _layers) { layerBounds = layerBounds | layer.bounds; } @@ -300,41 +300,38 @@ //trace("Pixel damage: %s, model damage: %s", pixelDamage, modelDamage); modelCr.save; pixelCr.save; { - // Setup model context and clip + { + // Setup model context and clip + modelCr.translate(0.0, _viewSize.y); + modelCr.scale(_zoom, -_zoom); - GtkAdjustment * hGtkAdjustment = _hAdjustment.getAdjustmentStruct; - GtkAdjustment * vGtkAdjustment = _vAdjustment.getAdjustmentStruct; - - modelCr.scale(_zoom, -_zoom); - modelCr.translate(-gtk_adjustment_get_value(hGtkAdjustment), - -gtk_adjustment_get_value(vGtkAdjustment) - gtk_adjustment_get_page_size(vGtkAdjustment)); + immutable Vector modelSize = pixelToModel(_viewSize); + immutable Point viewLeftBottom = _viewCentre - modelSize / 2.0; + modelCr.translate(-viewLeftBottom.x, -viewLeftBottom.y); - rectangle(modelCr, modelDamage); - modelCr.clip; - - // Setup pixel context and clip + rectangle(modelCr, modelDamage); + modelCr.clip; + } - pixelCr.translate(0.0, _viewSize.y); - pixelCr.scale(1.0, -1.0); + { + // Setup pixel context and clip + pixelCr.translate(0.0, _viewSize.y); + pixelCr.scale(1.0, -1.0); - rectangle(pixelCr, pixelDamage); - pixelCr.clip; - - // Fill the background + rectangle(pixelCr, pixelDamage); + pixelCr.clip; + } pixelCr.save; { - // Make the window light grey + // Fill the background with light grey pixelCr.setSourceRgba(0.9, 0.9, 0.9, 1.0); rectangle(pixelCr, pixelDamage); pixelCr.fill; } pixelCr.restore; // Draw each layer - - foreach(ref layer; _layers) { - modelCr.save; pixelCr.save; { - layer.draw(this, pixelDamage, pixelCr, modelDamage, modelCr); - } pixelCr.restore; modelCr.restore; + foreach(layer; _layers) { + layer.draw(this, pixelDamage, pixelCr, modelDamage, modelCr); } } pixelCr.restore; modelCr.restore; @@ -393,7 +390,7 @@ ushort hardwareKeycode; ubyte group; uint bitfield0; - //uint isModifier : 1; + uint isModifier : 1; } */ bool onKeyPressEvent(GdkEventKey * event, Widget widget) { @@ -565,27 +562,23 @@ trace("onGrabNotify"); } - void onValueChanged(Adjustment adjustment) { + void onAdjustmentValueChanged(Adjustment adjustment) { GtkAdjustment * hGtkAdjustment = _hAdjustment.getAdjustmentStruct; GtkAdjustment * vGtkAdjustment = _vAdjustment.getAdjustmentStruct; - Point viewLeftTop = Point(gtk_adjustment_get_value(hGtkAdjustment), - gtk_adjustment_get_value(vGtkAdjustment)); + Point viewLeftBottom = Point(gtk_adjustment_get_value(hGtkAdjustment), + gtk_adjustment_get_value(vGtkAdjustment)); Vector modelSize = pixelToModel(_viewSize); - //writefln("%s", viewLeftBottom); - _viewCentre = viewLeftTop + modelSize / 2.0; - //writefln("onValueChanged _viewCentre: %s", _viewCentre); + _viewCentre = viewLeftBottom + modelSize / 2.0; updateRulers; - queueDraw; } void updateRulers() { immutable Vector modelSize = pixelToModel(_viewSize); - immutable Point viewLeftBottom = _viewCentre - modelSize / 2.0; immutable Point viewRightTop = _viewCentre + modelSize / 2.0; @@ -608,7 +601,6 @@ void updateAdjustments() { immutable Vector modelSize = pixelToModel(_viewSize); - immutable Point viewLeftBottom = _viewCentre - modelSize / 2.0; immutable Point viewRightTop = _viewCentre + modelSize / 2.0; @@ -685,8 +677,8 @@ bool _boundsValid; Rectangle _damage; // pixels - // Model units are in millimetres - // Screen units are in pixels + // Model units are millimetres + // Screen units are pixels double _zoom; // pixels-per-model-unit Vector _viewSize; // pixel: size of view window in pixels Point _viewCentre; // model: where in the model is the centre of our view