]> git.saurik.com Git - wxWidgets.git/blame_incremental - interface/wx/layout.h
Ensure that the overall table border doesn't get overdrawn by cell borders with a...
[wxWidgets.git] / interface / wx / layout.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: layout.h
3// Purpose: interface of layout constraints classes
4// Author: wxWidgets team
5// Licence: wxWindows licence
6/////////////////////////////////////////////////////////////////////////////
7
8
9enum wxEdge
10{
11 wxLeft, wxTop, wxRight, wxBottom, wxWidth, wxHeight,
12 wxCentre, wxCenter = wxCentre, wxCentreX, wxCentreY
13};
14
15enum wxRelationship
16{
17 wxUnconstrained,
18 wxAsIs,
19 wxPercentOf,
20 wxAbove,
21 wxBelow,
22 wxLeftOf,
23 wxRightOf,
24 wxSameAs,
25 wxAbsolute
26};
27
28const int wxLAYOUT_DEFAULT_MARGIN = 0;
29
30// ----------------------------------------------------------------------------
31// wxIndividualLayoutConstraint: a constraint on window position
32// ----------------------------------------------------------------------------
33
34class wxIndividualLayoutConstraint : public wxObject
35{
36public:
37 wxIndividualLayoutConstraint();
38
39 // note that default copy ctor and assignment operators are ok
40
41 virtual ~wxIndividualLayoutConstraint();
42
43 void Set(wxRelationship rel,
44 wxWindow *otherW,
45 wxEdge otherE,
46 int val = 0,
47 int margin = wxLAYOUT_DEFAULT_MARGIN);
48
49 //
50 // Sibling relationships
51 //
52 void LeftOf(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
53 void RightOf(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
54 void Above(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
55 void Below(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
56
57 //
58 // 'Same edge' alignment
59 //
60 void SameAs(wxWindow *otherW, wxEdge edge, int margin = wxLAYOUT_DEFAULT_MARGIN);
61
62 // The edge is a percentage of the other window's edge
63 void PercentOf(wxWindow *otherW, wxEdge wh, int per);
64
65 //
66 // Edge has absolute value
67 //
68 void Absolute(int val);
69
70 //
71 // Dimension is unconstrained
72 //
73 void Unconstrained();
74
75 //
76 // Dimension is 'as is' (use current size settings)
77 //
78 void AsIs();
79
80 //
81 // Accessors
82 //
83 wxWindow *GetOtherWindow();
84 wxEdge GetMyEdge() const;
85 void SetEdge(wxEdge which);
86 void SetValue(int v);
87 int GetMargin();
88 void SetMargin(int m);
89 int GetValue() const;
90 int GetPercent() const;
91 int GetOtherEdge() const;
92 bool GetDone() const;
93 void SetDone(bool d);
94 wxRelationship GetRelationship();
95 void SetRelationship(wxRelationship r);
96
97 // Reset constraint if it mentions otherWin
98 bool ResetIfWin(wxWindow *otherW);
99
100 // Try to satisfy constraint
101 bool SatisfyConstraint(wxLayoutConstraints *constraints, wxWindow *win);
102
103 // Get the value of this edge or dimension, or if this
104 // is not determinable, -1.
105 int GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) const;
106};
107
108// ----------------------------------------------------------------------------
109// wxLayoutConstraints: the complete set of constraints for a window
110// ----------------------------------------------------------------------------
111
112class wxLayoutConstraints : public wxObject
113{
114public:
115 // Edge constraints
116 wxIndividualLayoutConstraint left;
117 wxIndividualLayoutConstraint top;
118 wxIndividualLayoutConstraint right;
119 wxIndividualLayoutConstraint bottom;
120 // Size constraints
121 wxIndividualLayoutConstraint width;
122 wxIndividualLayoutConstraint height;
123 // Centre constraints
124 wxIndividualLayoutConstraint centreX;
125 wxIndividualLayoutConstraint centreY;
126
127 wxLayoutConstraints();
128
129 // note that default copy ctor and assignment operators are ok
130
131 virtual ~wxLayoutConstraints();
132
133 bool SatisfyConstraints(wxWindow *win, int *noChanges);
134 bool AreSatisfied() const;
135};
136