Mercurial > projects > doodle
annotate icanvas.d @ 12:a093c4fbdd43
Checkpoint
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sun, 12 Jul 2009 00:39:35 +0930 |
parents | fb571a3b1f0d |
children | 9e63308b749c |
rev | line source |
---|---|
0 | 1 module icanvas; |
2 | |
3
7d57cae10805
Renamed geometry2 to geometry
David Bryant <daveb@acres.com.au>
parents:
2
diff
changeset
|
3 import tk.geometry; |
7 | 4 import tk.events; |
10 | 5 import cairo.Context; |
0 | 6 |
10 | 7 interface Viewport { |
3
7d57cae10805
Renamed geometry2 to geometry
David Bryant <daveb@acres.com.au>
parents:
2
diff
changeset
|
8 void rel_zoom(Point screen_datum, double factor); |
7d57cae10805
Renamed geometry2 to geometry
David Bryant <daveb@acres.com.au>
parents:
2
diff
changeset
|
9 void rel_pan(Vector screen_displacement); |
10 | 10 //void damage(Rectangle area); |
11 | |
11 | 12 double zoom() const; |
10 | 13 Point model_to_screen(Point model) const; |
14 Point screen_to_model(Point screen) const; | |
15 Vector model_to_screen(Vector model) const; | |
16 Vector screen_to_model(Vector screen) const; | |
11 | 17 Rectangle model_to_screen(Rectangle model) const; |
18 Rectangle screen_to_model(Rectangle model) const; | |
10 | 19 double model_to_screen(double model) const; |
20 double screen_to_model(double screen) const; | |
0 | 21 } |
22 | |
10 | 23 interface EventHandler { |
24 bool handle_button_press(Viewport viewport, in ButtonEvent event); | |
25 bool handle_button_release(Viewport viewport, in ButtonEvent event); | |
26 bool handle_motion(Viewport viewport, in MotionEvent event); | |
27 bool handle_scroll(Viewport viewport, in ScrollEvent event); | |
28 //bool handle_expose(Viewport viewport, ExposeEvent event); | |
29 //bool handle_enter(Viewport viewport, CrossingEvent event); | |
30 //bool handle_leave(Viewport viewport, CrossingEvent event); | |
31 //bool handle_focus_in(Viewport viewport, FocusEvent event); | |
32 //bool handle_focus_out(Viewport viewport, FocusEvent event); | |
33 bool handle_key_press(Viewport viewport, in KeyEvent event); | |
34 bool handle_key_release(Viewport viewport, in KeyEvent event); | |
0 | 35 } |
10 | 36 |
37 abstract class Layer { | |
12 | 38 this(in string name) { |
39 mName = name; | |
40 } | |
41 | |
42 string name() const { return mName; } | |
43 | |
11 | 44 Rectangle bounds() const; |
45 //void zoom_changed | |
12 | 46 void draw(const Viewport viewport, in Rectangle damage, Context model_cr, Context screen_cr) const; |
47 | |
48 private { | |
49 invariant string mName; | |
50 } | |
10 | 51 } |