diff options
author | Anand Thakker <anandthakker@users.noreply.github.com> | 2017-04-06 15:29:59 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-06 15:29:59 -0400 |
commit | 693c9f3641b3189b4cd439049904c95a516ae609 (patch) | |
tree | 8341a16f57ff184a2fe9e085c490e8762eb206ce /include | |
parent | f9cc044357d60dd5cf15ba951384529f88802089 (diff) | |
download | qtlocation-mapboxgl-693c9f3641b3189b4cd439049904c95a516ae609.tar.gz |
[core] Add DDS support for {text,icon}-size (#8593)
* Update gl-js and generate style code
* Factor out packUint8Pair() helper function
* Draft implementation of DDS for {text,icon}-size
Ports https://github.com/mapbox/mapbox-gl-js/pull/4455
* Fix text-size/composite-function-line-placement test
* Refactor to PaintPropertyBinders-like strategy
* Dedupe gl::Program construction
* Use exponential function base for interpolation
* Dedupe coveringZoomStops method
* Fixup tests
* Fix CI errors (hidden within #if block)
Diffstat (limited to 'include')
4 files changed, 18 insertions, 9 deletions
diff --git a/include/mbgl/style/conversion/make_property_setters.hpp b/include/mbgl/style/conversion/make_property_setters.hpp index 85bcd44cf3..105cca99d6 100644 --- a/include/mbgl/style/conversion/make_property_setters.hpp +++ b/include/mbgl/style/conversion/make_property_setters.hpp @@ -37,7 +37,7 @@ auto makeLayoutPropertySetters() { result["icon-ignore-placement"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<bool>, &SymbolLayer::setIconIgnorePlacement>; result["icon-optional"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<bool>, &SymbolLayer::setIconOptional>; result["icon-rotation-alignment"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<AlignmentType>, &SymbolLayer::setIconRotationAlignment>; - result["icon-size"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<float>, &SymbolLayer::setIconSize>; + result["icon-size"] = &setLayoutProperty<V, SymbolLayer, DataDrivenPropertyValue<float>, &SymbolLayer::setIconSize>; result["icon-text-fit"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<IconTextFitType>, &SymbolLayer::setIconTextFit>; result["icon-text-fit-padding"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<std::array<float, 4>>, &SymbolLayer::setIconTextFitPadding>; result["icon-image"] = &setLayoutProperty<V, SymbolLayer, DataDrivenPropertyValue<std::string>, &SymbolLayer::setIconImage>; @@ -49,7 +49,7 @@ auto makeLayoutPropertySetters() { result["text-rotation-alignment"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<AlignmentType>, &SymbolLayer::setTextRotationAlignment>; result["text-field"] = &setLayoutProperty<V, SymbolLayer, DataDrivenPropertyValue<std::string>, &SymbolLayer::setTextField>; result["text-font"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<std::vector<std::string>>, &SymbolLayer::setTextFont>; - result["text-size"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<float>, &SymbolLayer::setTextSize>; + result["text-size"] = &setLayoutProperty<V, SymbolLayer, DataDrivenPropertyValue<float>, &SymbolLayer::setTextSize>; result["text-max-width"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<float>, &SymbolLayer::setTextMaxWidth>; result["text-line-height"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<float>, &SymbolLayer::setTextLineHeight>; result["text-letter-spacing"] = &setLayoutProperty<V, SymbolLayer, PropertyValue<float>, &SymbolLayer::setTextLetterSpacing>; diff --git a/include/mbgl/style/data_driven_property_value.hpp b/include/mbgl/style/data_driven_property_value.hpp index 3f9ac69436..5acf800840 100644 --- a/include/mbgl/style/data_driven_property_value.hpp +++ b/include/mbgl/style/data_driven_property_value.hpp @@ -45,6 +45,15 @@ public: bool isDataDriven() const { return value.template is<SourceFunction<T>>() || value.template is<CompositeFunction<T>>(); } + + bool isZoomConstant() const { + return !value.template is<CameraFunction<T>>() && !value.template is<CompositeFunction<T>>(); + } + + template <class... Ts> + auto match(Ts&&... ts) const { + return value.match(std::forward<Ts>(ts)...); + } template <typename Evaluator> auto evaluate(const Evaluator& evaluator) const { diff --git a/include/mbgl/style/function/camera_function.hpp b/include/mbgl/style/function/camera_function.hpp index 5636b1663c..2e4aac2238 100644 --- a/include/mbgl/style/function/camera_function.hpp +++ b/include/mbgl/style/function/camera_function.hpp @@ -28,7 +28,7 @@ public: return s.evaluate(Value(double(zoom))).value_or(T()); }); } - + friend bool operator==(const CameraFunction& lhs, const CameraFunction& rhs) { return lhs.stops == rhs.stops; diff --git a/include/mbgl/style/layers/symbol_layer.hpp b/include/mbgl/style/layers/symbol_layer.hpp index 853a71bef2..6e29faa949 100644 --- a/include/mbgl/style/layers/symbol_layer.hpp +++ b/include/mbgl/style/layers/symbol_layer.hpp @@ -59,9 +59,9 @@ public: PropertyValue<AlignmentType> getIconRotationAlignment() const; void setIconRotationAlignment(PropertyValue<AlignmentType>); - static PropertyValue<float> getDefaultIconSize(); - PropertyValue<float> getIconSize() const; - void setIconSize(PropertyValue<float>); + static DataDrivenPropertyValue<float> getDefaultIconSize(); + DataDrivenPropertyValue<float> getIconSize() const; + void setIconSize(DataDrivenPropertyValue<float>); static PropertyValue<IconTextFitType> getDefaultIconTextFit(); PropertyValue<IconTextFitType> getIconTextFit() const; @@ -107,9 +107,9 @@ public: PropertyValue<std::vector<std::string>> getTextFont() const; void setTextFont(PropertyValue<std::vector<std::string>>); - static PropertyValue<float> getDefaultTextSize(); - PropertyValue<float> getTextSize() const; - void setTextSize(PropertyValue<float>); + static DataDrivenPropertyValue<float> getDefaultTextSize(); + DataDrivenPropertyValue<float> getTextSize() const; + void setTextSize(DataDrivenPropertyValue<float>); static PropertyValue<float> getDefaultTextMaxWidth(); PropertyValue<float> getTextMaxWidth() const; |