Mercurial > projects > doodle
annotate doodle/dia/icanvas.d @ 101:523269b36711
Update to dmd 2.050
author | David Bryant <bagnose@gmail.com> |
---|---|
date | Thu, 28 Oct 2010 16:35:11 +1030 |
parents | a98116479793 |
children | 7abaf5c3959f |
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 |
101 | 10 enum Cursor { DEFAULT, HAND, CROSSHAIR, PENCIL } |
27 | 11 |
78 | 12 interface IViewport2 { |
77 | 13 void damageModel(in Rectangle area); |
14 void damageScreen(in Rectangle area); | |
67 | 15 } |
10 | 16 |
78 | 17 interface IViewport : IViewport2 { |
92 | 18 void zoomRelative(in double factor, in Point screenDatum); |
78 | 19 void panRelative(in Vector screenDisplacement); |
20 void setCursor(in Cursor cursor); | |
21 } | |
22 | |
23 /* | |
67 | 24 final class Damage { |
25 void increase(in Rectangle additional) { _rectangle = _rectangle | additional; } | |
26 Rectangle rectangle() const { return _rectangle; } | |
27 private Rectangle _rectangle; | |
0 | 28 } |
78 | 29 */ |
0 | 30 |
57 | 31 interface IEventHandler { |
32 bool handleButtonPress(scope IViewport viewport, in ButtonEvent event); | |
33 bool handleButtonRelease(scope IViewport viewport, in ButtonEvent event); | |
34 bool handleMotion(scope IViewport viewport, in MotionEvent event); | |
35 bool handleScroll(scope IViewport viewport, in ScrollEvent event); | |
92 | 36 bool handleEnter(scope IViewport viewport, in CrossingEvent event); |
37 bool handleLeave(scope IViewport viewport, in CrossingEvent event); | |
64
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
38 bool handleKeyPress(scope IViewport viewport, in KeyEvent event); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
39 bool handleKeyRelease(scope IViewport viewport, in KeyEvent event); |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
40 |
eb5436b47d13
Implemented crossing events
"David Bryant <bagnose@gmail.com>"
parents:
63
diff
changeset
|
41 // XXX Still not sure about these: |
57 | 42 //bool handleFocusIn(scope IViewport viewport, FocusEvent event); |
43 //bool handleFocusOut(scope IViewport viewport, FocusEvent event); | |
0 | 44 } |
10 | 45 |
57 | 46 interface IGrid { |
92 | 47 void zoomChanged(in double zoom); |
35 | 48 |
49 } | |
50 | |
57 | 51 interface IPage { |
36 | 52 } |
53 | |
10 | 54 abstract class Layer { |
12 | 55 this(in string name) { |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
56 _name = name; |
12 | 57 } |
58 | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
59 string name() const { return _name; } |
12 | 60 |
11 | 61 Rectangle bounds() const; |
35 | 62 |
92 | 63 //bool snap(in Point a, out Point b) const; |
64 | |
84 | 65 void draw(in Rectangle screenDamage, scope Renderer screenRenderer, |
89 | 66 in Rectangle modelDamage, scope Renderer modelRenderer, |
67 in ScreenModel screenModel) const; | |
12 | 68 |
69 private { | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
70 immutable string _name; |
12 | 71 } |
10 | 72 } |