2 using System.Collections.Generic;
3 using System.ComponentModel;
15 private Vector _preferredSize;
16 private double _targetWidth = 400;
17 private double _horizontalSpacing = 0;
18 private double _verticalSpacing = 0;
19 private double _topPadding = 0;
20 private double _bottomPadding = 0;
21 private double _leftPadding = 0;
22 private double _rightPadding = 0;
24 [EditorBrowsable( EditorBrowsableState.Never )]
32 get {
return _horizontalSpacing; }
33 set { _horizontalSpacing = value; NotifyParent(); }
38 get {
return _verticalSpacing; }
39 set { _verticalSpacing = value; NotifyParent(); }
47 get {
return _topPadding; }
48 set { _topPadding = value; NotifyParent(); }
56 get {
return _bottomPadding; }
57 set { _bottomPadding = value; NotifyParent(); }
65 get {
return _leftPadding; }
66 set { _leftPadding = value; NotifyParent(); }
74 get {
return _rightPadding; }
75 set { _rightPadding = value; NotifyParent(); }
83 get {
return _targetWidth; }
84 set { _targetWidth = value; NotifyParent(); }
88 private void NotifyParent()
96 [EditorBrowsable(EditorBrowsableState.Never)]
99 if ( objects.Count == 0 )
104 int objectsInRow = 0;
106 double totalHeight = 0;
107 double rowMaxHeight = 0;
108 double maxRowWidth = 0;
109 bool atFirstColumn =
true;
111 while ( i < objects.Count )
114 bool rowIsTooWide = ( left +
HorizontalSpacing + o.PreferredSize.X ) > targetContentWidth;
116 if ( ( objectsInRow >= 1 ) && rowIsTooWide )
118 if ( left > maxRowWidth )
126 atFirstColumn =
true;
130 if ( o.PreferredSize.Y > rowMaxHeight ) rowMaxHeight = o.PreferredSize.Y;
133 atFirstColumn =
false;
134 left += o.PreferredSize.X;
139 if ( left > maxRowWidth ) maxRowWidth = left;
140 totalHeight += rowMaxHeight;
145 _preferredSize =
new Vector( preferredWidth, preferredHeight );
148 [EditorBrowsable( EditorBrowsableState.Never )]
151 get {
return Sizing.FixedSize; }
154 [EditorBrowsable( EditorBrowsableState.Never )]
157 get {
return Sizing.FixedSize; }
160 [EditorBrowsable( EditorBrowsableState.Never )]
163 get {
return _preferredSize; }
167 [EditorBrowsable( EditorBrowsableState.Never )]
173 int objectsInRow = 0;
174 double rowMaxHeight = 0;
176 double left = leftLimit;
177 bool atFirstColumn =
true;
180 while ( i < objects.Count )
183 bool rowIsTooWide = ( left +
HorizontalSpacing + o.PreferredSize.X ) > rightLimit;
185 if ( ( objectsInRow >= 1 ) && rowIsTooWide )
191 atFirstColumn =
true;
196 atFirstColumn =
false;
198 o.Size = o.PreferredSize;
199 o.X = left + o.Width / 2;
200 o.Y = top - o.Height / 2;
202 if ( o.PreferredSize.Y > rowMaxHeight ) rowMaxHeight = o.PreferredSize.Y;
double TargetWidth
Kuinka leveitä rivien tulisi korkeintaan olla.
Rajapinta asettelijalle. Asettelija asettelee widgetin lapsioliot siten, että ne mahtuvat widgetin si...
double TopPadding
Yläreunaan jäävä tyhjä tila.
Sizing
Olion koon asettaminen asettelijan sisällä.
double LeftPadding
Vasempaan reunaan jäävä tyhjä tila.
double HorizontalSpacing
Olioiden väliin vaakasuunnassa jäävä tyhjä tila.
double BottomPadding
Alareunaan jäävä tyhjä tila.
void Update(IList< GameObject > objects, Vector maximumSize)
void NotifyParentAboutChangedSizingAttributes()
Should be called whenever properties that might affect layouts are changed.
void UpdateSizeHints(IList< GameObject > objects)
Asettelee widgetit riveihin. TargetWidth määrittää kuinka leveä yhden rivin tulisi olla...
double RightPadding
Oikeaan reunaan jäävä tyhjä tila.
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.