From 38fcbe21d48186c4630a3b8a76d1b20e156faadd Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Sun, 30 Oct 2016 11:06:59 -0700 Subject: [core] Convert style properties to a tuple-based approach This converts the style property classes (CirclePaintProperties and so on) to the same tuple-based approach as gl::Attribute and gl::Uniform. The approach is outlined in https://github.com/mapbox/cpp/blob/master/C%2B%2B%20Structural%20Metaprogramming.md. The main advantage of this approach is it allows writing algorithms that work on sets of style properties, without resorting to code generation or manually repetitive code. This lets us iterate on approaches to data-driven properties more easily. Another advantage is that the cascading, unevaluated, and evaluated states of a set of properties exist as independent structures, instead of individual properties holding their own state. This is a more functional approach that makes data flow clearer and reduces state. --- src/mbgl/style/layers/circle_layer.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/mbgl/style/layers/circle_layer.cpp') diff --git a/src/mbgl/style/layers/circle_layer.cpp b/src/mbgl/style/layers/circle_layer.cpp index a2b8d316d6..ce01a12ff2 100644 --- a/src/mbgl/style/layers/circle_layer.cpp +++ b/src/mbgl/style/layers/circle_layer.cpp @@ -67,13 +67,13 @@ PropertyValue CircleLayer::getDefaultCircleRadius() { } PropertyValue CircleLayer::getCircleRadius(const optional& klass) const { - return impl->paint.circleRadius.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCircleRadius(PropertyValue value, const optional& klass) { if (value == getCircleRadius(klass)) return; - impl->paint.circleRadius.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } @@ -82,13 +82,13 @@ PropertyValue CircleLayer::getDefaultCircleColor() { } PropertyValue CircleLayer::getCircleColor(const optional& klass) const { - return impl->paint.circleColor.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCircleColor(PropertyValue value, const optional& klass) { if (value == getCircleColor(klass)) return; - impl->paint.circleColor.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } @@ -97,13 +97,13 @@ PropertyValue CircleLayer::getDefaultCircleBlur() { } PropertyValue CircleLayer::getCircleBlur(const optional& klass) const { - return impl->paint.circleBlur.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCircleBlur(PropertyValue value, const optional& klass) { if (value == getCircleBlur(klass)) return; - impl->paint.circleBlur.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } @@ -112,13 +112,13 @@ PropertyValue CircleLayer::getDefaultCircleOpacity() { } PropertyValue CircleLayer::getCircleOpacity(const optional& klass) const { - return impl->paint.circleOpacity.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCircleOpacity(PropertyValue value, const optional& klass) { if (value == getCircleOpacity(klass)) return; - impl->paint.circleOpacity.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } @@ -127,13 +127,13 @@ PropertyValue> CircleLayer::getDefaultCircleTranslate() { } PropertyValue> CircleLayer::getCircleTranslate(const optional& klass) const { - return impl->paint.circleTranslate.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCircleTranslate(PropertyValue> value, const optional& klass) { if (value == getCircleTranslate(klass)) return; - impl->paint.circleTranslate.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } @@ -142,13 +142,13 @@ PropertyValue CircleLayer::getDefaultCircleTranslateAnchor( } PropertyValue CircleLayer::getCircleTranslateAnchor(const optional& klass) const { - return impl->paint.circleTranslateAnchor.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCircleTranslateAnchor(PropertyValue value, const optional& klass) { if (value == getCircleTranslateAnchor(klass)) return; - impl->paint.circleTranslateAnchor.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } @@ -157,13 +157,13 @@ PropertyValue CircleLayer::getDefaultCirclePitchScale() { } PropertyValue CircleLayer::getCirclePitchScale(const optional& klass) const { - return impl->paint.circlePitchScale.get(klass); + return impl->paint.get(klass); } void CircleLayer::setCirclePitchScale(PropertyValue value, const optional& klass) { if (value == getCirclePitchScale(klass)) return; - impl->paint.circlePitchScale.set(value, klass); + impl->paint.set(value, klass); impl->observer->onLayerPaintPropertyChanged(*this); } -- cgit v1.2.1