Mercurial > projects > doodle
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); + } }