1 #include <mof/widget/OverlapLayout.hpp>
2 #include <mof/utilities.hpp>
3 #include <mof/widgets.hpp>
4 #include <mof/streams.hpp>
7 #include <mof/ConsoleIO.hpp>
10 using mof::widget::WidgetView;
12 struct mof::widget::OverlapLayout::Impl
17 std::vector< shared_ptr<WidgetView> > views;
19 Impl( const mof::Vector2D& size )
21 width(size.x) , height(size.y) , length(0)
31 mof::widget::OverlapLayout::OverlapLayout( const mof::Vector2D& size )
32 : m_pImpl( new Impl( size ) )
37 mof::widget::OverlapLayout::~OverlapLayout( )
42 void mof::widget::OverlapLayout::add(shared_ptr<WidgetView> pView)
44 /*if(m_pImpl->length == 0 ){
45 m_pImpl->width = mof::real2int(size.x);
46 m_pImpl->width = mof::real2int(size.y);
49 m_pImpl->views.push_back(pView);
53 size_t mof::widget::OverlapLayout::getLength() const
55 return m_pImpl->length;
58 //{{{ getPreferredSize
59 mof::Vector2D mof::widget::OverlapLayout::getPreferredSize() const
61 return mof::Vector2D(m_pImpl->width , m_pImpl->height);
65 void mof::widget::OverlapLayout::connect(WidgetView* pParentView)
68 foreach(shared_ptr<WidgetView> pView , m_pImpl->views)
70 pView->getPositionStream() << pParentView->getPositionStream();
71 pView->getSizeStream() << pParentView->getSizeStream() << - pView->getSizeStream().value();
75 //{{{ getAdjacencyAsUp
76 int mof::widget::OverlapLayout::getAdjacencyAsUp(int index) const
78 return mof::rotation_mod(index-1 , m_pImpl->length);
81 //{{{ getAdjacencyAsDown
82 int mof::widget::OverlapLayout::getAdjacencyAsDown(int index) const
84 return mof::rotation_mod(index+1 , m_pImpl->length );
87 //{{{ getAdjacencyAsLeft
88 int mof::widget::OverlapLayout::getAdjacencyAsLeft(int index) const
90 return mof::rotation_mod(index-1 , m_pImpl->length );
93 //{{{ getAdjacencyAsRight
94 int mof::widget::OverlapLayout::getAdjacencyAsRight(int index) const
96 return mof::rotation_mod(index+1 , m_pImpl->length );