From 66355b7d86ba999a0bca2f10847cf1ae8ec079f7 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Thu, 22 Jan 2015 12:46:57 -0800 Subject: [PATCH] Add visibility property for v7. --- src/mbgl/map/tile_parser.cpp | 1 + src/mbgl/renderer/painter.cpp | 1 + src/mbgl/style/style_bucket.hpp | 1 + src/mbgl/style/style_parser.cpp | 1 + src/mbgl/style/types.hpp | 12 ++++++++++++ 5 files changed, 16 insertions(+) diff --git a/src/mbgl/map/tile_parser.cpp b/src/mbgl/map/tile_parser.cpp index 1e12e5fc1..992dfe409 100644 --- a/src/mbgl/map/tile_parser.cpp +++ b/src/mbgl/map/tile_parser.cpp @@ -102,6 +102,7 @@ std::unique_ptr TileParser::createBucket(util::ptr bucket_d // Skip this bucket if we are to not render this if (tile.id.z < std::floor(bucket_desc->min_zoom) && std::floor(bucket_desc->min_zoom) < tile.source.max_zoom) return nullptr; if (tile.id.z >= std::ceil(bucket_desc->max_zoom)) return nullptr; + if (bucket_desc->visibility == mbgl::VisibilityType::None) return nullptr; auto layer_it = vector_data.layers.find(bucket_desc->source_layer); if (layer_it != vector_data.layers.end()) { diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index 1af33c413..deafe86ae 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -290,6 +290,7 @@ void Painter::renderLayers(util::ptr group) { } void Painter::renderLayer(util::ptr layer_desc, const Tile::ID* id, const mat4* matrix) { + if (layer_desc->bucket->visibility == VisibilityType::None) return; if (layer_desc->type == StyleLayerType::Background) { // This layer defines a background color/image. diff --git a/src/mbgl/style/style_bucket.hpp b/src/mbgl/style/style_bucket.hpp index d84d35d5b..925640e1a 100644 --- a/src/mbgl/style/style_bucket.hpp +++ b/src/mbgl/style/style_bucket.hpp @@ -103,6 +103,7 @@ public: StyleBucketRender render = std::false_type(); float min_zoom = -std::numeric_limits::infinity(); float max_zoom = std::numeric_limits::infinity(); + VisibilityType visibility = VisibilityType::Visible; }; diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp index 2dec648af..fe0677e87 100644 --- a/src/mbgl/style/style_parser.cpp +++ b/src/mbgl/style/style_parser.cpp @@ -743,6 +743,7 @@ void StyleParser::parseLayout(JSVal value, util::ptr &layer) { } StyleBucket &bucket = *layer->bucket; + parseRenderProperty(value, bucket.visibility, "visibility"); switch (layer->type) { case StyleLayerType::Fill: { diff --git a/src/mbgl/style/types.hpp b/src/mbgl/style/types.hpp index 2f7ca7683..c0b873dcd 100644 --- a/src/mbgl/style/types.hpp +++ b/src/mbgl/style/types.hpp @@ -50,6 +50,18 @@ MBGL_DEFINE_ENUM_CLASS(SourceTypeClass, SourceType, { // ------------------------------------------------------------------------------------------------- +enum class VisibilityType : bool { + Visible, + None, +}; + +MBGL_DEFINE_ENUM_CLASS(VisibilityTypeClass, VisibilityType, { + { VisibilityType::Visible, "visible" }, + { VisibilityType::None, "none" }, +}); + +// ------------------------------------------------------------------------------------------------- + enum class WindingType : bool { EvenOdd, NonZero,