diff options
Diffstat (limited to 'src/mbgl/style/layers/heatmap_layer.cpp')
-rw-r--r-- | src/mbgl/style/layers/heatmap_layer.cpp | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/src/mbgl/style/layers/heatmap_layer.cpp b/src/mbgl/style/layers/heatmap_layer.cpp index 417e828a1d..3db78c4cf5 100644 --- a/src/mbgl/style/layers/heatmap_layer.cpp +++ b/src/mbgl/style/layers/heatmap_layer.cpp @@ -219,24 +219,29 @@ enum class Property { HeatmapWeightTransition, }; +template <typename T> +constexpr uint8_t toUint8(T t) noexcept { + return uint8_t(mbgl::underlying_type(t)); +} + MAPBOX_ETERNAL_CONSTEXPR const auto paintProperties = mapbox::eternal::hash_map<mapbox::eternal::string, uint8_t>( - {{"heatmap-color", mbgl::underlying_type(Property::HeatmapColor)}, - {"heatmap-intensity", mbgl::underlying_type(Property::HeatmapIntensity)}, - {"heatmap-opacity", mbgl::underlying_type(Property::HeatmapOpacity)}, - {"heatmap-radius", mbgl::underlying_type(Property::HeatmapRadius)}, - {"heatmap-weight", mbgl::underlying_type(Property::HeatmapWeight)}, - {"heatmap-color-transition", mbgl::underlying_type(Property::HeatmapColorTransition)}, - {"heatmap-intensity-transition", mbgl::underlying_type(Property::HeatmapIntensityTransition)}, - {"heatmap-opacity-transition", mbgl::underlying_type(Property::HeatmapOpacityTransition)}, - {"heatmap-radius-transition", mbgl::underlying_type(Property::HeatmapRadiusTransition)}, - {"heatmap-weight-transition", mbgl::underlying_type(Property::HeatmapWeightTransition)}}); + {{"heatmap-color", toUint8(Property::HeatmapColor)}, + {"heatmap-intensity", toUint8(Property::HeatmapIntensity)}, + {"heatmap-opacity", toUint8(Property::HeatmapOpacity)}, + {"heatmap-radius", toUint8(Property::HeatmapRadius)}, + {"heatmap-weight", toUint8(Property::HeatmapWeight)}, + {"heatmap-color-transition", toUint8(Property::HeatmapColorTransition)}, + {"heatmap-intensity-transition", toUint8(Property::HeatmapIntensityTransition)}, + {"heatmap-opacity-transition", toUint8(Property::HeatmapOpacityTransition)}, + {"heatmap-radius-transition", toUint8(Property::HeatmapRadiusTransition)}, + {"heatmap-weight-transition", toUint8(Property::HeatmapWeightTransition)}}); } // namespace optional<Error> HeatmapLayer::setPaintProperty(const std::string& name, const Convertible& value) { const auto it = paintProperties.find(name.c_str()); if (it == paintProperties.end()) { - return Error { "layer doesn't support this property" }; + return Error{"layer doesn't support this property"}; } auto property = static_cast<Property>(it->second); @@ -298,34 +303,33 @@ optional<Error> HeatmapLayer::setPaintProperty(const std::string& name, const Co if (!transition) { return error; } - + if (property == Property::HeatmapColorTransition) { setHeatmapColorTransition(*transition); return nullopt; } - + if (property == Property::HeatmapIntensityTransition) { setHeatmapIntensityTransition(*transition); return nullopt; } - + if (property == Property::HeatmapOpacityTransition) { setHeatmapOpacityTransition(*transition); return nullopt; } - + if (property == Property::HeatmapRadiusTransition) { setHeatmapRadiusTransition(*transition); return nullopt; } - + if (property == Property::HeatmapWeightTransition) { setHeatmapWeightTransition(*transition); return nullopt; } - - return Error { "layer doesn't support this property" }; + return Error{"layer doesn't support this property"}; } LayerProperty HeatmapLayer::getPaintProperty(const std::string& name) const { @@ -336,25 +340,25 @@ LayerProperty HeatmapLayer::getPaintProperty(const std::string& name) const { switch (static_cast<Property>(it->second)) { case Property::HeatmapColor: - return conversion::makeLayerProperty(getHeatmapColor()); + return makeLayerProperty(getHeatmapColor()); case Property::HeatmapIntensity: - return conversion::makeLayerProperty(getHeatmapIntensity()); + return makeLayerProperty(getHeatmapIntensity()); case Property::HeatmapOpacity: - return conversion::makeLayerProperty(getHeatmapOpacity()); + return makeLayerProperty(getHeatmapOpacity()); case Property::HeatmapRadius: - return conversion::makeLayerProperty(getHeatmapRadius()); + return makeLayerProperty(getHeatmapRadius()); case Property::HeatmapWeight: - return conversion::makeLayerProperty(getHeatmapWeight()); + return makeLayerProperty(getHeatmapWeight()); case Property::HeatmapColorTransition: - return conversion::makeLayerProperty(getHeatmapColorTransition()); + return makeLayerProperty(getHeatmapColorTransition()); case Property::HeatmapIntensityTransition: - return conversion::makeLayerProperty(getHeatmapIntensityTransition()); + return makeLayerProperty(getHeatmapIntensityTransition()); case Property::HeatmapOpacityTransition: - return conversion::makeLayerProperty(getHeatmapOpacityTransition()); + return makeLayerProperty(getHeatmapOpacityTransition()); case Property::HeatmapRadiusTransition: - return conversion::makeLayerProperty(getHeatmapRadiusTransition()); + return makeLayerProperty(getHeatmapRadiusTransition()); case Property::HeatmapWeightTransition: - return conversion::makeLayerProperty(getHeatmapWeightTransition()); + return makeLayerProperty(getHeatmapWeightTransition()); } return {}; } |