#ifndef id0ADBCC15BA574485BF3267254090D99B #define id0ADBCC15BA574485BF3267254090D99B #include "doorkeeper/primitivetypes.hpp" #include "doorkeeper/components/tileiterator.hpp" #include "doorkeeper/components/layer.hpp" #include namespace dk { template class Tyler; template class Layer; template class Viewport { public: typedef Vector coords; Viewport ( const Viewport& parOther ) = default; explicit Viewport ( Tyler& parTyler ); Viewport ( Tyler& parTyler, const coords& parSize, const coords& parPos ); ~Viewport ( void ) noexcept = default; Viewport& operator= ( const Viewport& ) = default; void setSize ( const coords& parSize ); void setFrom ( const coords& parFrom ); void setFromSize ( const coords& parFrom, const coords& parSize ); const coords& count ( void ) const { return m_size; } template typename Layer::iterator begin ( Layer& parLayer ) const; template typename Layer::iterator end ( Layer& parLayer ) const; template inline typename Layer::const_iterator begin ( const Layer& parLayer ) const a_always_inline; template inline typename Layer::const_iterator end ( const Layer& parLayer ) const a_always_inline; template typename Layer::const_iterator cbegin ( const Layer& parLayer ) const; template typename Layer::const_iterator cend ( const Layer& parLayer ) const; private: coords m_size; coords m_position; Tyler& m_tyler; }; } //namespace dk #include "doorkeeper/implem/viewport.inl" #endif