// 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 { FillExtrusionLayer::FillExtrusionLayer(const std::string& layerID, const std::string& sourceID) : Layer(makeMutable(LayerType::FillExtrusion, layerID, sourceID)) { } FillExtrusionLayer::FillExtrusionLayer(Immutable impl_) : Layer(std::move(impl_)) { } FillExtrusionLayer::~FillExtrusionLayer() = default; const FillExtrusionLayer::Impl& FillExtrusionLayer::impl() const { return static_cast(*baseImpl); } Mutable FillExtrusionLayer::mutableImpl() const { return makeMutable(impl()); } std::unique_ptr FillExtrusionLayer::cloneRef(const std::string& id_) const { auto impl_ = mutableImpl(); impl_->id = id_; impl_->paint = FillExtrusionPaintProperties::Transitionable(); return std::make_unique(std::move(impl_)); } void FillExtrusionLayer::Impl::stringifyLayout(rapidjson::Writer&) const { } LayerFactory* FillExtrusionLayer::Impl::getLayerFactory() const noexcept { return FillExtrusionLayerFactory::get(); } // Layout properties // Paint properties PropertyValue FillExtrusionLayer::getDefaultFillExtrusionOpacity() { return { 1 }; } PropertyValue FillExtrusionLayer::getFillExtrusionOpacity() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionOpacity(PropertyValue value) { if (value == getFillExtrusionOpacity()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionOpacityTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionOpacityTransition() const { return impl().paint.template get().options; } PropertyValue FillExtrusionLayer::getDefaultFillExtrusionColor() { return { Color::black() }; } PropertyValue FillExtrusionLayer::getFillExtrusionColor() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionColor(PropertyValue value) { if (value == getFillExtrusionColor()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionColorTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionColorTransition() const { return impl().paint.template get().options; } PropertyValue> FillExtrusionLayer::getDefaultFillExtrusionTranslate() { return { {{ 0, 0 }} }; } PropertyValue> FillExtrusionLayer::getFillExtrusionTranslate() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionTranslate(PropertyValue> value) { if (value == getFillExtrusionTranslate()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionTranslateTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionTranslateTransition() const { return impl().paint.template get().options; } PropertyValue FillExtrusionLayer::getDefaultFillExtrusionTranslateAnchor() { return { TranslateAnchorType::Map }; } PropertyValue FillExtrusionLayer::getFillExtrusionTranslateAnchor() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionTranslateAnchor(PropertyValue value) { if (value == getFillExtrusionTranslateAnchor()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionTranslateAnchorTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionTranslateAnchorTransition() const { return impl().paint.template get().options; } PropertyValue FillExtrusionLayer::getDefaultFillExtrusionPattern() { return { "" }; } PropertyValue FillExtrusionLayer::getFillExtrusionPattern() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionPattern(PropertyValue value) { if (value == getFillExtrusionPattern()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionPatternTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionPatternTransition() const { return impl().paint.template get().options; } PropertyValue FillExtrusionLayer::getDefaultFillExtrusionHeight() { return { 0 }; } PropertyValue FillExtrusionLayer::getFillExtrusionHeight() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionHeight(PropertyValue value) { if (value == getFillExtrusionHeight()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionHeightTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionHeightTransition() const { return impl().paint.template get().options; } PropertyValue FillExtrusionLayer::getDefaultFillExtrusionBase() { return { 0 }; } PropertyValue FillExtrusionLayer::getFillExtrusionBase() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionBase(PropertyValue value) { if (value == getFillExtrusionBase()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionBaseTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionBaseTransition() const { return impl().paint.template get().options; } using namespace conversion; optional FillExtrusionLayer::setPaintProperty(const std::string& name, const Convertible& value) { enum class Property { Unknown, FillExtrusionOpacity, FillExtrusionColor, FillExtrusionTranslate, FillExtrusionTranslateAnchor, FillExtrusionPattern, FillExtrusionHeight, FillExtrusionBase, FillExtrusionOpacityTransition, FillExtrusionColorTransition, FillExtrusionTranslateTransition, FillExtrusionTranslateAnchorTransition, FillExtrusionPatternTransition, FillExtrusionHeightTransition, FillExtrusionBaseTransition, }; Property property = Property::Unknown; switch (util::hashFNV1a(name.c_str())) { case util::hashFNV1a("fill-extrusion-opacity"): if (name == "fill-extrusion-opacity") { property = Property::FillExtrusionOpacity; } break; case util::hashFNV1a("fill-extrusion-opacity-transition"): if (name == "fill-extrusion-opacity-transition") { property = Property::FillExtrusionOpacityTransition; } break; case util::hashFNV1a("fill-extrusion-color"): if (name == "fill-extrusion-color") { property = Property::FillExtrusionColor; } break; case util::hashFNV1a("fill-extrusion-color-transition"): if (name == "fill-extrusion-color-transition") { property = Property::FillExtrusionColorTransition; } break; case util::hashFNV1a("fill-extrusion-translate"): if (name == "fill-extrusion-translate") { property = Property::FillExtrusionTranslate; } break; case util::hashFNV1a("fill-extrusion-translate-transition"): if (name == "fill-extrusion-translate-transition") { property = Property::FillExtrusionTranslateTransition; } break; case util::hashFNV1a("fill-extrusion-translate-anchor"): if (name == "fill-extrusion-translate-anchor") { property = Property::FillExtrusionTranslateAnchor; } break; case util::hashFNV1a("fill-extrusion-translate-anchor-transition"): if (name == "fill-extrusion-translate-anchor-transition") { property = Property::FillExtrusionTranslateAnchorTransition; } break; case util::hashFNV1a("fill-extrusion-pattern"): if (name == "fill-extrusion-pattern") { property = Property::FillExtrusionPattern; } break; case util::hashFNV1a("fill-extrusion-pattern-transition"): if (name == "fill-extrusion-pattern-transition") { property = Property::FillExtrusionPatternTransition; } break; case util::hashFNV1a("fill-extrusion-height"): if (name == "fill-extrusion-height") { property = Property::FillExtrusionHeight; } break; case util::hashFNV1a("fill-extrusion-height-transition"): if (name == "fill-extrusion-height-transition") { property = Property::FillExtrusionHeightTransition; } break; case util::hashFNV1a("fill-extrusion-base"): if (name == "fill-extrusion-base") { property = Property::FillExtrusionBase; } break; case util::hashFNV1a("fill-extrusion-base-transition"): if (name == "fill-extrusion-base-transition") { property = Property::FillExtrusionBaseTransition; } break; } if (property == Property::Unknown) { return Error { "layer doesn't support this property" }; } if (property == Property::FillExtrusionOpacity) { Error error; optional> typedValue = convert>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionOpacity(*typedValue); return nullopt; } if (property == Property::FillExtrusionColor) { Error error; optional> typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } setFillExtrusionColor(*typedValue); return nullopt; } if (property == Property::FillExtrusionTranslate) { Error error; optional>> typedValue = convert>>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionTranslate(*typedValue); return nullopt; } if (property == Property::FillExtrusionTranslateAnchor) { Error error; optional> typedValue = convert>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionTranslateAnchor(*typedValue); return nullopt; } if (property == Property::FillExtrusionPattern) { Error error; optional> typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } setFillExtrusionPattern(*typedValue); return nullopt; } if (property == Property::FillExtrusionHeight || property == Property::FillExtrusionBase) { Error error; optional> typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } if (property == Property::FillExtrusionHeight) { setFillExtrusionHeight(*typedValue); return nullopt; } if (property == Property::FillExtrusionBase) { setFillExtrusionBase(*typedValue); return nullopt; } } Error error; optional transition = convert(value, error); if (!transition) { return error; } if (property == Property::FillExtrusionOpacityTransition) { setFillExtrusionOpacityTransition(*transition); return nullopt; } if (property == Property::FillExtrusionColorTransition) { setFillExtrusionColorTransition(*transition); return nullopt; } if (property == Property::FillExtrusionTranslateTransition) { setFillExtrusionTranslateTransition(*transition); return nullopt; } if (property == Property::FillExtrusionTranslateAnchorTransition) { setFillExtrusionTranslateAnchorTransition(*transition); return nullopt; } if (property == Property::FillExtrusionPatternTransition) { setFillExtrusionPatternTransition(*transition); return nullopt; } if (property == Property::FillExtrusionHeightTransition) { setFillExtrusionHeightTransition(*transition); return nullopt; } if (property == Property::FillExtrusionBaseTransition) { setFillExtrusionBaseTransition(*transition); return nullopt; } return Error { "layer doesn't support this property" }; } optional FillExtrusionLayer::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 FillExtrusionLayer::mutableBaseImpl() const { return staticMutableCast(mutableImpl()); } FillExtrusionLayerFactory* FillExtrusionLayerFactory::instance = nullptr; FillExtrusionLayerFactory::FillExtrusionLayerFactory() { assert(!instance); instance = this; } FillExtrusionLayerFactory::~FillExtrusionLayerFactory() = default; // static FillExtrusionLayerFactory* FillExtrusionLayerFactory::get() noexcept { assert(instance); return instance; } bool FillExtrusionLayerFactory::supportsType(const std::string& type) const noexcept { return type == "fill-extrusion"; } std::unique_ptr FillExtrusionLayerFactory::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 FillExtrusionLayer(id, *source)); if (!initSourceLayerAndFilter(layer.get(), value)) { return nullptr; } return layer; } } // namespace style } // namespace mbgl