The return of threaded waveform rendering and related crashes.
[ardour.git] / libs / canvas / test / gtk_movement.cc
1 #include <iostream>
2 #include <gtkmm.h>
3 #include "canvas/canvas.h"
4 #include "canvas/rectangle.h"
5
6 using namespace std;
7 using namespace ArdourCanvas;
8
9 Rectangle* rectangle[2];
10
11 void
12 bigger_clicked ()
13 {
14         Rect r = rectangle[0]->get ();
15         r.x1 += 16;
16         r.y1 += 16;
17         rectangle[0]->set (r);
18 }
19
20 void
21 smaller_clicked ()
22 {
23         Rect r = rectangle[0]->get ();
24         r.x1 -= 16;
25         r.y1 -= 16;
26         rectangle[0]->set (r);
27 }
28
29 void
30 left_clicked ()
31 {
32         Duple p = rectangle[0]->position ();
33         p.x -= 16;
34         rectangle[0]->set_position (p);
35 }
36
37 void
38 right_clicked ()
39 {
40         Duple p = rectangle[0]->position ();
41         p.x += 16;
42         rectangle[0]->set_position (p);
43 }
44
45 int main (int argc, char* argv[])
46 {
47         Gtk::Main kit (argc, argv);
48
49         Gtk::Window window;
50         window.set_title ("Hello world");
51         window.set_size_request (512, 512);
52         GtkCanvas canvas;
53         canvas.set_size_request (2048, 2048);
54
55         rectangle[0] = new Rectangle (canvas.root(), Rect (64, 64, 128, 128));
56         rectangle[0]->set_outline_color (0xff0000aa);
57         rectangle[1] = new Rectangle (canvas.root(), Rect (64, 64, 128, 128));
58         rectangle[1]->set_position (Duple (256, 256));
59         rectangle[1]->set_outline_width (4);
60         rectangle[1]->set_outline_color (0x00ff00ff);
61         rectangle[1]->set_fill (true);
62         rectangle[1]->set_fill_color (0x00ffffff);
63         rectangle[1]->set_outline_what ((Rectangle::What) (Rectangle::LEFT | Rectangle::RIGHT));
64
65         Gtk::VBox overall_box;
66
67         Gtk::ScrolledWindow scroller;
68         scroller.add (canvas);
69         overall_box.pack_start (scroller);
70
71         Gtk::HBox button_box;
72
73         Gtk::Button bigger ("Bigger");
74         bigger.signal_clicked().connect (sigc::ptr_fun (&bigger_clicked));
75         button_box.pack_start (bigger);
76
77         Gtk::Button smaller ("Smaller");
78         smaller.signal_clicked().connect (sigc::ptr_fun (&smaller_clicked));
79         button_box.pack_start (smaller);
80
81         Gtk::Button left ("Left");
82         left.signal_clicked().connect (sigc::ptr_fun (&left_clicked));
83         button_box.pack_start (left);
84
85         Gtk::Button right ("Right");
86         right.signal_clicked().connect (sigc::ptr_fun (&right_clicked));
87         button_box.pack_start (right);
88
89         overall_box.pack_start (button_box, false, false);
90
91         window.add (overall_box);
92         canvas.show ();
93         window.show_all ();
94
95         Gtk::Main::run (window);
96         return 0;
97 }