xref: /haiku/headers/libs/alm/Row.h (revision 25a7b01d15612846f332751841da3579db313082)
1 /*
2  * Copyright 2006 - 2010, Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef	ROW_H
6 #define	ROW_H
7 
8 
9 #include <ObjectList.h>
10 #include <Referenceable.h>
11 
12 
13 namespace LinearProgramming {
14 	class Constraint;
15 	class LinearSpec;
16 };
17 
18 
19 namespace BPrivate {
20 	class SharedSolver;
21 };
22 
23 
24 namespace BALM {
25 
26 
27 class Area;
28 class BALMLayout;
29 class RowColumnManager;
30 class XTab;
31 class YTab;
32 
33 
34 /**
35  * Represents a row defined by two y-tabs.
36  */
37 class Row {
38 public:
39 								~Row();
40 
41 			YTab*				Top() const;
42 			YTab*				Bottom() const;
43 
44 private:
45 	friend class BALMLayout;
46 	friend class BALM::RowColumnManager;
47 	friend class BPrivate::SharedSolver;
48 
49 								Row(LinearProgramming::LinearSpec* ls,
50 										YTab* top, YTab* bottom);
51 
52 			BReference<YTab>	fTop;
53 			BReference<YTab>	fBottom;
54 
55 			LinearProgramming::LinearSpec* fLS;
56 			LinearProgramming::Constraint* fPrefSizeConstraint;
57 				// managed by RowColumnManager
58 
59 			BObjectList<Area>	fAreas;
60 };
61 
62 }	// namespace BALM
63 
64 using BALM::Row;
65 
66 #endif	// ROW_H
67