| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include "Base.h"
- #include "VerticalLayout.h"
- namespace gameplay
- {
- VerticalLayout::VerticalLayout() : _bottomToTop(false)
- {
- }
- VerticalLayout::~VerticalLayout()
- {
- }
- VerticalLayout* VerticalLayout::create()
- {
- return new VerticalLayout();
- }
- void VerticalLayout::setBottomToTop(bool bottomToTop)
- {
- _bottomToTop = bottomToTop;
- }
- bool VerticalLayout::getBottomToTop()
- {
- return _bottomToTop;
- }
- Layout::Type VerticalLayout::getType()
- {
- return Layout::LAYOUT_VERTICAL;
- }
- void VerticalLayout::update(const Container* container, const Vector2& offset)
- {
- GP_ASSERT(container);
- // Need border, padding.
- Theme::Border border = container->getBorder(container->getState());
- Theme::Padding padding = container->getPadding();
- float yPosition = 0;
- std::vector<Control*> controls = container->getControls();
- int i, end, iter;
- if (_bottomToTop)
- {
- i = (int)controls.size() - 1;
- end = -1;
- iter = -1;
- }
- else
- {
- i = 0;
- end = (int)controls.size();
- iter = 1;
- }
- while (i != end)
- {
- Control* control = controls.at(i);
- GP_ASSERT(control);
- align(control, container);
- const Rectangle& bounds = control->getBounds();
- const Theme::Margin& margin = control->getMargin();
- yPosition += margin.top;
- control->setPosition(margin.left, yPosition);
- control->update(container, offset);
- yPosition += bounds.height + margin.bottom;
- i += iter;
- }
- }
- }
|