/* GWEN Copyright (c) 2012 Facepunch Studios See license in Gwen.h */ #pragma once #ifndef GWEN_CONTROLS_LAYOUT_TILE_H #define GWEN_CONTROLS_LAYOUT_TILE_H #include "../gwen_base.h" namespace Gwen { namespace Controls { namespace Layout { class GWEN_EXPORT Tile : public Base { public: GWEN_CONTROL_INLINE( Tile, Base ) { Dock( Pos::Fill ); SetTileSize( 22, 22 ); } void PostLayout( Skin::Base* skin ) { Gwen::Rect bounds = GetInnerBounds(); Gwen::Point pos = Point( bounds.x, bounds.y ); for ( Base::List::iterator it = Children.begin(); it != Children.end(); ++it ) { Base* pChild = *it; if ( pChild->GetDock() != Pos::None ) continue; pChild->SetPos( pos.x + (m_TileSize.x/2) - (pChild->Width()/2), pos.y + (m_TileSize.y/2) - (pChild->Height()/2) ); pos.x = pos.x + m_TileSize.x; if ( pos.x + m_TileSize.x > bounds.x + bounds.w ) { pos.x = bounds.x; pos.y += m_TileSize.y; } } } void SetTileSize( int x, int y ) { m_TileSize = Point( x, y ); } private: Point m_TileSize; }; } } } #endif