/* Copyright 2015, Michele Santullo
* This file is part of DoorKeeper.
*
* DoorKeeper is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* DoorKeeper is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with DoorKeeper. If not, see .
*/
#ifndef id83407244096746CDBFF64D23F0B1701A
#define id83407244096746CDBFF64D23F0B1701A
#include "doorkeeper/primitivetypes.hpp"
#include "doorkeeper/components/viewport.hpp"
#include "doorkeeper/components/tyler.hpp"
#include "doorkeeper/components/layer.hpp"
#include "doorkeeper/implem/iterableviewport.hpp"
#include
#include
#include
#include
#include
namespace dk {
template
class Tyler;
template
class LayeredViewport {
struct ViewportItem;
typedef std::vector ViewportList;
public:
typedef VectorT coords_f;
typedef boost::transform_iterator(const LayerBase&)>, typename Tyler::iterator> iterator;
typedef boost::transform_iterator(const LayerBase&)>, typename Tyler::const_iterator> const_iterator;
LayeredViewport ( const LayeredViewport& ) = delete;
LayeredViewport ( LayeredViewport&& parOther );
explicit LayeredViewport ( Tyler& parTyler );
~LayeredViewport ( void ) noexcept;
LayeredViewport& operator+= ( const coords_f& parValue );
LayeredViewport& operator-= ( const coords_f& parValue );
void on_layer ( const LayerBase& parLayer, bool parAdded );
iterator begin ( void );
const_iterator begin ( void ) const;
iterator end ( void );
const_iterator end ( void ) const;
IterableViewport viewport ( const LayerBase& parLayer );
const IterableViewport viewport ( const LayerBase& parLayer ) const;
LayeredViewport& operator= ( const LayeredViewport& ) = delete;
private:
ViewportList m_views;
Tyler& m_tyler;
typename Tyler::LayerObsID m_tyler_id;
};
} //namespace dk
#include "doorkeeper/implem/layeredviewport.inl"
#endif