Mercurial > projects > doodle
annotate doodle/dia/icanvas.d @ 91:42766e14534e
Update screenViewBounds when the window is resized
author | daveb |
---|---|
date | Thu, 19 Aug 2010 18:28:18 +0930 |
parents | 467febed7367 |
children | a98116479793 |
rev | line source |
---|---|
28
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
27
diff
changeset
|
1 module doodle.dia.icanvas; |
0 | 2 |
26 | 3 public { |
28
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
27
diff
changeset
|
4 import doodle.tk.geometry; |
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
27
diff
changeset
|
5 import doodle.tk.events; |
84 | 6 import doodle.tk.renderer; |
89 | 7 import doodle.tk.screen_model; |
26 | 8 } |
0 | 9 |
27 | 10 private { |
11 import std.typecons; | |
12 } | |
13 | |
14 mixin(defineEnum!("Cursor", | |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
58
diff
changeset
|
15 "DEFAULT", "HAND", "CROSSHAIR", "PENCIL")); |
27 | 16 |
78 | 17 interface IViewport2 { |
77 | 18 void damageModel(in Rectangle area); |
19 void damageScreen(in Rectangle area); | |
67 | 20 } |
10 | 21 |
78 | 22 interface IViewport : IViewport2 { |
23 void zoomRelative(in Point screenDatum, in double factor); // FIXME reorder arguments | |
24 void panRelative(in Vector screenDisplacement); | |
25 void setCursor(in Cursor cursor); | |
26 } | |
27 | |
28 /* | |
67 | 29 final class Damage { |
30 void increase(in Rectangle additional) { _rectangle = _rectangle | additional; } | |
31 Rectangle rectangle() const { return _rectangle; } | |
32 private Rectangle _rectangle; | |
0 | 33 } |
78 | 34 */ |
0 | 35 |
57 | 36 interface IEventHandler { |
37 bool handleButtonPress(scope IViewport viewport, in ButtonEvent event); | |
38 bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event); | |
39 bool handleMotion(scope IViewport viewport, in MotionEvent event); | |
40 bool handleScroll(scope IViewport viewport, in ScrollEvent event); | |
64
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
41 bool handleEnter(scope IViewport viewport, CrossingEvent event); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
42 bool handleLeave(scope IViewport viewport, CrossingEvent event); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
43 bool handleKeyPress(scope IViewport viewport, in KeyEvent event); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
44 bool handleKeyRelease(scope IViewport viewport, in KeyEvent event); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
45 |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
46 // XXX Still not sure about these: |
57 | 47 //bool handleFocusIn(scope IViewport viewport, FocusEvent event); |
48 //bool handleFocusOut(scope IViewport viewport, FocusEvent event); | |
0 | 49 } |
10 | 50 |
57 | 51 interface IGrid { |
48 | 52 void zoomChanged(double zoom); |
35 | 53 |
36 | 54 // TODO inout? |
91 | 55 bool snap(in Point a, out Point b) const; // XXX remove this and add it to Layer |
35 | 56 } |
57 | |
57 | 58 interface IPage { |
36 | 59 // TODO |
60 } | |
61 | |
10 | 62 abstract class Layer { |
12 | 63 this(in string name) { |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
64 _name = name; |
12 | 65 } |
66 | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
67 string name() const { return _name; } |
12 | 68 |
11 | 69 Rectangle bounds() const; |
35 | 70 |
84 | 71 void draw(in Rectangle screenDamage, scope Renderer screenRenderer, |
89 | 72 in Rectangle modelDamage, scope Renderer modelRenderer, |
73 in ScreenModel screenModel) const; | |
12 | 74 |
75 private { | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
76 immutable string _name; |
12 | 77 } |
10 | 78 } |