xref: /haiku/src/tests/servers/app/font_spacing/main.cpp (revision cb7de03cca0bf9633f203be9a1bee89b50aa4813)
1*cb7de03cSStephan Aßmus /*
2*cb7de03cSStephan Aßmus  * Copyright 2014 Stephan Aßmus <superstippi@gmx.de>
3*cb7de03cSStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT license.
4*cb7de03cSStephan Aßmus  */
5*cb7de03cSStephan Aßmus 
6*cb7de03cSStephan Aßmus 
7*cb7de03cSStephan Aßmus #include <algorithm>
8*cb7de03cSStephan Aßmus #include <stdio.h>
9*cb7de03cSStephan Aßmus #include <string.h>
10*cb7de03cSStephan Aßmus 
11*cb7de03cSStephan Aßmus #include <Application.h>
12*cb7de03cSStephan Aßmus #include <Bitmap.h>
13*cb7de03cSStephan Aßmus #include <GradientLinear.h>
14*cb7de03cSStephan Aßmus #include <Message.h>
15*cb7de03cSStephan Aßmus #include <Picture.h>
16*cb7de03cSStephan Aßmus #include <LayoutBuilder.h>
17*cb7de03cSStephan Aßmus #include <List.h>
18*cb7de03cSStephan Aßmus #include <PopUpMenu.h>
19*cb7de03cSStephan Aßmus #include <Resources.h>
20*cb7de03cSStephan Aßmus #include <Roster.h>
21*cb7de03cSStephan Aßmus #include <ScrollView.h>
22*cb7de03cSStephan Aßmus #include <String.h>
23*cb7de03cSStephan Aßmus #include <StringView.h>
24*cb7de03cSStephan Aßmus #include <View.h>
25*cb7de03cSStephan Aßmus #include <Window.h>
26*cb7de03cSStephan Aßmus 
27*cb7de03cSStephan Aßmus 
28*cb7de03cSStephan Aßmus static const char* kAppSignature = "application/x.vnd-Haiku.FontSpacing";
29*cb7de03cSStephan Aßmus 
30*cb7de03cSStephan Aßmus 
31*cb7de03cSStephan Aßmus class TestView : public BView {
32*cb7de03cSStephan Aßmus public:
33*cb7de03cSStephan Aßmus 								TestView();
34*cb7de03cSStephan Aßmus 	virtual						~TestView();
35*cb7de03cSStephan Aßmus 
36*cb7de03cSStephan Aßmus 	virtual	void				Draw(BRect updateRect);
37*cb7de03cSStephan Aßmus };
38*cb7de03cSStephan Aßmus 
39*cb7de03cSStephan Aßmus 
TestView()40*cb7de03cSStephan Aßmus TestView::TestView()
41*cb7de03cSStephan Aßmus 	:
42*cb7de03cSStephan Aßmus 	BView(NULL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE)
43*cb7de03cSStephan Aßmus {
44*cb7de03cSStephan Aßmus }
45*cb7de03cSStephan Aßmus 
46*cb7de03cSStephan Aßmus 
~TestView()47*cb7de03cSStephan Aßmus TestView::~TestView()
48*cb7de03cSStephan Aßmus {
49*cb7de03cSStephan Aßmus }
50*cb7de03cSStephan Aßmus 
51*cb7de03cSStephan Aßmus 
52*cb7de03cSStephan Aßmus void
Draw(BRect updateRect)53*cb7de03cSStephan Aßmus TestView::Draw(BRect updateRect)
54*cb7de03cSStephan Aßmus {
55*cb7de03cSStephan Aßmus 	float scale = Bounds().Width() / 400.0f;
56*cb7de03cSStephan Aßmus 
57*cb7de03cSStephan Aßmus 	if (scale < 0.25f)
58*cb7de03cSStephan Aßmus 		scale = 0.25f;
59*cb7de03cSStephan Aßmus 	else if (scale > 3.0f)
60*cb7de03cSStephan Aßmus 		scale = 3.0f;
61*cb7de03cSStephan Aßmus 
62*cb7de03cSStephan Aßmus 	SetScale(scale);
63*cb7de03cSStephan Aßmus 
64*cb7de03cSStephan Aßmus 	const char* string = "Testing the various BFont spacing modes.";
65*cb7de03cSStephan Aßmus 
66*cb7de03cSStephan Aßmus 	BFont font;
67*cb7de03cSStephan Aßmus 	SetFont(&font);
68*cb7de03cSStephan Aßmus 	DrawString(string, BPoint(30.0f, 25.0f));
69*cb7de03cSStephan Aßmus 
70*cb7de03cSStephan Aßmus 	font.SetSpacing(B_STRING_SPACING);
71*cb7de03cSStephan Aßmus 	SetFont(&font);
72*cb7de03cSStephan Aßmus 	DrawString(string, BPoint(30.0f, 45.0f));
73*cb7de03cSStephan Aßmus 
74*cb7de03cSStephan Aßmus 	font.SetSpacing(B_CHAR_SPACING);
75*cb7de03cSStephan Aßmus 	SetFont(&font);
76*cb7de03cSStephan Aßmus 	DrawString(string, BPoint(30.0f, 65.0f));
77*cb7de03cSStephan Aßmus }
78*cb7de03cSStephan Aßmus 
79*cb7de03cSStephan Aßmus 
80*cb7de03cSStephan Aßmus // #pragma mark -
81*cb7de03cSStephan Aßmus 
82*cb7de03cSStephan Aßmus 
83*cb7de03cSStephan Aßmus int
main(int argc,char ** argv)84*cb7de03cSStephan Aßmus main(int argc, char** argv)
85*cb7de03cSStephan Aßmus {
86*cb7de03cSStephan Aßmus 	BApplication app(kAppSignature);
87*cb7de03cSStephan Aßmus 
88*cb7de03cSStephan Aßmus 	BWindow* window = new BWindow(BRect(50, 50, 450, 450), "Font spacing test",
89*cb7de03cSStephan Aßmus 		B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_QUIT_ON_WINDOW_CLOSE
90*cb7de03cSStephan Aßmus 			| B_AUTO_UPDATE_SIZE_LIMITS);
91*cb7de03cSStephan Aßmus 
92*cb7de03cSStephan Aßmus 	BLayoutBuilder::Group<>(window)
93*cb7de03cSStephan Aßmus 		.Add(new TestView())
94*cb7de03cSStephan Aßmus 	;
95*cb7de03cSStephan Aßmus 
96*cb7de03cSStephan Aßmus 	window->Show();
97*cb7de03cSStephan Aßmus 
98*cb7de03cSStephan Aßmus 	app.Run();
99*cb7de03cSStephan Aßmus 	return 0;
100*cb7de03cSStephan Aßmus }
101