1*d36ae78cSStephan Aßmus // main.cpp
2*d36ae78cSStephan Aßmus
3*d36ae78cSStephan Aßmus #include <stdio.h>
4*d36ae78cSStephan Aßmus
5*d36ae78cSStephan Aßmus #include <Application.h>
6*d36ae78cSStephan Aßmus #include <View.h>
7*d36ae78cSStephan Aßmus #include <Window.h>
8*d36ae78cSStephan Aßmus
9*d36ae78cSStephan Aßmus class TestView : public BView {
10*d36ae78cSStephan Aßmus
11*d36ae78cSStephan Aßmus public:
12*d36ae78cSStephan Aßmus TestView(BRect frame, const char* name,
13*d36ae78cSStephan Aßmus uint32 resizeFlags, uint32 flags);
14*d36ae78cSStephan Aßmus
15*d36ae78cSStephan Aßmus virtual void Draw(BRect updateRect);
16*d36ae78cSStephan Aßmus virtual void MouseDown(BPoint where);
17*d36ae78cSStephan Aßmus
18*d36ae78cSStephan Aßmus private:
19*d36ae78cSStephan Aßmus BList fMouseSamples;
20*d36ae78cSStephan Aßmus };
21*d36ae78cSStephan Aßmus
22*d36ae78cSStephan Aßmus // constructor
TestView(BRect frame,const char * name,uint32 resizeFlags,uint32 flags)23*d36ae78cSStephan Aßmus TestView::TestView(BRect frame, const char* name,
24*d36ae78cSStephan Aßmus uint32 resizeFlags, uint32 flags)
25*d36ae78cSStephan Aßmus : BView(frame, name, resizeFlags, flags),
26*d36ae78cSStephan Aßmus fMouseSamples(128)
27*d36ae78cSStephan Aßmus {
28*d36ae78cSStephan Aßmus }
29*d36ae78cSStephan Aßmus
30*d36ae78cSStephan Aßmus // Draw
31*d36ae78cSStephan Aßmus void
Draw(BRect updateRect)32*d36ae78cSStephan Aßmus TestView::Draw(BRect updateRect)
33*d36ae78cSStephan Aßmus {
34*d36ae78cSStephan Aßmus int32 count = fMouseSamples.CountItems();
35*d36ae78cSStephan Aßmus if (count > 0) {
36*d36ae78cSStephan Aßmus BPoint* p = (BPoint*)fMouseSamples.ItemAtFast(0);
37*d36ae78cSStephan Aßmus MovePenTo(*p);
38*d36ae78cSStephan Aßmus }
39*d36ae78cSStephan Aßmus
40*d36ae78cSStephan Aßmus for (int32 i = 0; i < count; i++) {
41*d36ae78cSStephan Aßmus BPoint* p = (BPoint*)fMouseSamples.ItemAtFast(i);
42*d36ae78cSStephan Aßmus StrokeLine(*p);
43*d36ae78cSStephan Aßmus }
44*d36ae78cSStephan Aßmus }
45*d36ae78cSStephan Aßmus
46*d36ae78cSStephan Aßmus // MouseDown
47*d36ae78cSStephan Aßmus void
MouseDown(BPoint where)48*d36ae78cSStephan Aßmus TestView::MouseDown(BPoint where)
49*d36ae78cSStephan Aßmus {
50*d36ae78cSStephan Aßmus // clear previous stroke
51*d36ae78cSStephan Aßmus int32 count = fMouseSamples.CountItems();
52*d36ae78cSStephan Aßmus for (int32 i = 0; i < count; i++)
53*d36ae78cSStephan Aßmus delete (BPoint*)fMouseSamples.ItemAtFast(i);
54*d36ae78cSStephan Aßmus fMouseSamples.MakeEmpty();
55*d36ae78cSStephan Aßmus FillRect(Bounds(), B_SOLID_LOW);
56*d36ae78cSStephan Aßmus
57*d36ae78cSStephan Aßmus // sample new stroke
58*d36ae78cSStephan Aßmus uint32 buttons;
59*d36ae78cSStephan Aßmus GetMouse(&where, &buttons);
60*d36ae78cSStephan Aßmus MovePenTo(where);
61*d36ae78cSStephan Aßmus while (buttons) {
62*d36ae78cSStephan Aßmus
63*d36ae78cSStephan Aßmus StrokeLine(where);
64*d36ae78cSStephan Aßmus fMouseSamples.AddItem(new BPoint(where));
65*d36ae78cSStephan Aßmus
66*d36ae78cSStephan Aßmus snooze(20000);
67*d36ae78cSStephan Aßmus GetMouse(&where, &buttons);
68*d36ae78cSStephan Aßmus }
69*d36ae78cSStephan Aßmus }
70*d36ae78cSStephan Aßmus
71*d36ae78cSStephan Aßmus
72*d36ae78cSStephan Aßmus // main
73*d36ae78cSStephan Aßmus int
main(int argc,char ** argv)74*d36ae78cSStephan Aßmus main(int argc, char** argv)
75*d36ae78cSStephan Aßmus {
76*d36ae78cSStephan Aßmus BApplication app("application/x.vnd-Haiku.BitmapBounds");
77*d36ae78cSStephan Aßmus
78*d36ae78cSStephan Aßmus BRect frame(50.0, 50.0, 300.0, 250.0);
79*d36ae78cSStephan Aßmus BWindow* window = new BWindow(frame, "Bitmap Bounds", B_TITLED_WINDOW,
80*d36ae78cSStephan Aßmus B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE);
81*d36ae78cSStephan Aßmus
82*d36ae78cSStephan Aßmus BView* view = new TestView(window->Bounds(), "test",
83*d36ae78cSStephan Aßmus B_FOLLOW_ALL, B_WILL_DRAW);
84*d36ae78cSStephan Aßmus window->AddChild(view);
85*d36ae78cSStephan Aßmus
86*d36ae78cSStephan Aßmus window->Show();
87*d36ae78cSStephan Aßmus
88*d36ae78cSStephan Aßmus app.Run();
89*d36ae78cSStephan Aßmus
90*d36ae78cSStephan Aßmus return 0;
91*d36ae78cSStephan Aßmus }
92