comparison doodle/dia/icanvas.d @ 57:9960c4fbd0dd

I is for Interface
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 22:01:54 +0930
parents 576b9fba4677
children c63719604adb
comparison
equal deleted inserted replaced
56:b190a9d9352e 57:9960c4fbd0dd
11 } 11 }
12 12
13 mixin(defineEnum!("Cursor", 13 mixin(defineEnum!("Cursor",
14 "DEFAULT", "HAND", "CROSSHAIR")); 14 "DEFAULT", "HAND", "CROSSHAIR"));
15 15
16 interface Viewport { 16 interface IViewport {
17 void zoomRelative(in Point pixelDatum, in double factor); 17 void zoomRelative(in Point pixelDatum, in double factor);
18 void panRelative(in Vector pixelDisplacement); 18 void panRelative(in Vector pixelDisplacement);
19 void setCursor(in Cursor cursor); 19 void setCursor(in Cursor cursor);
20 20
21 // FIXME get rid of these and accumulate damage during event handling 21 // FIXME get rid of these and accumulate damage during event handling
34 double modelToPixel(in double model) const; 34 double modelToPixel(in double model) const;
35 double pixelToModel(in double pixel) const; 35 double pixelToModel(in double pixel) const;
36 */ 36 */
37 } 37 }
38 38
39 interface EventHandler { 39 interface IEventHandler {
40 bool handleButtonPress(scope Viewport viewport, in ButtonEvent event); 40 bool handleButtonPress(scope IViewport viewport, in ButtonEvent event);
41 bool handleButtonRelease(scope Viewport viewport, in ButtonEvent event); 41 bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event);
42 bool handleMotion(scope Viewport viewport, in MotionEvent event); 42 bool handleMotion(scope IViewport viewport, in MotionEvent event);
43 bool handleScroll(scope Viewport viewport, in ScrollEvent event); 43 bool handleScroll(scope IViewport viewport, in ScrollEvent event);
44 //bool handleEnter(scope Viewport viewport, CrossingEvent event); 44 //bool handleEnter(scope IViewport viewport, CrossingEvent event);
45 //bool handleLeave(scope Viewport viewport, CrossingEvent event); 45 //bool handleLeave(scope IViewport viewport, CrossingEvent event);
46 //bool handleFocusIn(scope Viewport viewport, FocusEvent event); 46 //bool handleFocusIn(scope IViewport viewport, FocusEvent event);
47 //bool handleFocusOut(scope Viewport viewport, FocusEvent event); 47 //bool handleFocusOut(scope IViewport viewport, FocusEvent event);
48 bool handleKeyPress(scope Viewport viewport, in KeyEvent event); 48 bool handleKeyPress(scope IViewport viewport, in KeyEvent event);
49 bool handleKeyRelease(scope Viewport viewport, in KeyEvent event); 49 bool handleKeyRelease(scope IViewport viewport, in KeyEvent event);
50 } 50 }
51 51
52 interface Grid { 52 interface IGrid {
53 void zoomChanged(double zoom); 53 void zoomChanged(double zoom);
54 54
55 // TODO inout? 55 // TODO inout?
56 bool snap(in Point a, out Point b) const; 56 bool snap(in Point a, out Point b) const;
57 } 57 }
58 58
59 interface Page { 59 interface IPage {
60 // TODO 60 // TODO
61 } 61 }
62 62
63 abstract class Layer { 63 abstract class Layer {
64 this(in string name) { 64 this(in string name) {
67 67
68 string name() const { return mName; } 68 string name() const { return mName; }
69 69
70 Rectangle bounds() const; 70 Rectangle bounds() const;
71 71
72 void draw(in Viewport viewport, 72 void draw(in IViewport viewport,
73 in Rectangle pixelDamage, scope Context pixelCr, 73 in Rectangle pixelDamage, scope Context pixelCr,
74 in Rectangle modelDamage, scope Context modelCr) const; 74 in Rectangle modelDamage, scope Context modelCr) const;
75 75
76 private { 76 private {
77 invariant string mName; 77 invariant string mName;