summaryrefslogtreecommitdiff
path: root/src/mbgl/style
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2015-02-17 17:49:02 -0800
committerKonstantin Käfer <mail@kkaefer.com>2015-02-17 18:27:51 -0800
commit89c0ff5f3955ecd4316a7b4280e995b7b431817d (patch)
tree7ca855869e5d851ff2e8669c5526a5acab44bc97 /src/mbgl/style
parentdf23a6b7d7fc88ac90d0fe034a7e40c8aff928f8 (diff)
downloadqtlocation-mapboxgl-89c0ff5f3955ecd4316a7b4280e995b7b431817d.tar.gz
make StyleBucket mutable
refs #881
Diffstat (limited to 'src/mbgl/style')
-rw-r--r--src/mbgl/style/style_bucket.cpp7
-rw-r--r--src/mbgl/style/style_bucket.hpp5
-rw-r--r--src/mbgl/style/style_layer.hpp2
-rw-r--r--src/mbgl/style/style_parser.cpp18
4 files changed, 11 insertions, 21 deletions
diff --git a/src/mbgl/style/style_bucket.cpp b/src/mbgl/style/style_bucket.cpp
index 6e866f3035..54c75fc574 100644
--- a/src/mbgl/style/style_bucket.cpp
+++ b/src/mbgl/style/style_bucket.cpp
@@ -9,13 +9,6 @@ template<> const StyleBucketRaster &defaultLayoutProperties() { static StyleBuck
template<> const StyleBucketBackground &defaultLayoutProperties() { static StyleBucketBackground p; return p; }
StyleBucket::StyleBucket(StyleLayerType type_) : type(type_) {
- switch (type) {
- case StyleLayerType::Fill: render.set<StyleBucketFill>(); break;
- case StyleLayerType::Line: render.set<StyleBucketLine>(); break;
- case StyleLayerType::Symbol: render.set<StyleBucketSymbol>(); break;
- case StyleLayerType::Raster: render.set<StyleBucketRaster>(); break;
- default: break;
- }
}
} \ No newline at end of file
diff --git a/src/mbgl/style/style_bucket.hpp b/src/mbgl/style/style_bucket.hpp
index eac899cb97..ec852c19f2 100644
--- a/src/mbgl/style/style_bucket.hpp
+++ b/src/mbgl/style/style_bucket.hpp
@@ -104,10 +104,6 @@ class StyleBucketBackground {
public:
};
-typedef mapbox::util::variant<StyleBucketFill, StyleBucketLine, StyleBucketSymbol,
- StyleBucketRaster, StyleBucketBackground, std::false_type> StyleBucketRender;
-
-
class StyleBucket : public util::noncopyable {
public:
typedef util::ptr<StyleBucket> Ptr;
@@ -119,7 +115,6 @@ public:
std::string source_layer;
FilterExpression filter;
ClassProperties layout;
- StyleBucketRender render = std::false_type();
float min_zoom = -std::numeric_limits<float>::infinity();
float max_zoom = std::numeric_limits<float>::infinity();
VisibilityType visibility = VisibilityType::Visible;
diff --git a/src/mbgl/style/style_layer.hpp b/src/mbgl/style/style_layer.hpp
index 69af1dc230..1dadfed94b 100644
--- a/src/mbgl/style/style_layer.hpp
+++ b/src/mbgl/style/style_layer.hpp
@@ -67,7 +67,7 @@ public:
// Bucket information, telling the renderer how to generate the geometries
// for this layer (feature property filters, tessellation instructions, ...).
- util::ptr<StyleBucket> bucket;
+ util::ptr<const StyleBucket> bucket;
// Contains all style classes that can be applied to this layer.
const std::map<ClassID, ClassProperties> styles;
diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp
index af6a84492d..8840db0235 100644
--- a/src/mbgl/style/style_parser.cpp
+++ b/src/mbgl/style/style_parser.cpp
@@ -894,10 +894,10 @@ void StyleParser::parseReference(JSVal value, util::ptr<StyleLayer> &layer) {
#pragma mark - Parse Bucket
void StyleParser::parseBucket(JSVal value, util::ptr<StyleLayer> &layer) {
- layer->bucket = std::make_shared<StyleBucket>(layer->type);
+ util::ptr<StyleBucket> bucket = std::make_shared<StyleBucket>(layer->type);
// We name the buckets according to the layer that defined it.
- layer->bucket->name = layer->id;
+ bucket->name = layer->id;
if (value.HasMember("source")) {
JSVal value_source = replaceConstant(value["source"]);
@@ -905,7 +905,7 @@ void StyleParser::parseBucket(JSVal value, util::ptr<StyleLayer> &layer) {
const std::string source_name = { value_source.GetString(), value_source.GetStringLength() };
auto source_it = sources.find(source_name);
if (source_it != sources.end()) {
- layer->bucket->style_source = source_it->second;
+ bucket->style_source = source_it->second;
} else {
Log::Warning(Event::ParseStyle, "can't find source '%s' required for layer '%s'", source_name.c_str(), layer->id.c_str());
}
@@ -917,7 +917,7 @@ void StyleParser::parseBucket(JSVal value, util::ptr<StyleLayer> &layer) {
if (value.HasMember("source-layer")) {
JSVal value_source_layer = replaceConstant(value["source-layer"]);
if (value_source_layer.IsString()) {
- layer->bucket->source_layer = { value_source_layer.GetString(), value_source_layer.GetStringLength() };
+ bucket->source_layer = { value_source_layer.GetString(), value_source_layer.GetStringLength() };
} else {
Log::Warning(Event::ParseStyle, "source-layer of layer '%s' must be a string", layer->id.c_str());
}
@@ -925,18 +925,18 @@ void StyleParser::parseBucket(JSVal value, util::ptr<StyleLayer> &layer) {
if (value.HasMember("filter")) {
JSVal value_filter = replaceConstant(value["filter"]);
- layer->bucket->filter = parseFilterExpression(value_filter);
+ bucket->filter = parseFilterExpression(value_filter);
}
if (value.HasMember("layout")) {
JSVal value_render = replaceConstant(value["layout"]);
- parseLayout(value_render, layer->bucket);
+ parseLayout(value_render, bucket);
}
if (value.HasMember("minzoom")) {
JSVal min_zoom = value["minzoom"];
if (min_zoom.IsNumber()) {
- layer->bucket->min_zoom = min_zoom.GetDouble();
+ bucket->min_zoom = min_zoom.GetDouble();
} else {
Log::Warning(Event::ParseStyle, "minzoom of layer %s must be numeric", layer->id.c_str());
}
@@ -945,11 +945,13 @@ void StyleParser::parseBucket(JSVal value, util::ptr<StyleLayer> &layer) {
if (value.HasMember("maxzoom")) {
JSVal max_zoom = value["maxzoom"];
if (max_zoom.IsNumber()) {
- layer->bucket->min_zoom = max_zoom.GetDouble();
+ bucket->min_zoom = max_zoom.GetDouble();
} else {
Log::Warning(Event::ParseStyle, "maxzoom of layer %s must be numeric", layer->id.c_str());
}
}
+
+ layer->bucket = bucket;
}
void StyleParser::parseSprite(JSVal value) {