// 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 #include namespace mbgl { namespace style { // static const LayerTypeInfo* FillExtrusionLayer::Impl::staticTypeInfo() noexcept { const static LayerTypeInfo typeInfo{"fill-extrusion", LayerTypeInfo::Source::Required, LayerTypeInfo::Pass3D::Required, LayerTypeInfo::Layout::Required, LayerTypeInfo::FadingTiles::NotRequired, LayerTypeInfo::CrossTileIndex::NotRequired, LayerTypeInfo::TileKind::Geometry}; return &typeInfo; } FillExtrusionLayer::FillExtrusionLayer(const std::string& layerID, const std::string& sourceID) : Layer(makeMutable(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 { } // Layout properties // Paint properties PropertyValue FillExtrusionLayer::getDefaultFillExtrusionBase() { return {0}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionBase() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionBase(const 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; } PropertyValue FillExtrusionLayer::getDefaultFillExtrusionColor() { return {Color::black()}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionColor() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionColor(const 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::getDefaultFillExtrusionHeight() { return {0}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionHeight() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionHeight(const 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::getDefaultFillExtrusionOpacity() { return {1}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionOpacity() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionOpacity(const 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::getDefaultFillExtrusionPattern() { return {{}}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionPattern() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionPattern(const 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::getDefaultFillExtrusionTranslate() { return {{{0, 0}}}; } const PropertyValue>& FillExtrusionLayer::getFillExtrusionTranslate() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionTranslate(const 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}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionTranslateAnchor() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionTranslateAnchor(const 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::getDefaultFillExtrusionVerticalGradient() { return {true}; } const PropertyValue& FillExtrusionLayer::getFillExtrusionVerticalGradient() const { return impl().paint.template get().value; } void FillExtrusionLayer::setFillExtrusionVerticalGradient(const PropertyValue& value) { if (value == getFillExtrusionVerticalGradient()) return; auto impl_ = mutableImpl(); impl_->paint.template get().value = value; baseImpl = std::move(impl_); observer->onLayerChanged(*this); } void FillExtrusionLayer::setFillExtrusionVerticalGradientTransition(const TransitionOptions& options) { auto impl_ = mutableImpl(); impl_->paint.template get().options = options; baseImpl = std::move(impl_); } TransitionOptions FillExtrusionLayer::getFillExtrusionVerticalGradientTransition() const { return impl().paint.template get().options; } using namespace conversion; namespace { constexpr uint8_t kPaintPropertyCount = 16u; enum class Property : uint8_t { FillExtrusionBase, FillExtrusionColor, FillExtrusionHeight, FillExtrusionOpacity, FillExtrusionPattern, FillExtrusionTranslate, FillExtrusionTranslateAnchor, FillExtrusionVerticalGradient, FillExtrusionBaseTransition, FillExtrusionColorTransition, FillExtrusionHeightTransition, FillExtrusionOpacityTransition, FillExtrusionPatternTransition, FillExtrusionTranslateTransition, FillExtrusionTranslateAnchorTransition, FillExtrusionVerticalGradientTransition, }; template constexpr uint8_t toUint8(T t) noexcept { return uint8_t(mbgl::underlying_type(t)); } MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map( {{"fill-extrusion-base", toUint8(Property::FillExtrusionBase)}, {"fill-extrusion-color", toUint8(Property::FillExtrusionColor)}, {"fill-extrusion-height", toUint8(Property::FillExtrusionHeight)}, {"fill-extrusion-opacity", toUint8(Property::FillExtrusionOpacity)}, {"fill-extrusion-pattern", toUint8(Property::FillExtrusionPattern)}, {"fill-extrusion-translate", toUint8(Property::FillExtrusionTranslate)}, {"fill-extrusion-translate-anchor", toUint8(Property::FillExtrusionTranslateAnchor)}, {"fill-extrusion-vertical-gradient", toUint8(Property::FillExtrusionVerticalGradient)}, {"fill-extrusion-base-transition", toUint8(Property::FillExtrusionBaseTransition)}, {"fill-extrusion-color-transition", toUint8(Property::FillExtrusionColorTransition)}, {"fill-extrusion-height-transition", toUint8(Property::FillExtrusionHeightTransition)}, {"fill-extrusion-opacity-transition", toUint8(Property::FillExtrusionOpacityTransition)}, {"fill-extrusion-pattern-transition", toUint8(Property::FillExtrusionPatternTransition)}, {"fill-extrusion-translate-transition", toUint8(Property::FillExtrusionTranslateTransition)}, {"fill-extrusion-translate-anchor-transition", toUint8(Property::FillExtrusionTranslateAnchorTransition)}, {"fill-extrusion-vertical-gradient-transition", toUint8(Property::FillExtrusionVerticalGradientTransition)}}); StyleProperty getLayerProperty(const FillExtrusionLayer& layer, Property property) { switch (property) { case Property::FillExtrusionBase: return makeStyleProperty(layer.getFillExtrusionBase()); case Property::FillExtrusionColor: return makeStyleProperty(layer.getFillExtrusionColor()); case Property::FillExtrusionHeight: return makeStyleProperty(layer.getFillExtrusionHeight()); case Property::FillExtrusionOpacity: return makeStyleProperty(layer.getFillExtrusionOpacity()); case Property::FillExtrusionPattern: return makeStyleProperty(layer.getFillExtrusionPattern()); case Property::FillExtrusionTranslate: return makeStyleProperty(layer.getFillExtrusionTranslate()); case Property::FillExtrusionTranslateAnchor: return makeStyleProperty(layer.getFillExtrusionTranslateAnchor()); case Property::FillExtrusionVerticalGradient: return makeStyleProperty(layer.getFillExtrusionVerticalGradient()); case Property::FillExtrusionBaseTransition: return makeStyleProperty(layer.getFillExtrusionBaseTransition()); case Property::FillExtrusionColorTransition: return makeStyleProperty(layer.getFillExtrusionColorTransition()); case Property::FillExtrusionHeightTransition: return makeStyleProperty(layer.getFillExtrusionHeightTransition()); case Property::FillExtrusionOpacityTransition: return makeStyleProperty(layer.getFillExtrusionOpacityTransition()); case Property::FillExtrusionPatternTransition: return makeStyleProperty(layer.getFillExtrusionPatternTransition()); case Property::FillExtrusionTranslateTransition: return makeStyleProperty(layer.getFillExtrusionTranslateTransition()); case Property::FillExtrusionTranslateAnchorTransition: return makeStyleProperty(layer.getFillExtrusionTranslateAnchorTransition()); case Property::FillExtrusionVerticalGradientTransition: return makeStyleProperty(layer.getFillExtrusionVerticalGradientTransition()); } return {}; } StyleProperty getLayerProperty(const FillExtrusionLayer& layer, const std::string& name) { const auto it = layerProperties.find(name.c_str()); if (it == layerProperties.end()) { return {}; } return getLayerProperty(layer, static_cast(it->second)); } } // namespace Value FillExtrusionLayer::serialize() const { auto result = Layer::serialize(); assert(result.getObject()); for (const auto& property : layerProperties) { auto styleProperty = getLayerProperty(*this, static_cast(property.second)); if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue; serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount); } return result; } optional FillExtrusionLayer::setProperty(const std::string& name, const Convertible& value) { const auto it = layerProperties.find(name.c_str()); if (it == layerProperties.end()) { if (name == "visibility") return setVisibility(value); return Error{"layer doesn't support this property"}; } auto property = static_cast(it->second); if (property == Property::FillExtrusionBase || property == Property::FillExtrusionHeight) { Error error; const auto& typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } if (property == Property::FillExtrusionBase) { setFillExtrusionBase(*typedValue); return nullopt; } if (property == Property::FillExtrusionHeight) { setFillExtrusionHeight(*typedValue); return nullopt; } } if (property == Property::FillExtrusionColor) { Error error; const auto& typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } setFillExtrusionColor(*typedValue); return nullopt; } if (property == Property::FillExtrusionOpacity) { Error error; const auto& typedValue = convert>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionOpacity(*typedValue); return nullopt; } if (property == Property::FillExtrusionPattern) { Error error; const auto& typedValue = convert>(value, error, true, false); if (!typedValue) { return error; } setFillExtrusionPattern(*typedValue); return nullopt; } if (property == Property::FillExtrusionTranslate) { Error error; const auto& typedValue = convert>>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionTranslate(*typedValue); return nullopt; } if (property == Property::FillExtrusionTranslateAnchor) { Error error; const auto& typedValue = convert>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionTranslateAnchor(*typedValue); return nullopt; } if (property == Property::FillExtrusionVerticalGradient) { Error error; const auto& typedValue = convert>(value, error, false, false); if (!typedValue) { return error; } setFillExtrusionVerticalGradient(*typedValue); return nullopt; } Error error; optional transition = convert(value, error); if (!transition) { return error; } if (property == Property::FillExtrusionBaseTransition) { setFillExtrusionBaseTransition(*transition); return nullopt; } if (property == Property::FillExtrusionColorTransition) { setFillExtrusionColorTransition(*transition); return nullopt; } if (property == Property::FillExtrusionHeightTransition) { setFillExtrusionHeightTransition(*transition); return nullopt; } if (property == Property::FillExtrusionOpacityTransition) { setFillExtrusionOpacityTransition(*transition); return nullopt; } if (property == Property::FillExtrusionPatternTransition) { setFillExtrusionPatternTransition(*transition); return nullopt; } if (property == Property::FillExtrusionTranslateTransition) { setFillExtrusionTranslateTransition(*transition); return nullopt; } if (property == Property::FillExtrusionTranslateAnchorTransition) { setFillExtrusionTranslateAnchorTransition(*transition); return nullopt; } if (property == Property::FillExtrusionVerticalGradientTransition) { setFillExtrusionVerticalGradientTransition(*transition); return nullopt; } return Error{"layer doesn't support this property"}; } StyleProperty FillExtrusionLayer::getProperty(const std::string& name) const { return getLayerProperty(*this, name); } Mutable FillExtrusionLayer::mutableBaseImpl() const { return staticMutableCast(mutableImpl()); } } // namespace style } // namespace mbgl