summaryrefslogtreecommitdiff
path: root/src/mbgl/style
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <brunoabinader@gmail.com>2015-06-17 10:56:18 +0300
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-08-20 11:59:07 -0700
commit98534631e068477930a32ca25459dca4f3bb6170 (patch)
tree4276174b11295db6c491f2cdf9676691ff22eae0 /src/mbgl/style
parentd1100f34de826bd8eab8a2592635af3341c92e6a (diff)
downloadqtlocation-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.cpp7
-rw-r--r--src/mbgl/style/property_key.hpp7
-rw-r--r--src/mbgl/style/style_layer.cpp15
-rw-r--r--src/mbgl/style/style_parser.cpp7
-rw-r--r--src/mbgl/style/style_properties.cpp1
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; }