2 * Copyright 2006-2010, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
5 #ifndef _TWO_DIMENSIONAL_LAYOUT_H
6 #define _TWO_DIMENSIONAL_LAYOUT_H
9 #include <AbstractLayout.h>
14 class BTwoDimensionalLayout
: public BAbstractLayout
{
16 BTwoDimensionalLayout();
17 BTwoDimensionalLayout(BMessage
* from
);
18 virtual ~BTwoDimensionalLayout();
20 void SetInsets(float left
, float top
, float right
,
22 void SetInsets(float horizontal
, float vertical
);
23 void SetInsets(float insets
);
24 void GetInsets(float* left
, float* top
, float* right
,
27 void AlignLayoutWith(BTwoDimensionalLayout
* other
,
28 orientation orientation
);
30 virtual BSize
BaseMinSize();
31 virtual BSize
BaseMaxSize();
32 virtual BSize
BasePreferredSize();
33 virtual BAlignment
BaseAlignment();
35 virtual bool HasHeightForWidth();
36 virtual void GetHeightForWidth(float width
, float* min
,
37 float* max
, float* preferred
);
39 virtual void SetFrame(BRect frame
);
41 virtual status_t
Archive(BMessage
* into
, bool deep
= true) const;
43 virtual status_t
Perform(perform_code d
, void* arg
);
46 struct ColumnRowConstraints
{
59 virtual status_t
AllArchived(BMessage
* into
) const;
60 virtual status_t
AllUnarchived(const BMessage
* from
);
62 virtual status_t
ItemArchived(BMessage
* into
, BLayoutItem
* item
,
64 virtual status_t
ItemUnarchived(const BMessage
* from
,
65 BLayoutItem
* item
, int32 index
);
66 virtual void LayoutInvalidated(bool children
= false);
68 virtual void DoLayout();
70 BSize
AddInsets(BSize size
);
71 void AddInsets(float* minHeight
, float* maxHeight
,
72 float* preferredHeight
);
73 BSize
SubtractInsets(BSize size
);
75 virtual void PrepareItems(orientation orientation
);
76 virtual bool HasMultiColumnItems();
77 virtual bool HasMultiRowItems();
79 virtual int32
InternalCountColumns() = 0;
80 virtual int32
InternalCountRows() = 0;
81 virtual void GetColumnRowConstraints(
82 orientation orientation
,
84 ColumnRowConstraints
* constraints
) = 0;
85 virtual void GetItemDimensions(BLayoutItem
* item
,
86 Dimensions
* dimensions
) = 0;
89 class CompoundLayouter
;
91 class VerticalCompoundLayouter
;
93 friend class LocalLayouter
;
95 void _ValidateMinMax();
108 virtual void _ReservedTwoDimensionalLayout1();
109 virtual void _ReservedTwoDimensionalLayout2();
110 virtual void _ReservedTwoDimensionalLayout3();
111 virtual void _ReservedTwoDimensionalLayout4();
112 virtual void _ReservedTwoDimensionalLayout5();
113 virtual void _ReservedTwoDimensionalLayout6();
114 virtual void _ReservedTwoDimensionalLayout7();
115 virtual void _ReservedTwoDimensionalLayout8();
116 virtual void _ReservedTwoDimensionalLayout9();
117 virtual void _ReservedTwoDimensionalLayout10();
120 BTwoDimensionalLayout(
121 const BTwoDimensionalLayout
&);
122 void operator =(const BTwoDimensionalLayout
&);
124 LocalLayouter
* fLocalLayouter
;
129 #endif // _TWO_DIMENSIONAL_LAYOUT_H