changeset 78:024a5608087f

Meh
author "David Bryant <bagnose@gmail.com>"
date Sun, 15 Aug 2010 15:19:14 +0930
parents 15ca7d5cd1ed
children 535bae7a7305
files doodle/dia/icanvas.d doodle/gtk/canvas.d doodle/tk/drawing.d doodle/tk/geometry.d doodle/tk/pixel_model.d
diffstat 5 files changed, 22 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/doodle/dia/icanvas.d	Sun Aug 15 01:36:22 2010 +0930
+++ b/doodle/dia/icanvas.d	Sun Aug 15 15:19:14 2010 +0930
@@ -13,20 +13,24 @@
 mixin(defineEnum!("Cursor",
                   "DEFAULT", "HAND", "CROSSHAIR", "PENCIL"));
 
-interface IViewport {
-    void zoomRelative(in Point screenDatum, in double factor);
-    void panRelative(in Vector screenDisplacement);
-    void setCursor(in Cursor cursor);
-
+interface IViewport2 {
     void damageModel(in Rectangle area);
     void damageScreen(in Rectangle area);
 }
 
+interface IViewport : IViewport2 {
+    void zoomRelative(in Point screenDatum, in double factor);      // FIXME reorder arguments
+    void panRelative(in Vector screenDisplacement);
+    void setCursor(in Cursor cursor);
+}
+
+/*
 final class Damage {
     void increase(in Rectangle additional) { _rectangle = _rectangle | additional; }
     Rectangle rectangle() const { return _rectangle; }
     private Rectangle _rectangle;
 }
+*/
 
 interface IEventHandler {
     bool handleButtonPress(scope IViewport viewport, in ButtonEvent event);
--- a/doodle/gtk/canvas.d	Sun Aug 15 01:36:22 2010 +0930
+++ b/doodle/gtk/canvas.d	Sun Aug 15 15:19:14 2010 +0930
@@ -299,39 +299,27 @@
 
         bool onButtonPress(GdkEventButton * event, Widget widget) {
             assert(widget is _drawingArea);
-
-            auto buttonEvent = makeButtonEvent(event, _screenModel);
-            _eventHandler.handleButtonPress(this, buttonEvent);
+            _eventHandler.handleButtonPress(this, makeButtonEvent(event, _screenModel));
             fixDamage;
             return true;
         }
 
         bool onButtonRelease(GdkEventButton * event, Widget widget) {
             assert(widget is _drawingArea);
-
-            auto buttonEvent = makeButtonEvent(event, _screenModel);
-            _eventHandler.handleButtonRelease(this, buttonEvent);
+            _eventHandler.handleButtonRelease(this, makeButtonEvent(event, _screenModel));
             fixDamage;
             return true;
         }
 
         bool onKeyPressEvent(GdkEventKey * event, Widget widget) {
             assert(widget is _drawingArea);
-
-            auto keyEvent = new KeyEvent(event.string[0..strlen(event.string)].idup,
-                                         event.keyval,
-                                         gtk2tkMask(event.state));
-            message("Got key press %s", keyEvent);
-            _eventHandler.handleKeyPress(this, keyEvent);
-
+            _eventHandler.handleKeyPress(this, makeKeyEvent(event, _screenModel));
             fixDamage;
-
             return true;
         }
 
         bool onKeyReleaseEvent(GdkEventKey * event, Widget widget) {
             assert(widget is _drawingArea);
-
             _eventHandler.handleKeyRelease(this, makeKeyEvent(event, _screenModel));
             fixDamage;
             return true;
@@ -351,7 +339,6 @@
 
         bool onScroll(GdkEventScroll * event, Widget widget) {
             assert(widget is _drawingArea);
-
             _eventHandler.handleScroll(this, makeScrollEvent(event, _screenModel));
             fixDamage;
             return true;
@@ -359,7 +346,6 @@
 
         bool onEnterNotify(GdkEventCrossing * event, Widget widget) {
             assert(widget is _drawingArea);
-
             _eventHandler.handleEnter(this, makeCrossingEvent(event, _screenModel));
             fixDamage;
             return true;
@@ -367,7 +353,6 @@
 
         bool onLeaveNotify(GdkEventCrossing * event, Widget widget) {
             assert(widget is _drawingArea);
-
             _eventHandler.handleLeave(this, makeCrossingEvent(event, _screenModel));
             fixDamage;
             return true;
--- a/doodle/tk/drawing.d	Sun Aug 15 01:36:22 2010 +0930
+++ b/doodle/tk/drawing.d	Sun Aug 15 15:19:14 2010 +0930
@@ -35,5 +35,8 @@
     //void setFontSize;
     void drawText(in string text);
 
+    void measureText(in string text, out Rectangle logicalBounds, out Rectangle totalBounds);
+
     // How to fit fonts, metrics, etc in here?
+    // Initially let's just support one font
 }
--- a/doodle/tk/geometry.d	Sun Aug 15 01:36:22 2010 +0930
+++ b/doodle/tk/geometry.d	Sun Aug 15 15:19:14 2010 +0930
@@ -263,7 +263,7 @@
 
 // Operations about the centre
 
-Rectangle feather(in Rectangle r, double amount) {
+Rectangle feather(in Rectangle r, double amount) {          // feather isn't the right name
     assert(amount >= 0.0);
     assert(!isnan(amount));
     return Rectangle(Point(r.position.x - amount, r.position.y - amount),
--- a/doodle/tk/pixel_model.d	Sun Aug 15 01:36:22 2010 +0930
+++ b/doodle/tk/pixel_model.d	Sun Aug 15 15:19:14 2010 +0930
@@ -9,6 +9,7 @@
 }
 
 // This class manages the relationship between screen space and model space.
+// Screen is defined as the current window/viewport into the model
 // It provides convenient high-level operations.
 //
 // x and y run right and up respectively for screen and model space
@@ -62,11 +63,11 @@
     private {
         static double clampZoom(in double zoom) { return clamp(zoom, 0.1, 10.0); }
 
-        // Screen units are screens
+        // Screen units are pixels
         // Model units are millimetres
-        double    _zoom;                // screens-per-millimetre
-        Rectangle _viewBoundsScreen;    // bounds of the viewport in screens
-        Point     _viewCentreModel;     // where in the model is the centre of our view
-        Rectangle _canvasBoundsModel;   // the bounds of the canvas in millimetres
+        double    _zoom;                // pixels-per-millimetre
+        Rectangle _viewBoundsScreen;    // bounds of the viewport in screen space
+        Point     _viewCentreModel;     // where in the model is the centre of our screen
+        Rectangle _canvasBoundsModel;   // the bounds of the canvas in model space
     }
 }