diff options
Diffstat (limited to 'include/mbgl/util/clip_ids.hpp')
-rw-r--r-- | include/mbgl/util/clip_ids.hpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/include/mbgl/util/clip_ids.hpp b/include/mbgl/util/clip_ids.hpp index 748d3d8f5f..5855b16af7 100644 --- a/include/mbgl/util/clip_ids.hpp +++ b/include/mbgl/util/clip_ids.hpp @@ -4,15 +4,34 @@ #include <mbgl/map/tile.hpp> #include <list> #include <set> +#include <vector> +#include <forward_list> #include <map> namespace mbgl { -static constexpr uint8_t clipMask[9] { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF }; +class ClipIDGenerator { +private: + struct Leaf { + Leaf(Tile &tile); + void add(const Tile::ID &p); + bool operator==(const Leaf &other) const; -void updateClipIDs(const std::list<Tile *> &array); + Tile &tile; + std::forward_list<Tile::ID> children; + }; + + typedef std::vector<Leaf> Pool; + std::forward_list<Pool> pools; + uint8_t bit_offset = 0; + +private: + bool reuseExisting(Leaf &leaf); + +public: + void update(std::forward_list<Tile *> tiles); +}; -std::map<Tile::ID, ClipID> computeClipIDs(std::forward_list<Tile::ID> array); } |