diff --git a/include/llmr/style/properties.hpp b/include/llmr/style/properties.hpp index d44579b48..af304c1ea 100644 --- a/include/llmr/style/properties.hpp +++ b/include/llmr/style/properties.hpp @@ -106,6 +106,12 @@ struct GenericProperties { float prerenderBuffer = 1.0f / 32.0f; uint16_t prerenderSize = 256; uint16_t prerenderBlur = 0; + + virtual bool isVisible() const { + if (!enabled) { return false; } + if (opacity <= 0) { return false; } + return true; + } }; struct IconClass : public GenericClass { diff --git a/src/map/map.cpp b/src/map/map.cpp index 13e42727d..252d29204 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -572,18 +572,11 @@ typename Styles::const_iterator find_style(const Styles &styles, const LayerDesc return it; } -template -bool is_invisible(const Properties &properties) { - if (!properties.enabled) { return true; } - if (properties.opacity <= 0) { return true; } - return false; -} - template bool is_invisible(const Styles &styles, const LayerDescription &layer_desc) { auto it = find_style(styles, layer_desc); if (it == styles.end()) { return true; } - return is_invisible(it->second); + return !it->second.isVisible(); } void Map::renderLayer(const LayerDescription& layer_desc, RenderPass pass) { @@ -592,7 +585,7 @@ void Map::renderLayer(const LayerDescription& layer_desc, RenderPass pass) { if (pass == Translucent) { auto it = find_style(style.computed.composites, layer_desc); const CompositeProperties &properties = (it != style.computed.composites.end()) ? it->second : defaultCompositeProperties; - if (!is_invisible(properties)) { + if (properties.isVisible()) { gl::group group(std::string("group: ") + layer_desc.name); if (debug::renderTree) {