changeset 9:66b47e122b31

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sat, 11 Jul 2009 22:06:09 +0930
parents bf7903435f58
children 71ca82e0eb76
files canvas.d standard_tools.d
diffstat 2 files changed, 22 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/canvas.d	Sat Jul 11 21:49:04 2009 +0930
+++ b/canvas.d	Sat Jul 11 22:06:09 2009 +0930
@@ -283,7 +283,7 @@
 
             Point view_left_bottom = Point(gtk_adjustment_get_value(h_gtkAdjustment),
                                              gtk_adjustment_get_value(v_gtkAdjustment));
-            writefln("%s", view_left_bottom);
+            //writefln("%s", view_left_bottom);
             Vector model_size = screen_to_model(mViewSize);
             mViewCentre = view_left_bottom + model_size / 2.0;
 
@@ -353,7 +353,7 @@
         double model_to_screen(double model) { return mZoom * model; }
         double screen_to_model(double screen) { return screen / mZoom; }
 
-        double clamp_zoom(double zoom) { return clamp(zoom, 0.1, 10.0); }
+        double clamp_zoom(double zoom) { return clamp(zoom, 0.02, 50.0); }
 
         static const Point ORIGIN;
         static const Vector INITIAL_PAGE_SIZE;
--- a/standard_tools.d	Sat Jul 11 21:49:04 2009 +0930
+++ b/standard_tools.d	Sat Jul 11 22:06:09 2009 +0930
@@ -36,25 +36,24 @@
 
     bool handle_scroll(ICanvas canvas, in ScrollEvent event) {
         if (event.mask.is_unset(Modifier.BUTTON_MIDDLE)) {
-            const double AMOUNT = 60.0;
-            Vector v;
+            Vector delta;
 
             switch (event.scroll_direction) {
             case ScrollDirection.UP:
-                v = event.mask.is_set(Modifier.SHIFT) ? Vector(-AMOUNT, 0.0) : Vector(0.0, -AMOUNT);
+                delta = event.mask.is_set(Modifier.SHIFT) ? Vector(-AMOUNT, 0.0) : Vector(0.0, -AMOUNT);
                 break;
             case ScrollDirection.DOWN:
-                v = event.mask.is_set(Modifier.SHIFT) ? Vector(AMOUNT, 0.0) : Vector(0.0, AMOUNT);
+                delta = event.mask.is_set(Modifier.SHIFT) ? Vector(AMOUNT, 0.0) : Vector(0.0, AMOUNT);
                 break;
             case ScrollDirection.LEFT:
-                v = Vector(-AMOUNT, 0.0);
+                delta = Vector(-AMOUNT, 0.0);
                 break;
             case ScrollDirection.RIGHT:
-                v = Vector(AMOUNT, 0.0);
+                delta = Vector(AMOUNT, 0.0);
                 break;
             }
 
-            canvas.rel_pan(v);
+            canvas.rel_pan(delta);
         }
 
         return true;
@@ -70,12 +69,11 @@
 
     private {
         Point mLastPosition;
+        static invariant double AMOUNT = 60.0;
     }
 }
 
 final class ZoomTool : Tool {
-    static invariant double ZOOM = sqrt(2.0);
-
     bool handle_button_press(ICanvas canvas, in ButtonEvent event) {
         return false;
     }
@@ -90,16 +88,17 @@
 
     bool handle_scroll(ICanvas canvas, in ScrollEvent event) {
         if (event.mask.is_set(Modifier.CONTROL)) {
-            // Zoom about the pointer
-            double zoom = 1.44;
-
             if (event.scroll_direction == ScrollDirection.DOWN) {
-                zoom = 1.0 / zoom;
+                canvas.rel_zoom(event.screen_point(), 1.0 / ZOOM);
+                return true;
             }
-
-            canvas.rel_zoom(event.screen_point(), zoom);
-
-            return true;
+            else if (event.scroll_direction == ScrollDirection.UP) {
+                canvas.rel_zoom(event.screen_point(), ZOOM);
+                return true;
+            }
+            else {
+                return false;
+            }
         }
         else {
             return false;
@@ -113,4 +112,8 @@
     bool handle_key_release(ICanvas canvas, in KeyEvent event) {
         return false;
     }
+
+    private {
+        static invariant double ZOOM = sqrt(2.0);
+    }
 }