MyCurry/src/tileiterator.hpp

32 lines
776 B
C++
Raw Normal View History

#pragma once
#include "vector.hpp"
#include <boost/iterator/iterator_facade.hpp>
#include <ciso646>
namespace curry {
typedef int Tile;
class WorldViewport;
2016-10-26 22:06:59 +00:00
struct ScreenTile {
Tile index;
vec2i pixel_pos;
2016-10-26 22:06:59 +00:00
};
class TileIterator : public boost::iterator_facade<TileIterator, Tile, boost::bidirectional_traversal_tag, ScreenTile> {
typedef boost::iterator_facade<TileIterator, Tile, boost::bidirectional_traversal_tag, ScreenTile> base_class;
friend class boost::iterator_core_access;
public:
TileIterator (WorldViewport* parViewport, bool parEnd);
private:
2016-10-26 22:06:59 +00:00
ScreenTile dereference() const;
void increment();
bool equal (const TileIterator& parOther) const;
2016-10-26 22:06:59 +00:00
vec2i m_pixel_pos;
WorldViewport* m_viewport;
vec2us m_index;
};
} //namespace curry