3 #include "canvas/canvas.h"
4 #include "canvas/rectangle.h"
5 #include "canvas/pixbuf.h"
8 using namespace ArdourCanvas;
10 Rectangle* rectangle = 0;
15 static bool dragging = false;
18 if (ev->type == GDK_BUTTON_PRESS) {
19 GdkEventButton* b = reinterpret_cast<GdkEventButton*> (ev);
22 offset = Duple (b->x, b->y) - rectangle->position ();
24 cout << "Dragging offset=" << offset << "\n";
26 } else if (ev->type == GDK_BUTTON_RELEASE) {
27 GdkEventButton* b = reinterpret_cast<GdkEventButton*> (ev);
32 cout << "Drag complete.\n";
34 } else if (ev->type == GDK_MOTION_NOTIFY) {
35 GdkEventMotion* m = reinterpret_cast<GdkEventMotion*> (ev);
37 rectangle->set_position (Duple (m->x, m->y) - offset);
38 cout << "Move to " << (Duple (m->x, m->y) - offset) << "\n";
45 int main (int argc, char* argv[])
47 Gtk::Main kit (argc, argv);
50 window.set_title ("Hello world");
51 window.set_size_request (768, 768);
53 Gtk::Adjustment hadj (0, 0, 1e3);
54 Gtk::Adjustment vadj (0, 0, 1e3);
55 GtkCanvasViewport viewport (hadj, vadj);
56 GtkCanvas* canvas = viewport.canvas ();
58 rectangle = new Rectangle (canvas->root(), Rect (64, 64, 128, 128));
59 rectangle->set_outline_color (0xff0000aa);
60 rectangle->Event.connect (sigc::ptr_fun (event));
62 window.add (viewport);
66 Gtk::Main::run (window);