// This file is generated. Edit scripts/generate-style-code.js, then run `make style-code`. #include #include #include #include #include #include #include #include #include #include namespace mbgl { namespace style { HeatmapLayer::HeatmapLayer(const std::string& layerID, const std::string& sourceID) : Layer(makeMutable(LayerType::Heatmap, layerID, sourceID)) { } HeatmapLayer::HeatmapLayer(Immutable impl_) : Layer(std::move(impl_)) { } HeatmapLayer::~HeatmapLayer() = default; const HeatmapLayer::Impl& HeatmapLayer::impl() const { return static_cast(*baseImpl); } Mutable HeatmapLayer::mutableImpl() const { return makeMutable(impl()); } std::unique_ptr HeatmapLayer::cloneRef(const std::string& id_) const { auto impl_ = mutableImpl(); impl_->id = id_; impl_->paint = HeatmapPaintProperties::Transitionable(); return std::make_unique(std::move(impl_)); } void HeatmapLayer::Impl::stringifyLayout(rapidjson::Writer&) const { } LayerFactory* HeatmapLayer::Impl::getLayerFactory() const noexcept { return HeatmapLayerFactory::get(); } // Layout properties // Paint properties PropertyValue HeatmapLayer::getDefaultHeatmapRadius() { return { 30 }; } PropertyValue HeatmapLayer::getHeatmapRadius() const { return impl().paint.template get().value; } void HeatmapLayer::setHeatmapRadius(PropertyValue value) { if (value == getHeatmapRadius()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void HeatmapLayer::setHeatmapRadiusTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions HeatmapLayer::getHeatmapRadiusTransition() const { return impl().paint.template get().options; } PropertyValue HeatmapLayer::getDefaultHeatmapWeight() { return { 1 }; } PropertyValue HeatmapLayer::getHeatmapWeight() const { return impl().paint.template get().value; } void HeatmapLayer::setHeatmapWeight(PropertyValue value) { if (value == getHeatmapWeight()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void HeatmapLayer::setHeatmapWeightTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions HeatmapLayer::getHeatmapWeightTransition() const { return impl().paint.template get().options; } PropertyValue HeatmapLayer::getDefaultHeatmapIntensity() { return { 1 }; } PropertyValue HeatmapLayer::getHeatmapIntensity() const { return impl().paint.template get().value; } void HeatmapLayer::setHeatmapIntensity(PropertyValue value) { if (value == getHeatmapIntensity()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void HeatmapLayer::setHeatmapIntensityTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions HeatmapLayer::getHeatmapIntensityTransition() const { return impl().paint.template get().options; } ColorRampPropertyValue HeatmapLayer::getDefaultHeatmapColor() { conversion::Error error; std::string rawValue = R"JSON(["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",0.1,"royalblue",0.3,"cyan",0.5,"lime",0.7,"yellow",1,"red"])JSON"; return *conversion::convertJSON(rawValue, error); } ColorRampPropertyValue HeatmapLayer::getHeatmapColor() const { return impl().paint.template get().value; } void HeatmapLayer::setHeatmapColor(ColorRampPropertyValue value) { if (value == getHeatmapColor()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void HeatmapLayer::setHeatmapColorTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions HeatmapLayer::getHeatmapColorTransition() const { return impl().paint.template get().options; } PropertyValue HeatmapLayer::getDefaultHeatmapOpacity() { return { 1 }; } PropertyValue HeatmapLayer::getHeatmapOpacity() const { return impl().paint.template get().value; } void HeatmapLayer::setHeatmapOpacity(PropertyValue value) { if (value == getHeatmapOpacity()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void HeatmapLayer::setHeatmapOpacityTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions HeatmapLayer::getHeatmapOpacityTransition() const { return impl().paint.template get().options; } using namespace conversion; optional HeatmapLayer::setPaintProperty(const std::string& name, const Convertible& value) { enum class Property { Unknown, HeatmapRadius, HeatmapWeight, HeatmapIntensity, HeatmapColor, HeatmapOpacity, HeatmapRadiusTransition, HeatmapWeightTransition, HeatmapIntensityTransition, HeatmapColorTransition, HeatmapOpacityTransition, }; Property property = Property::Unknown; switch (util::hashFNV1a(name.c_str())) { case util::hashFNV1a("heatmap-radius"): if (name == "heatmap-radius") { property = Property::HeatmapRadius; } break; case util::hashFNV1a("heatmap-radius-transition"): if (name == "heatmap-radius-transition") { property = Property::HeatmapRadiusTransition; } break; case util::hashFNV1a("heatmap-weight"): if (name == "heatmap-weight") { property = Property::HeatmapWeight; } break; case util::hashFNV1a("heatmap-weight-transition"): if (name == "heatmap-weight-transition") { property = Property::HeatmapWeightTransition; } break; case util::hashFNV1a("heatmap-intensity"): if (name == "heatmap-intensity") { property = Property::HeatmapIntensity; } break; case util::hashFNV1a("heatmap-intensity-transition"): if (name == "heatmap-intensity-transition") { property = Property::HeatmapIntensityTransition; } break; case util::hashFNV1a("heatmap-color"): if (name == "heatmap-color") { property = Property::HeatmapColor; } break; case util::hashFNV1a("heatmap-color-transition"): if (name == "heatmap-color-transition") { property = Property::HeatmapColorTransition; } break; case util::hashFNV1a("heatmap-opacity"): if (name == "heatmap-opacity") { property = Property::HeatmapOpacity; } break; case util::hashFNV1a("heatmap-opacity-transition"): if (name == "heatmap-opacity-transition") { property = Property::HeatmapOpacityTransition; } break; } if (property == Property::Unknown) { return Error { "layer doesn't support this property" }; } if (property == Property::HeatmapRadius || property == Property::HeatmapWeight) { Error error; optional> typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } if (property == Property::HeatmapRadius) { setHeatmapRadius(*typedValue); return nullopt; } if (property == Property::HeatmapWeight) { setHeatmapWeight(*typedValue); return nullopt; } } if (property == Property::HeatmapIntensity || property == Property::HeatmapOpacity) { Error error; optional> typedValue = convert>(value, error, false, false); if (!typedValue) { return error; } if (property == Property::HeatmapIntensity) { setHeatmapIntensity(*typedValue); return nullopt; } if (property == Property::HeatmapOpacity) { setHeatmapOpacity(*typedValue); return nullopt; } } if (property == Property::HeatmapColor) { Error error; optional typedValue = convert(value, error, false, false); if (!typedValue) { return error; } setHeatmapColor(*typedValue); return nullopt; } Error error; optional transition = convert(value, error); if (!transition) { return error; } if (property == Property::HeatmapRadiusTransition) { setHeatmapRadiusTransition(*transition); return nullopt; } if (property == Property::HeatmapWeightTransition) { setHeatmapWeightTransition(*transition); return nullopt; } if (property == Property::HeatmapIntensityTransition) { setHeatmapIntensityTransition(*transition); return nullopt; } if (property == Property::HeatmapColorTransition) { setHeatmapColorTransition(*transition); return nullopt; } if (property == Property::HeatmapOpacityTransition) { setHeatmapOpacityTransition(*transition); return nullopt; } return Error { "layer doesn't support this property" }; } optional HeatmapLayer::setLayoutProperty(const std::string& name, const Convertible& value) { if (name == "visibility") { return Layer::setVisibility(value); } enum class Property { Unknown, }; Property property = Property::Unknown; switch (util::hashFNV1a(name.c_str())) { } if (property == Property::Unknown) { return Error { "layer doesn't support this property" }; } return Error { "layer doesn't support this property" }; } Mutable HeatmapLayer::mutableBaseImpl() const { return staticMutableCast(mutableImpl()); } HeatmapLayerFactory* HeatmapLayerFactory::instance = nullptr; HeatmapLayerFactory::HeatmapLayerFactory() { assert(!instance); instance = this; } HeatmapLayerFactory::~HeatmapLayerFactory() = default; // static HeatmapLayerFactory* HeatmapLayerFactory::get() noexcept { assert(instance); return instance; } bool HeatmapLayerFactory::supportsType(const std::string& type) const noexcept { return type == "heatmap"; } std::unique_ptr HeatmapLayerFactory::createLayer(const std::string& id, const conversion::Convertible& value) { optional source = getSource(value); if (!source) { return nullptr; } std::unique_ptr layer = std::unique_ptr(new HeatmapLayer(id, *source)); if (!initSourceLayerAndFilter(layer.get(), value)) { return nullptr; } return layer; } } // namespace style } // namespace mbgl