diff doodle/fig/select_tool.d @ 80:b759414d2b72

Switched from cairo to Drawable abstraction
author "David Bryant <bagnose@gmail.com>"
date Sun, 15 Aug 2010 23:43:04 +0930
parents 535bae7a7305
children d92b9f04b1e8
line wrap: on
line diff
--- a/doodle/fig/select_tool.d	Sun Aug 15 23:18:05 2010 +0930
+++ b/doodle/fig/select_tool.d	Sun Aug 15 23:43:04 2010 +0930
@@ -16,7 +16,7 @@
     override bool handleButtonPress(scope IViewport viewport, in ButtonEvent event) {
         if (event.buttonName == ButtonName.LEFT) {
             _active = true;
-            _anchorPoint = _currentPoint = event.pixelPoint;
+            _anchorPoint = _currentPoint = event.screenPoint;
             viewport.setCursor(Cursor.HAND);
             return true;
         }
@@ -40,31 +40,39 @@
     override bool handleMotion(scope IViewport viewport, in MotionEvent event) {
         if (_active) {
             viewport.damageScreen(growCentre(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH));
-            _currentPoint = event.pixelPoint;
+            _currentPoint = event.screenPoint;
             viewport.damageScreen(growCentre(Rectangle(_anchorPoint, _currentPoint), LINE_WIDTH));
         }
 
         return false;
     }
 
-    override void draw(in Rectangle pixelDamage, scope Context pixelCr) const {
+    override void draw(in Rectangle screenDamage, scope Drawable screenDrawable) const {
         if (_active) {
             /*
-               pixelCr.save; {
-               pixelCr.setSourceRgba(0.0, 0.0, 0.8, 0.3);
-               rectangle(pixelCr, Rectangle(_currentPoint, _anchorPoint));
-               pixelCr.fill();
-               } pixelCr.restore();
+               screenCr.save; {
+               screenCr.setSourceRgba(0.0, 0.0, 0.8, 0.3);
+               rectangle(screenCr, Rectangle(_currentPoint, _anchorPoint));
+               screenCr.fill();
+               } screenCr.restore();
              */
 
-            pixelCr.save(); {
+            screenDrawable.pushState; {
+                screenDrawable.setLineWidth(LINE_WIDTH);
+                screenDrawable.setColor(Color(0.0, 0.0, 0.5, 1.0));
+                screenDrawable.drawRectangle(Rectangle(_currentPoint, _anchorPoint), false);
+            } screenDrawable.popState;
+
+            /*
+            screenCr.save(); {
                 double[] dashes = [ 4.0, 4.0 ];
-                pixelCr.setDash(dashes, 0.0);
-                pixelCr.setSourceRgba(0.0, 0.0, 0.5, 1.0);
-                pixelCr.setLineWidth(LINE_WIDTH);
-                rectangle(pixelCr, Rectangle(_currentPoint, _anchorPoint));
-                pixelCr.stroke;
-            } pixelCr.restore;
+                screenCr.setDash(dashes, 0.0);
+                screenCr.setSourceRgba(0.0, 0.0, 0.5, 1.0);
+                screenCr.setLineWidth(LINE_WIDTH);
+                rectangle(screenCr, Rectangle(_currentPoint, _anchorPoint));
+                screenCr.stroke;
+            } screenCr.restore;
+            */
         }
     }