1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*!
@file
@author Albert Semenov
@date 02/2011
*/
#include "StackPanel.h"
namespace MyGUI
{
StackPanel::StackPanel()
{
}
IntSize StackPanel::overrideMeasure(const IntSize& _sizeAvailable)
{
IntSize result;
size_t count = getChildCount();
for (size_t index = 0; index < count; ++ index)
{
Widget* child = getChildAt(index);
Panel::updateMeasure(child, _sizeAvailable);
IntSize size = Panel::getDesiredSize(child);
result.width = std::max(result.width, size.width);
result.height += size.height;
}
if (count > 0)
result.height += (count - 1) * mSpacer.height;
return result;
}
void StackPanel::overrideArrange()
{
int offset = 0;
EnumeratorWidgetPtr child = getEnumerator();
while (child.next())
{
const IntSize& childSize = Panel::getDesiredSize(child.current());
IntCoord coord;
int height = childSize.height;
coord.set(0, offset, getWidth(), height);
Panel::updateArrange(child.current(), coord);
offset += height + mSpacer.height;
}
}
const IntSize& StackPanel::getSpacer() const
{
return mSpacer;
}
void StackPanel::setSpacer(const IntSize& _value)
{
mSpacer = _value;
}
} // namespace MyGUI
|