diff options
Diffstat (limited to 'src/mbgl/algorithm/generate_clip_ids.cpp')
-rw-r--r-- | src/mbgl/algorithm/generate_clip_ids.cpp | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/src/mbgl/algorithm/generate_clip_ids.cpp b/src/mbgl/algorithm/generate_clip_ids.cpp deleted file mode 100644 index aefa55b929..0000000000 --- a/src/mbgl/algorithm/generate_clip_ids.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include <mbgl/algorithm/generate_clip_ids_impl.hpp> -#include <mbgl/algorithm/covered_by_children.hpp> - -#include <mbgl/util/std.hpp> - -#include <list> -#include <vector> -#include <bitset> -#include <cassert> -#include <algorithm> -#include <iterator> - -namespace mbgl { -namespace algorithm { - -ClipIDGenerator::Leaf::Leaf(ClipID& clip_) : clip(clip_) { -} - -void ClipIDGenerator::Leaf::add(const CanonicalTileID& p) { - // Ensure that no already present child is a parent of the new p. - for (const auto& child : children) { - if (p.isChildOf(child)) { - return; - } - } - children.emplace(p); -} - -bool ClipIDGenerator::Leaf::operator==(const Leaf& other) const { - return children == other.children; -} - -std::map<UnwrappedTileID, ClipID> ClipIDGenerator::getClipIDs() const { - std::map<UnwrappedTileID, ClipID> clipIDs; - - // Merge everything. - for (auto& pair : pool) { - auto& id = pair.first; - auto& leaf = pair.second; - auto res = clipIDs.emplace(id, leaf.clip); - if (!res.second) { - // Merge with the existing ClipID when there was already an element with the - // same tile ID. - res.first->second |= leaf.clip; - } - } - - for (auto it = clipIDs.begin(); it != clipIDs.end(); ++it) { - auto& childId = it->first; - auto& childClip = it->second; - - // Loop through all preceding stencils, and find all parents. - - for (auto parentIt = std::reverse_iterator<decltype(it)>(it); - parentIt != clipIDs.rend(); ++parentIt) { - auto& parentId = parentIt->first; - if (childId.isChildOf(parentId)) { - // Once we have a parent, we add the bits that this ID hasn't set yet. - const auto& parentClip = parentIt->second; - const auto mask = ~(childClip.mask & parentClip.mask); - childClip.reference |= mask & parentClip.reference; - childClip.mask |= parentClip.mask; - } - } - } - - // Remove tiles that are entirely covered by children. - util::erase_if(clipIDs, [&](const auto& stencil) { - return algorithm::coveredByChildren(stencil.first, clipIDs); - }); - - return clipIDs; -} - -} // namespace algorithm -} // namespace mbgl |