1#include <Application.h>
2#include <String.h>
3#include <View.h>
4#include <Window.h>
5
6class View : public BView {
7public:
8	View(BRect bounds)
9		: BView(bounds, "test", B_FOLLOW_ALL, B_WILL_DRAW)
10	{
11	}
12
13	virtual void Draw(BRect updateRect)
14	{
15		BFont font;
16		GetFont(&font);
17
18		const BRect bounds = Bounds();
19		const BString text = "The quick brown fox jumps over the lazy dog!";
20
21		float size = 2.0f;
22		float y = 30.0f;
23
24		while (size < 48 && y - size < bounds.bottom) {
25			font.SetSize(size);
26			SetFont(&font);
27
28			BString textAndSize = text;
29			textAndSize << "  (" << size << ")";
30
31			DrawString(textAndSize, BPoint(30.0f, y));
32
33			y = (int)(y + size * 1.2f);
34			size *= 1.08;
35		}
36	}
37};
38
39class Window : public BWindow {
40public:
41	Window()
42		: BWindow(BRect(30, 30, 600, 500), "Text rendering test",
43			B_DOCUMENT_WINDOW,
44			B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE)
45	{
46		AddChild(new View(Bounds()));
47	}
48
49};
50
51class Application : public BApplication {
52public:
53	Application()
54		:BApplication("application/x-vnd.haiku.text-rendering-test")
55	{
56	}
57
58	virtual void ReadyToRun()
59	{
60		(new Window())->Show();
61	}
62};
63
64
65int
66main()
67{
68	Application app;
69	app.Run();
70	return 0;
71}
72