xref: /haiku/src/apps/haikudepot/textview/ParagraphStyle.cpp (revision d7f7bf2d890f652e20b8cf34e9b4c6ae1d3e20eb)
1*d7f7bf2dSAxel Dörfler /*
2*d7f7bf2dSAxel Dörfler  * Copyright 2013, Stephan Aßmus <superstippi@gmx.de>.
3*d7f7bf2dSAxel Dörfler  * All rights reserved. Distributed under the terms of the MIT License.
4*d7f7bf2dSAxel Dörfler  */
5*d7f7bf2dSAxel Dörfler 
6*d7f7bf2dSAxel Dörfler #include "ParagraphStyle.h"
7*d7f7bf2dSAxel Dörfler 
8*d7f7bf2dSAxel Dörfler 
9*d7f7bf2dSAxel Dörfler ParagraphStyle::ParagraphStyle()
10*d7f7bf2dSAxel Dörfler 	:
11*d7f7bf2dSAxel Dörfler 	fStyleData(new ParagraphStyleData(), true)
12*d7f7bf2dSAxel Dörfler {
13*d7f7bf2dSAxel Dörfler }
14*d7f7bf2dSAxel Dörfler 
15*d7f7bf2dSAxel Dörfler 
16*d7f7bf2dSAxel Dörfler ParagraphStyle::ParagraphStyle(const ParagraphStyle& other)
17*d7f7bf2dSAxel Dörfler 	:
18*d7f7bf2dSAxel Dörfler 	fStyleData(other.fStyleData)
19*d7f7bf2dSAxel Dörfler {
20*d7f7bf2dSAxel Dörfler }
21*d7f7bf2dSAxel Dörfler 
22*d7f7bf2dSAxel Dörfler 
23*d7f7bf2dSAxel Dörfler ParagraphStyle&
24*d7f7bf2dSAxel Dörfler ParagraphStyle::operator=(const ParagraphStyle& other)
25*d7f7bf2dSAxel Dörfler {
26*d7f7bf2dSAxel Dörfler 	if (this == &other)
27*d7f7bf2dSAxel Dörfler 		return *this;
28*d7f7bf2dSAxel Dörfler 
29*d7f7bf2dSAxel Dörfler 	fStyleData = other.fStyleData;
30*d7f7bf2dSAxel Dörfler 	return *this;
31*d7f7bf2dSAxel Dörfler }
32*d7f7bf2dSAxel Dörfler 
33*d7f7bf2dSAxel Dörfler 
34*d7f7bf2dSAxel Dörfler bool
35*d7f7bf2dSAxel Dörfler ParagraphStyle::operator==(const ParagraphStyle& other) const
36*d7f7bf2dSAxel Dörfler {
37*d7f7bf2dSAxel Dörfler 	if (this == &other)
38*d7f7bf2dSAxel Dörfler 		return true;
39*d7f7bf2dSAxel Dörfler 
40*d7f7bf2dSAxel Dörfler 	if (fStyleData == other.fStyleData)
41*d7f7bf2dSAxel Dörfler 		return true;
42*d7f7bf2dSAxel Dörfler 
43*d7f7bf2dSAxel Dörfler 	if (fStyleData.Get() != NULL && other.fStyleData.Get() != NULL)
44*d7f7bf2dSAxel Dörfler 		return *fStyleData.Get() == *other.fStyleData.Get();
45*d7f7bf2dSAxel Dörfler 
46*d7f7bf2dSAxel Dörfler 	return false;
47*d7f7bf2dSAxel Dörfler }
48*d7f7bf2dSAxel Dörfler 
49*d7f7bf2dSAxel Dörfler 
50*d7f7bf2dSAxel Dörfler bool
51*d7f7bf2dSAxel Dörfler ParagraphStyle::operator!=(const ParagraphStyle& other) const
52*d7f7bf2dSAxel Dörfler {
53*d7f7bf2dSAxel Dörfler 	return !(*this == other);
54*d7f7bf2dSAxel Dörfler }
55*d7f7bf2dSAxel Dörfler 
56*d7f7bf2dSAxel Dörfler 
57*d7f7bf2dSAxel Dörfler bool
58*d7f7bf2dSAxel Dörfler ParagraphStyle::SetAlignment(::Alignment alignment)
59*d7f7bf2dSAxel Dörfler {
60*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetAlignment(alignment);
61*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
62*d7f7bf2dSAxel Dörfler 		return data->Alignment() == alignment;
63*d7f7bf2dSAxel Dörfler 
64*d7f7bf2dSAxel Dörfler 	fStyleData = data;
65*d7f7bf2dSAxel Dörfler 	return true;
66*d7f7bf2dSAxel Dörfler }
67*d7f7bf2dSAxel Dörfler 
68*d7f7bf2dSAxel Dörfler 
69*d7f7bf2dSAxel Dörfler ::Alignment
70*d7f7bf2dSAxel Dörfler ParagraphStyle::Alignment() const
71*d7f7bf2dSAxel Dörfler {
72*d7f7bf2dSAxel Dörfler 	return fStyleData->Alignment();
73*d7f7bf2dSAxel Dörfler }
74*d7f7bf2dSAxel Dörfler 
75*d7f7bf2dSAxel Dörfler 
76*d7f7bf2dSAxel Dörfler bool
77*d7f7bf2dSAxel Dörfler ParagraphStyle::SetJustify(bool justify)
78*d7f7bf2dSAxel Dörfler {
79*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetJustify(justify);
80*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
81*d7f7bf2dSAxel Dörfler 		return data->Justify() == justify;
82*d7f7bf2dSAxel Dörfler 
83*d7f7bf2dSAxel Dörfler 	fStyleData = data;
84*d7f7bf2dSAxel Dörfler 	return true;
85*d7f7bf2dSAxel Dörfler }
86*d7f7bf2dSAxel Dörfler 
87*d7f7bf2dSAxel Dörfler 
88*d7f7bf2dSAxel Dörfler bool
89*d7f7bf2dSAxel Dörfler ParagraphStyle::Justify() const
90*d7f7bf2dSAxel Dörfler {
91*d7f7bf2dSAxel Dörfler 	return fStyleData->Justify();
92*d7f7bf2dSAxel Dörfler }
93*d7f7bf2dSAxel Dörfler 
94*d7f7bf2dSAxel Dörfler 
95*d7f7bf2dSAxel Dörfler bool
96*d7f7bf2dSAxel Dörfler ParagraphStyle::SetFirstLineInset(float inset)
97*d7f7bf2dSAxel Dörfler {
98*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetFirstLineInset(inset);
99*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
100*d7f7bf2dSAxel Dörfler 		return data->FirstLineInset() == inset;
101*d7f7bf2dSAxel Dörfler 
102*d7f7bf2dSAxel Dörfler 	fStyleData = data;
103*d7f7bf2dSAxel Dörfler 	return true;
104*d7f7bf2dSAxel Dörfler }
105*d7f7bf2dSAxel Dörfler 
106*d7f7bf2dSAxel Dörfler 
107*d7f7bf2dSAxel Dörfler float
108*d7f7bf2dSAxel Dörfler ParagraphStyle::FirstLineInset() const
109*d7f7bf2dSAxel Dörfler {
110*d7f7bf2dSAxel Dörfler 	return fStyleData->FirstLineInset();
111*d7f7bf2dSAxel Dörfler }
112*d7f7bf2dSAxel Dörfler 
113*d7f7bf2dSAxel Dörfler 
114*d7f7bf2dSAxel Dörfler bool
115*d7f7bf2dSAxel Dörfler ParagraphStyle::SetLineInset(float inset)
116*d7f7bf2dSAxel Dörfler {
117*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetLineInset(inset);
118*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
119*d7f7bf2dSAxel Dörfler 		return data->LineInset() == inset;
120*d7f7bf2dSAxel Dörfler 
121*d7f7bf2dSAxel Dörfler 	fStyleData = data;
122*d7f7bf2dSAxel Dörfler 	return true;
123*d7f7bf2dSAxel Dörfler }
124*d7f7bf2dSAxel Dörfler 
125*d7f7bf2dSAxel Dörfler 
126*d7f7bf2dSAxel Dörfler float
127*d7f7bf2dSAxel Dörfler ParagraphStyle::LineInset() const
128*d7f7bf2dSAxel Dörfler {
129*d7f7bf2dSAxel Dörfler 	return fStyleData->LineInset();
130*d7f7bf2dSAxel Dörfler }
131*d7f7bf2dSAxel Dörfler 
132*d7f7bf2dSAxel Dörfler 
133*d7f7bf2dSAxel Dörfler bool
134*d7f7bf2dSAxel Dörfler ParagraphStyle::SetLineSpacing(float spacing)
135*d7f7bf2dSAxel Dörfler {
136*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetLineSpacing(spacing);
137*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
138*d7f7bf2dSAxel Dörfler 		return data->LineSpacing() == spacing;
139*d7f7bf2dSAxel Dörfler 
140*d7f7bf2dSAxel Dörfler 	fStyleData = data;
141*d7f7bf2dSAxel Dörfler 	return true;
142*d7f7bf2dSAxel Dörfler }
143*d7f7bf2dSAxel Dörfler 
144*d7f7bf2dSAxel Dörfler 
145*d7f7bf2dSAxel Dörfler float
146*d7f7bf2dSAxel Dörfler ParagraphStyle::LineSpacing() const
147*d7f7bf2dSAxel Dörfler {
148*d7f7bf2dSAxel Dörfler 	return fStyleData->LineSpacing();
149*d7f7bf2dSAxel Dörfler }
150*d7f7bf2dSAxel Dörfler 
151*d7f7bf2dSAxel Dörfler 
152*d7f7bf2dSAxel Dörfler bool
153*d7f7bf2dSAxel Dörfler ParagraphStyle::SetSpacingTop(float spacing)
154*d7f7bf2dSAxel Dörfler {
155*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetSpacingTop(spacing);
156*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
157*d7f7bf2dSAxel Dörfler 		return data->SpacingTop() == spacing;
158*d7f7bf2dSAxel Dörfler 
159*d7f7bf2dSAxel Dörfler 	fStyleData = data;
160*d7f7bf2dSAxel Dörfler 	return true;
161*d7f7bf2dSAxel Dörfler }
162*d7f7bf2dSAxel Dörfler 
163*d7f7bf2dSAxel Dörfler 
164*d7f7bf2dSAxel Dörfler float
165*d7f7bf2dSAxel Dörfler ParagraphStyle::SpacingTop() const
166*d7f7bf2dSAxel Dörfler {
167*d7f7bf2dSAxel Dörfler 	return fStyleData->SpacingTop();
168*d7f7bf2dSAxel Dörfler }
169*d7f7bf2dSAxel Dörfler 
170*d7f7bf2dSAxel Dörfler 
171*d7f7bf2dSAxel Dörfler bool
172*d7f7bf2dSAxel Dörfler ParagraphStyle::SetSpacingBottom(float spacing)
173*d7f7bf2dSAxel Dörfler {
174*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetSpacingBottom(spacing);
175*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
176*d7f7bf2dSAxel Dörfler 		return data->SpacingBottom() == spacing;
177*d7f7bf2dSAxel Dörfler 
178*d7f7bf2dSAxel Dörfler 	fStyleData = data;
179*d7f7bf2dSAxel Dörfler 	return true;
180*d7f7bf2dSAxel Dörfler }
181*d7f7bf2dSAxel Dörfler 
182*d7f7bf2dSAxel Dörfler 
183*d7f7bf2dSAxel Dörfler float
184*d7f7bf2dSAxel Dörfler ParagraphStyle::SpacingBottom() const
185*d7f7bf2dSAxel Dörfler {
186*d7f7bf2dSAxel Dörfler 	return fStyleData->SpacingBottom();
187*d7f7bf2dSAxel Dörfler }
188*d7f7bf2dSAxel Dörfler 
189*d7f7bf2dSAxel Dörfler 
190*d7f7bf2dSAxel Dörfler bool
191*d7f7bf2dSAxel Dörfler ParagraphStyle::SetBullet(const ::Bullet& bullet)
192*d7f7bf2dSAxel Dörfler {
193*d7f7bf2dSAxel Dörfler 	ParagraphStyleDataRef data = fStyleData->SetBullet(bullet);
194*d7f7bf2dSAxel Dörfler 	if (data == fStyleData)
195*d7f7bf2dSAxel Dörfler 		return data->Bullet() == bullet;
196*d7f7bf2dSAxel Dörfler 
197*d7f7bf2dSAxel Dörfler 	fStyleData = data;
198*d7f7bf2dSAxel Dörfler 	return true;
199*d7f7bf2dSAxel Dörfler }
200*d7f7bf2dSAxel Dörfler 
201*d7f7bf2dSAxel Dörfler 
202*d7f7bf2dSAxel Dörfler const ::Bullet&
203*d7f7bf2dSAxel Dörfler ParagraphStyle::Bullet() const
204*d7f7bf2dSAxel Dörfler {
205*d7f7bf2dSAxel Dörfler 	return fStyleData->Bullet();
206*d7f7bf2dSAxel Dörfler }
207*d7f7bf2dSAxel Dörfler 
208*d7f7bf2dSAxel Dörfler 
209