xref: /haiku/src/kits/interface/AbstractLayoutItem.cpp (revision f5821a1aee77d3b9a979b42c68a79e50b5ebaefe)
1 /*
2  * Copyright 2010, Haiku, Inc.
3  * Copyright 2006, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
4  * All rights reserved. Distributed under the terms of the MIT License.
5  */
6 
7 
8 #include <AbstractLayoutItem.h>
9 
10 #include <LayoutUtils.h>
11 #include <Message.h>
12 
13 
14 namespace {
15 	const char* const kSizesField = "BAbstractLayoutItem:sizes";
16 		// kSizesField == {min, max, preferred}
17 	const char* const kAlignmentField = "BAbstractLayoutItem:alignment";
18 }
19 
20 
21 BAbstractLayoutItem::BAbstractLayoutItem()
22 	:
23 	fMinSize(),
24 	fMaxSize(),
25 	fPreferredSize(),
26 	fAlignment()
27 {
28 }
29 
30 
31 BAbstractLayoutItem::BAbstractLayoutItem(BMessage* from)
32 	:
33 	BLayoutItem(from),
34 	fMinSize(),
35 	fMaxSize(),
36 	fPreferredSize(),
37 	fAlignment()
38 {
39 	from->FindSize(kSizesField, 0, &fMinSize);
40 	from->FindSize(kSizesField, 1, &fMaxSize);
41 	from->FindSize(kSizesField, 2, &fPreferredSize);
42 	from->FindAlignment(kAlignmentField, &fAlignment);
43 }
44 
45 
46 BAbstractLayoutItem::~BAbstractLayoutItem()
47 {
48 }
49 
50 
51 BSize
52 BAbstractLayoutItem::MinSize()
53 {
54 	return BLayoutUtils::ComposeSize(fMinSize, BaseMinSize());
55 }
56 
57 
58 BSize
59 BAbstractLayoutItem::MaxSize()
60 {
61 	return BLayoutUtils::ComposeSize(fMaxSize, BaseMaxSize());
62 }
63 
64 
65 BSize
66 BAbstractLayoutItem::PreferredSize()
67 {
68 	return BLayoutUtils::ComposeSize(fMaxSize, BasePreferredSize());
69 }
70 
71 
72 BAlignment
73 BAbstractLayoutItem::Alignment()
74 {
75 	return BLayoutUtils::ComposeAlignment(fAlignment, BaseAlignment());
76 }
77 
78 
79 void
80 BAbstractLayoutItem::SetExplicitMinSize(BSize size)
81 {
82 	fMinSize = size;
83 }
84 
85 
86 void
87 BAbstractLayoutItem::SetExplicitMaxSize(BSize size)
88 {
89 	fMaxSize = size;
90 }
91 
92 
93 void
94 BAbstractLayoutItem::SetExplicitPreferredSize(BSize size)
95 {
96 	fPreferredSize = size;
97 }
98 
99 
100 void
101 BAbstractLayoutItem::SetExplicitAlignment(BAlignment alignment)
102 {
103 	fAlignment = alignment;
104 }
105 
106 
107 BSize
108 BAbstractLayoutItem::BaseMinSize()
109 {
110 	return BSize(0, 0);
111 }
112 
113 
114 BSize
115 BAbstractLayoutItem::BaseMaxSize()
116 {
117 	return BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED);
118 }
119 
120 
121 BSize
122 BAbstractLayoutItem::BasePreferredSize()
123 {
124 	return BSize(0, 0);
125 }
126 
127 
128 BAlignment
129 BAbstractLayoutItem::BaseAlignment()
130 {
131 	return BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER);
132 }
133 
134 
135 status_t
136 BAbstractLayoutItem::Archive(BMessage* into, bool deep) const
137 {
138 	BArchiver archiver(into);
139 	status_t err = BLayoutItem::Archive(into, deep);
140 
141 	if (err == B_OK)
142 		err = into->AddSize(kSizesField, fMinSize);
143 
144 	if (err == B_OK)
145 		err = into->AddSize(kSizesField, fMaxSize);
146 
147 	if (err == B_OK)
148 		err = into->AddSize(kSizesField, fPreferredSize);
149 
150 	if (err == B_OK)
151 		err = into->AddAlignment(kAlignmentField, fAlignment);
152 
153 	return archiver.Finish(err);
154 }
155 
156 
157 status_t
158 BAbstractLayoutItem::AllUnarchived(const BMessage* archive)
159 {
160 	return BLayoutItem::AllUnarchived(archive);
161 }
162 
163 
164 status_t
165 BAbstractLayoutItem::AllArchived(BMessage* archive) const
166 {
167 	return BLayoutItem::AllArchived(archive);
168 }
169 
170 
171 void
172 BAbstractLayoutItem::LayoutInvalidated(bool children)
173 {
174 	BLayoutItem::LayoutInvalidated(children);
175 }
176 
177 
178 void
179 BAbstractLayoutItem::AttachedToLayout()
180 {
181 	BLayoutItem::AttachedToLayout();
182 }
183 
184 
185 void
186 BAbstractLayoutItem::DetachedFromLayout(BLayout* layout)
187 {
188 	BLayoutItem::DetachedFromLayout(layout);
189 }
190 
191 
192 void
193 BAbstractLayoutItem::AncestorVisibilityChanged(bool shown)
194 {
195 	BLayoutItem::AncestorVisibilityChanged(shown);
196 }
197 
198 
199 status_t
200 BAbstractLayoutItem::Perform(perform_code d, void* arg)
201 {
202 	return BLayoutItem::Perform(d, arg);
203 }
204 
205 
206 void BAbstractLayoutItem::_ReservedAbstractLayoutItem1() {}
207 void BAbstractLayoutItem::_ReservedAbstractLayoutItem2() {}
208 void BAbstractLayoutItem::_ReservedAbstractLayoutItem3() {}
209 void BAbstractLayoutItem::_ReservedAbstractLayoutItem4() {}
210 void BAbstractLayoutItem::_ReservedAbstractLayoutItem5() {}
211 void BAbstractLayoutItem::_ReservedAbstractLayoutItem6() {}
212 void BAbstractLayoutItem::_ReservedAbstractLayoutItem7() {}
213 void BAbstractLayoutItem::_ReservedAbstractLayoutItem8() {}
214 void BAbstractLayoutItem::_ReservedAbstractLayoutItem9() {}
215 void BAbstractLayoutItem::_ReservedAbstractLayoutItem10() {}
216 
217