xref: /haiku/src/tests/servers/app/pulsed_drawing/main.cpp (revision 220d04022750f40f8bac8f01fa551211e28d04f2)
1 #include <stdio.h>
2 #include <stdlib.h>
3 
4 #include <Application.h>
5 #include <View.h>
6 #include <Window.h>
7 
8 
9 class PulsedView : public BView {
10 public:
11 	PulsedView(BRect frame)
12 		:
13 		BView(frame, "pulsed view", B_FOLLOW_ALL, B_WILL_DRAW)
14 	{
15 	}
16 
17 	virtual void Draw(BRect updateRect)
18 	{
19 		SetHighColor(rand() % 255, rand() % 255, rand() % 255, 255);
20 		FillRect(updateRect);
21 	}
22 };
23 
24 
25 class PulsedApplication : public BApplication {
26 public:
27 	PulsedApplication()
28 		:
29 		BApplication("application/x-vnd.haiku.pulsed_drawing")
30 	{
31 		BRect frame(100, 100, 400, 300);
32 		BWindow* window = new BWindow(frame, "Pulsed Drawing",
33 			B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, B_QUIT_ON_WINDOW_CLOSE);
34 
35 		fView = new PulsedView(frame.OffsetToCopy(0, 0));
36 		window->AddChild(fView);
37 		window->Show();
38 
39 		SetPulseRate(1 * 1000 * 1000);
40 	}
41 
42 	virtual void Pulse()
43 	{
44 		if (!fView->LockLooper())
45 			return;
46 
47 		fView->Invalidate();
48 		fView->UnlockLooper();
49 	}
50 
51 private:
52 	PulsedView* fView;
53 };
54 
55 
56 int
57 main(int argc, char* argv[])
58 {
59 	PulsedApplication app;
60 	app.Run();
61 	return 0;
62 }
63