Mercurial > projects > doodle
diff canvas.d @ 18:df8d81d9f499
Lasso fiddling
author | David Bryant <daveb@acres.com.au> |
---|---|
date | Mon, 13 Jul 2009 17:08:32 +0930 |
parents | c643c04e3f5e |
children | 22abbf4cde96 |
line wrap: on
line diff
--- a/canvas.d Mon Jul 13 16:46:21 2009 +0930 +++ b/canvas.d Mon Jul 13 17:08:32 2009 +0930 @@ -135,6 +135,10 @@ mDamage = mDamage | model_to_pixel(area); } + override void damage_pixel(Rectangle area) { + mDamage = mDamage | area; + } + override double zoom() const { return mZoom; } @@ -231,10 +235,12 @@ Vector(cast(double)event.area.width, cast(double)event.area.height)); model_cr.save; pixel_cr.save; { + // FIXME restore clipping + // Setup model context - rectangle(model_cr, damage); - model_cr.clip; + //rectangle(model_cr, damage); + //model_cr.clip; GtkAdjustment * h_gtkAdjustment = mHAdjustment.getAdjustmentStruct; GtkAdjustment * v_gtkAdjustment = mVAdjustment.getAdjustmentStruct; @@ -247,14 +253,14 @@ pixel_cr.translate(0.0, mViewSize.y); pixel_cr.scale(1.0, -1.0); - rectangle(pixel_cr, damage); - pixel_cr.clip; + //rectangle(pixel_cr, damage); + //pixel_cr.clip; // Fill the background pixel_cr.save; { // Make the window light grey - pixel_cr.setSourceRgba(1.0, 1.0, 1.0, 0.7); + pixel_cr.setSourceRgba(0.6, 0.6, 0.6, 1.0); rectangle(pixel_cr, damage); pixel_cr.fill; } pixel_cr.restore; @@ -442,14 +448,19 @@ void process_damage() { if (mDamage.valid) { - writefln("Damage: %s", mDamage); + //writefln("Damage: %s", mDamage); int x, y, w, h; mDamage.get_quantised(x, y, w, h); - mDrawingArea.queueDrawArea(x, cast(int)mViewSize.y - y, w, h); + //writefln("Quantised damage: %d %d %d %d", x, y, w, h); + y = cast(int)mViewSize.y - (y + h); + //writefln("Flipped Quantised damage: %d %d %d %d", x, y, w, h); + // FIXME only redraw the damaged area + //mDrawingArea.queueDrawArea(x, y, w, h); + mDrawingArea.queueDraw(); mDamage = Rectangle.DEFAULT; } else { - writefln("No damage"); + //writefln("No damage"); } }