diff options
author | Bruno de Oliveira Abinader <brunoabinader@gmail.com> | 2015-06-17 10:56:18 +0300 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-08-20 11:59:07 -0700 |
commit | 98534631e068477930a32ca25459dca4f3bb6170 (patch) | |
tree | 4276174b11295db6c491f2cdf9676691ff22eae0 /src/mbgl/style | |
parent | d1100f34de826bd8eab8a2592635af3341c92e6a (diff) | |
download | qtlocation-mapboxgl-98534631e068477930a32ca25459dca4f3bb6170.tar.gz |
Add circle render type
As specified in:
https://github.com/mapbox/mapbox-gl-style-spec/blob/v8-circle/reference/v8.json
Part of #1740.
Diffstat (limited to 'src/mbgl/style')
-rw-r--r-- | src/mbgl/style/property_fallback.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/style/property_key.hpp | 7 | ||||
-rw-r--r-- | src/mbgl/style/style_layer.cpp | 15 | ||||
-rw-r--r-- | src/mbgl/style/style_parser.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/style/style_properties.cpp | 1 |
5 files changed, 37 insertions, 0 deletions
diff --git a/src/mbgl/style/property_fallback.cpp b/src/mbgl/style/property_fallback.cpp index 091c12e5d8..74dd247b03 100644 --- a/src/mbgl/style/property_fallback.cpp +++ b/src/mbgl/style/property_fallback.cpp @@ -21,6 +21,13 @@ const std::map<PropertyKey, PropertyValue> PropertyFallbackValue::properties = { { PropertyKey::LineGapWidth, defaultStyleProperties<LineProperties>().gap_width }, { PropertyKey::LineBlur, defaultStyleProperties<LineProperties>().blur }, + { PropertyKey::CircleRadius, defaultStyleProperties<CircleProperties>().radius }, + { PropertyKey::CircleColor, defaultStyleProperties<CircleProperties>().color }, + { PropertyKey::CircleOpacity, defaultStyleProperties<CircleProperties>().opacity }, + { PropertyKey::CircleTranslate, defaultStyleProperties<CircleProperties>().translate }, + { PropertyKey::CircleTranslateAnchor, defaultStyleProperties<CircleProperties>().translateAnchor }, + { PropertyKey::CircleBlur, defaultStyleProperties<CircleProperties>().blur }, + { PropertyKey::IconOpacity, defaultStyleProperties<SymbolProperties>().icon.opacity }, { PropertyKey::IconSize, defaultStyleProperties<SymbolProperties>().icon.size }, { PropertyKey::IconColor, defaultStyleProperties<SymbolProperties>().icon.color }, diff --git a/src/mbgl/style/property_key.hpp b/src/mbgl/style/property_key.hpp index 015ea1aa63..e7ddef51c3 100644 --- a/src/mbgl/style/property_key.hpp +++ b/src/mbgl/style/property_key.hpp @@ -27,6 +27,13 @@ enum class PropertyKey { LineMiterLimit, LineRoundLimit, + CircleRadius, + CircleColor, + CircleOpacity, + CircleTranslate, + CircleTranslateAnchor, + CircleBlur, + SymbolPlacement, SymbolSpacing, SymbolAvoidEdges, diff --git a/src/mbgl/style/style_layer.cpp b/src/mbgl/style/style_layer.cpp index 5fc6af793c..33fe3285ab 100644 --- a/src/mbgl/style/style_layer.cpp +++ b/src/mbgl/style/style_layer.cpp @@ -19,6 +19,8 @@ bool StyleLayer::isVisible() const { return getProperties<FillProperties>().isVisible(); case StyleLayerType::Line: return getProperties<LineProperties>().isVisible(); + case StyleLayerType::Circle: + return getProperties<CircleProperties>().isVisible(); case StyleLayerType::Symbol: return getProperties<SymbolProperties>().isVisible(); case StyleLayerType::Raster: @@ -205,6 +207,18 @@ void StyleLayer::applyStyleProperties<LineProperties>(const float z, const TimeP } template <> +void StyleLayer::applyStyleProperties<CircleProperties>(const float z, const TimePoint& now, const ZoomHistory &zoomHistory) { + properties.set<CircleProperties>(); + CircleProperties& circle = properties.get<CircleProperties>(); + applyTransitionedStyleProperty(PropertyKey::CircleRadius, circle.radius, z, now, zoomHistory); + applyTransitionedStyleProperty(PropertyKey::CircleColor, circle.color, z, now, zoomHistory); + applyTransitionedStyleProperty(PropertyKey::CircleOpacity, circle.opacity, z, now, zoomHistory); + applyTransitionedStyleProperty(PropertyKey::CircleTranslate, circle.translate, z, now, zoomHistory); + applyStyleProperty(PropertyKey::CircleTranslateAnchor, circle.translateAnchor, z, now, zoomHistory); + applyTransitionedStyleProperty(PropertyKey::CircleBlur, circle.blur, z, now, zoomHistory); +} + +template <> void StyleLayer::applyStyleProperties<SymbolProperties>(const float z, const TimePoint& now, const ZoomHistory &zoomHistory) { properties.set<SymbolProperties>(); SymbolProperties &symbol = properties.get<SymbolProperties>(); @@ -255,6 +269,7 @@ void StyleLayer::updateProperties(float z, const TimePoint& now, ZoomHistory &zo switch (type) { case StyleLayerType::Fill: applyStyleProperties<FillProperties>(z, now, zoomHistory); break; case StyleLayerType::Line: applyStyleProperties<LineProperties>(z, now, zoomHistory); break; + case StyleLayerType::Circle: applyStyleProperties<CircleProperties>(z, now, zoomHistory); break; case StyleLayerType::Symbol: applyStyleProperties<SymbolProperties>(z, now, zoomHistory); break; case StyleLayerType::Raster: applyStyleProperties<RasterProperties>(z, now, zoomHistory); break; case StyleLayerType::Background: applyStyleProperties<BackgroundProperties>(z, now, zoomHistory); break; diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp index b9ba61ee22..cd5211aaf6 100644 --- a/src/mbgl/style/style_parser.cpp +++ b/src/mbgl/style/style_parser.cpp @@ -834,6 +834,13 @@ void StyleParser::parsePaint(JSVal value, ClassProperties &klass) { parseOptionalProperty<PiecewiseConstantFunction<Faded<std::vector<float>>>>("line-dasharray", Key::LineDashArray, klass, value, "line-dasharray-transition"); parseOptionalProperty<PiecewiseConstantFunction<Faded<std::string>>>("line-pattern", Key::LineImage, klass, value, "line-pattern-transition"); + parseOptionalProperty<Function<float>>("circle-radius", Key::CircleRadius, klass, value); + parseOptionalProperty<Function<Color>>("circle-color", Key::CircleColor, klass, value); + parseOptionalProperty<Function<float>>("circle-opacity", Key::CircleOpacity, klass, value); + parseOptionalProperty<Function<std::array<float,2>>>("circle-translate", Key::CircleTranslate, klass, value); + parseOptionalProperty<Function<TranslateAnchorType>>("circle-translate-anchor", Key::CircleTranslateAnchor, klass, value); + parseOptionalProperty<Function<float>>("circle-blur", Key::CircleBlur, klass, value); + parseOptionalProperty<Function<float>>("icon-opacity", Key::IconOpacity, klass, value); parseOptionalProperty<PropertyTransition>("icon-opacity-transition", Key::IconOpacity, klass, value); parseOptionalProperty<Function<float>>("icon-size", Key::IconSize, klass, value); diff --git a/src/mbgl/style/style_properties.cpp b/src/mbgl/style/style_properties.cpp index 3c5b525c1d..aa4c7e29c7 100644 --- a/src/mbgl/style/style_properties.cpp +++ b/src/mbgl/style/style_properties.cpp @@ -5,6 +5,7 @@ namespace mbgl { template<> const FillProperties &defaultStyleProperties() { static const FillProperties p; return p; } template<> const LineProperties &defaultStyleProperties() { static const LineProperties p; return p; } +template<> const CircleProperties &defaultStyleProperties() { static const CircleProperties p; return p; } template<> const SymbolProperties &defaultStyleProperties() { static const SymbolProperties p; return p; } template<> const RasterProperties &defaultStyleProperties() { static const RasterProperties p; return p; } template<> const BackgroundProperties &defaultStyleProperties() { static const BackgroundProperties p; return p; } |