void HBox::draw( const ControlContext& cx, DrawableList& out ) { Container::draw( cx, out ); for( ControlList::const_iterator i = _controls.begin(); i != _controls.end(); ++i ) i->get()->draw( cx, out ); }
void HBox::calcSize(const ControlContext& cx, osg::Vec2f& out_size) { if ( visible() == true ) { _renderSize.set( 0, 0 ); // collect all the members, growing the container is its orientation. for( ControlList::const_iterator i = _controls.begin(); i != _controls.end(); ++i ) { Control* child = i->get(); osg::Vec2f childSize; bool first = i == _controls.begin(); child->calcSize( cx, childSize ); _renderSize.x() += first ? childSize.x() : spacing() + childSize.x(); _renderSize.y() = osg::maximum( _renderSize.y(), childSize.y() ); } _renderSize.set( _renderSize.x() + padding().left() + padding().right(), _renderSize.y() + padding().top() + padding().bottom() ); out_size.set( _renderSize.x() + margin().left() + margin().right(), _renderSize.y() + margin().top() + margin().bottom() ); Container::calcSize( cx, out_size ); } }
void VBox::calcPos(const ControlContext& cx, const osg::Vec2f& cursor, const osg::Vec2f& parentSize) { Container::calcPos( cx, cursor, parentSize ); osg::Vec2f childCursor( _renderPos.x() + padding().left(), _renderPos.y() + padding().top() ); for( ControlList::const_iterator i = _controls.begin(); i != _controls.end(); ++i ) { Control* child = i->get(); child->calcPos( cx, childCursor, _renderSize ); childCursor.y() += child->margin().top() + child->renderSize().y() + child->margin().bottom() + spacing(); } }
void HBox::calcPos(const ControlContext& cx, const osg::Vec2f& cursor, const osg::Vec2f& parentSize) { Container::calcPos( cx, cursor, parentSize ); osg::Vec2f childCursor( _renderPos.x() + padding().left(), _renderPos.y() + padding().top() ); // collect all the members, growing the container is its orientation. for( ControlList::const_iterator i = _controls.begin(); i != _controls.end(); ++i ) { Control* child = i->get(); child->calcPos( cx, childCursor, _renderSize ); childCursor.x() += child->margin().left() + child->renderSize().x() + child->margin().right() + spacing(); } }