[core] Generate layer code

This commit is contained in:
Alexander Shalamov
2020-02-25 10:21:46 +02:00
parent 713299c429
commit 8785f77cd6
18 changed files with 659 additions and 461 deletions

View File

@@ -24,6 +24,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Paint properties

View File

@@ -24,6 +24,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Paint properties

View File

@@ -24,6 +24,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Paint properties

View File

@@ -24,6 +24,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Layout properties

View File

@@ -25,6 +25,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Paint properties

View File

@@ -24,6 +24,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Paint properties

View File

@@ -27,6 +27,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Layout properties

View File

@@ -24,6 +24,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Paint properties

View File

@@ -26,6 +26,7 @@ public:
optional<conversion::Error> setProperty(const std::string& name, const conversion::Convertible& value) final;
StyleProperty getProperty(const std::string& name) const final;
Value serialize() const final;
// Layout properties

View File

@@ -148,6 +148,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 6u;
enum class Property : uint8_t {
BackgroundColor,
BackgroundOpacity,
@@ -169,8 +171,46 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"background-color-transition", toUint8(Property::BackgroundColorTransition)},
{"background-opacity-transition", toUint8(Property::BackgroundOpacityTransition)},
{"background-pattern-transition", toUint8(Property::BackgroundPatternTransition)}});
StyleProperty getLayerProperty(const BackgroundLayer& layer, Property property) {
switch (property) {
case Property::BackgroundColor:
return makeStyleProperty(layer.getBackgroundColor());
case Property::BackgroundOpacity:
return makeStyleProperty(layer.getBackgroundOpacity());
case Property::BackgroundPattern:
return makeStyleProperty(layer.getBackgroundPattern());
case Property::BackgroundColorTransition:
return makeStyleProperty(layer.getBackgroundColorTransition());
case Property::BackgroundOpacityTransition:
return makeStyleProperty(layer.getBackgroundOpacityTransition());
case Property::BackgroundPatternTransition:
return makeStyleProperty(layer.getBackgroundPatternTransition());
}
return {};
}
StyleProperty getLayerProperty(const BackgroundLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value BackgroundLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> BackgroundLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -236,26 +276,7 @@ optional<Error> BackgroundLayer::setProperty(const std::string& name, const Conv
}
StyleProperty BackgroundLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::BackgroundColor:
return makeStyleProperty(getBackgroundColor());
case Property::BackgroundOpacity:
return makeStyleProperty(getBackgroundOpacity());
case Property::BackgroundPattern:
return makeStyleProperty(getBackgroundPattern());
case Property::BackgroundColorTransition:
return makeStyleProperty(getBackgroundColorTransition());
case Property::BackgroundOpacityTransition:
return makeStyleProperty(getBackgroundOpacityTransition());
case Property::BackgroundPatternTransition:
return makeStyleProperty(getBackgroundPatternTransition());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> BackgroundLayer::mutableBaseImpl() const {

View File

@@ -364,6 +364,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 22u;
enum class Property : uint8_t {
CircleBlur,
CircleColor,
@@ -417,8 +419,78 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"circle-stroke-width-transition", toUint8(Property::CircleStrokeWidthTransition)},
{"circle-translate-transition", toUint8(Property::CircleTranslateTransition)},
{"circle-translate-anchor-transition", toUint8(Property::CircleTranslateAnchorTransition)}});
StyleProperty getLayerProperty(const CircleLayer& layer, Property property) {
switch (property) {
case Property::CircleBlur:
return makeStyleProperty(layer.getCircleBlur());
case Property::CircleColor:
return makeStyleProperty(layer.getCircleColor());
case Property::CircleOpacity:
return makeStyleProperty(layer.getCircleOpacity());
case Property::CirclePitchAlignment:
return makeStyleProperty(layer.getCirclePitchAlignment());
case Property::CirclePitchScale:
return makeStyleProperty(layer.getCirclePitchScale());
case Property::CircleRadius:
return makeStyleProperty(layer.getCircleRadius());
case Property::CircleStrokeColor:
return makeStyleProperty(layer.getCircleStrokeColor());
case Property::CircleStrokeOpacity:
return makeStyleProperty(layer.getCircleStrokeOpacity());
case Property::CircleStrokeWidth:
return makeStyleProperty(layer.getCircleStrokeWidth());
case Property::CircleTranslate:
return makeStyleProperty(layer.getCircleTranslate());
case Property::CircleTranslateAnchor:
return makeStyleProperty(layer.getCircleTranslateAnchor());
case Property::CircleBlurTransition:
return makeStyleProperty(layer.getCircleBlurTransition());
case Property::CircleColorTransition:
return makeStyleProperty(layer.getCircleColorTransition());
case Property::CircleOpacityTransition:
return makeStyleProperty(layer.getCircleOpacityTransition());
case Property::CirclePitchAlignmentTransition:
return makeStyleProperty(layer.getCirclePitchAlignmentTransition());
case Property::CirclePitchScaleTransition:
return makeStyleProperty(layer.getCirclePitchScaleTransition());
case Property::CircleRadiusTransition:
return makeStyleProperty(layer.getCircleRadiusTransition());
case Property::CircleStrokeColorTransition:
return makeStyleProperty(layer.getCircleStrokeColorTransition());
case Property::CircleStrokeOpacityTransition:
return makeStyleProperty(layer.getCircleStrokeOpacityTransition());
case Property::CircleStrokeWidthTransition:
return makeStyleProperty(layer.getCircleStrokeWidthTransition());
case Property::CircleTranslateTransition:
return makeStyleProperty(layer.getCircleTranslateTransition());
case Property::CircleTranslateAnchorTransition:
return makeStyleProperty(layer.getCircleTranslateAnchorTransition());
}
return {};
}
StyleProperty getLayerProperty(const CircleLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value CircleLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> CircleLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -584,58 +656,7 @@ optional<Error> CircleLayer::setProperty(const std::string& name, const Converti
}
StyleProperty CircleLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::CircleBlur:
return makeStyleProperty(getCircleBlur());
case Property::CircleColor:
return makeStyleProperty(getCircleColor());
case Property::CircleOpacity:
return makeStyleProperty(getCircleOpacity());
case Property::CirclePitchAlignment:
return makeStyleProperty(getCirclePitchAlignment());
case Property::CirclePitchScale:
return makeStyleProperty(getCirclePitchScale());
case Property::CircleRadius:
return makeStyleProperty(getCircleRadius());
case Property::CircleStrokeColor:
return makeStyleProperty(getCircleStrokeColor());
case Property::CircleStrokeOpacity:
return makeStyleProperty(getCircleStrokeOpacity());
case Property::CircleStrokeWidth:
return makeStyleProperty(getCircleStrokeWidth());
case Property::CircleTranslate:
return makeStyleProperty(getCircleTranslate());
case Property::CircleTranslateAnchor:
return makeStyleProperty(getCircleTranslateAnchor());
case Property::CircleBlurTransition:
return makeStyleProperty(getCircleBlurTransition());
case Property::CircleColorTransition:
return makeStyleProperty(getCircleColorTransition());
case Property::CircleOpacityTransition:
return makeStyleProperty(getCircleOpacityTransition());
case Property::CirclePitchAlignmentTransition:
return makeStyleProperty(getCirclePitchAlignmentTransition());
case Property::CirclePitchScaleTransition:
return makeStyleProperty(getCirclePitchScaleTransition());
case Property::CircleRadiusTransition:
return makeStyleProperty(getCircleRadiusTransition());
case Property::CircleStrokeColorTransition:
return makeStyleProperty(getCircleStrokeColorTransition());
case Property::CircleStrokeOpacityTransition:
return makeStyleProperty(getCircleStrokeOpacityTransition());
case Property::CircleStrokeWidthTransition:
return makeStyleProperty(getCircleStrokeWidthTransition());
case Property::CircleTranslateTransition:
return makeStyleProperty(getCircleTranslateTransition());
case Property::CircleTranslateAnchorTransition:
return makeStyleProperty(getCircleTranslateAnchorTransition());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> CircleLayer::mutableBaseImpl() const {

View File

@@ -283,6 +283,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 16u;
enum class Property : uint8_t {
FillExtrusionBase,
FillExtrusionColor,
@@ -324,8 +326,66 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"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<Property>(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>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> FillExtrusionLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -463,46 +523,7 @@ optional<Error> FillExtrusionLayer::setProperty(const std::string& name, const C
}
StyleProperty FillExtrusionLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::FillExtrusionBase:
return makeStyleProperty(getFillExtrusionBase());
case Property::FillExtrusionColor:
return makeStyleProperty(getFillExtrusionColor());
case Property::FillExtrusionHeight:
return makeStyleProperty(getFillExtrusionHeight());
case Property::FillExtrusionOpacity:
return makeStyleProperty(getFillExtrusionOpacity());
case Property::FillExtrusionPattern:
return makeStyleProperty(getFillExtrusionPattern());
case Property::FillExtrusionTranslate:
return makeStyleProperty(getFillExtrusionTranslate());
case Property::FillExtrusionTranslateAnchor:
return makeStyleProperty(getFillExtrusionTranslateAnchor());
case Property::FillExtrusionVerticalGradient:
return makeStyleProperty(getFillExtrusionVerticalGradient());
case Property::FillExtrusionBaseTransition:
return makeStyleProperty(getFillExtrusionBaseTransition());
case Property::FillExtrusionColorTransition:
return makeStyleProperty(getFillExtrusionColorTransition());
case Property::FillExtrusionHeightTransition:
return makeStyleProperty(getFillExtrusionHeightTransition());
case Property::FillExtrusionOpacityTransition:
return makeStyleProperty(getFillExtrusionOpacityTransition());
case Property::FillExtrusionPatternTransition:
return makeStyleProperty(getFillExtrusionPatternTransition());
case Property::FillExtrusionTranslateTransition:
return makeStyleProperty(getFillExtrusionTranslateTransition());
case Property::FillExtrusionTranslateAnchorTransition:
return makeStyleProperty(getFillExtrusionTranslateAnchorTransition());
case Property::FillExtrusionVerticalGradientTransition:
return makeStyleProperty(getFillExtrusionVerticalGradientTransition());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> FillExtrusionLayer::mutableBaseImpl() const {

View File

@@ -272,6 +272,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 14u;
enum class Property : uint8_t {
FillAntialias,
FillColor,
@@ -287,7 +289,7 @@ enum class Property : uint8_t {
FillPatternTransition,
FillTranslateTransition,
FillTranslateAnchorTransition,
FillSortKey,
FillSortKey = kPaintPropertyCount,
};
template <typename T>
@@ -311,8 +313,64 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"fill-translate-transition", toUint8(Property::FillTranslateTransition)},
{"fill-translate-anchor-transition", toUint8(Property::FillTranslateAnchorTransition)},
{"fill-sort-key", toUint8(Property::FillSortKey)}});
StyleProperty getLayerProperty(const FillLayer& layer, Property property) {
switch (property) {
case Property::FillAntialias:
return makeStyleProperty(layer.getFillAntialias());
case Property::FillColor:
return makeStyleProperty(layer.getFillColor());
case Property::FillOpacity:
return makeStyleProperty(layer.getFillOpacity());
case Property::FillOutlineColor:
return makeStyleProperty(layer.getFillOutlineColor());
case Property::FillPattern:
return makeStyleProperty(layer.getFillPattern());
case Property::FillTranslate:
return makeStyleProperty(layer.getFillTranslate());
case Property::FillTranslateAnchor:
return makeStyleProperty(layer.getFillTranslateAnchor());
case Property::FillAntialiasTransition:
return makeStyleProperty(layer.getFillAntialiasTransition());
case Property::FillColorTransition:
return makeStyleProperty(layer.getFillColorTransition());
case Property::FillOpacityTransition:
return makeStyleProperty(layer.getFillOpacityTransition());
case Property::FillOutlineColorTransition:
return makeStyleProperty(layer.getFillOutlineColorTransition());
case Property::FillPatternTransition:
return makeStyleProperty(layer.getFillPatternTransition());
case Property::FillTranslateTransition:
return makeStyleProperty(layer.getFillTranslateTransition());
case Property::FillTranslateAnchorTransition:
return makeStyleProperty(layer.getFillTranslateAnchorTransition());
case Property::FillSortKey:
return makeStyleProperty(layer.getFillSortKey());
}
return {};
}
StyleProperty getLayerProperty(const FillLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value FillLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> FillLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -442,44 +500,7 @@ optional<Error> FillLayer::setProperty(const std::string& name, const Convertibl
}
StyleProperty FillLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::FillAntialias:
return makeStyleProperty(getFillAntialias());
case Property::FillColor:
return makeStyleProperty(getFillColor());
case Property::FillOpacity:
return makeStyleProperty(getFillOpacity());
case Property::FillOutlineColor:
return makeStyleProperty(getFillOutlineColor());
case Property::FillPattern:
return makeStyleProperty(getFillPattern());
case Property::FillTranslate:
return makeStyleProperty(getFillTranslate());
case Property::FillTranslateAnchor:
return makeStyleProperty(getFillTranslateAnchor());
case Property::FillAntialiasTransition:
return makeStyleProperty(getFillAntialiasTransition());
case Property::FillColorTransition:
return makeStyleProperty(getFillColorTransition());
case Property::FillOpacityTransition:
return makeStyleProperty(getFillOpacityTransition());
case Property::FillOutlineColorTransition:
return makeStyleProperty(getFillOutlineColorTransition());
case Property::FillPatternTransition:
return makeStyleProperty(getFillPatternTransition());
case Property::FillTranslateTransition:
return makeStyleProperty(getFillTranslateTransition());
case Property::FillTranslateAnchorTransition:
return makeStyleProperty(getFillTranslateAnchorTransition());
case Property::FillSortKey:
return makeStyleProperty(getFillSortKey());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> FillLayer::mutableBaseImpl() const {

View File

@@ -204,6 +204,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 10u;
enum class Property : uint8_t {
HeatmapColor,
HeatmapIntensity,
@@ -233,8 +235,54 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"heatmap-opacity-transition", toUint8(Property::HeatmapOpacityTransition)},
{"heatmap-radius-transition", toUint8(Property::HeatmapRadiusTransition)},
{"heatmap-weight-transition", toUint8(Property::HeatmapWeightTransition)}});
StyleProperty getLayerProperty(const HeatmapLayer& layer, Property property) {
switch (property) {
case Property::HeatmapColor:
return makeStyleProperty(layer.getHeatmapColor());
case Property::HeatmapIntensity:
return makeStyleProperty(layer.getHeatmapIntensity());
case Property::HeatmapOpacity:
return makeStyleProperty(layer.getHeatmapOpacity());
case Property::HeatmapRadius:
return makeStyleProperty(layer.getHeatmapRadius());
case Property::HeatmapWeight:
return makeStyleProperty(layer.getHeatmapWeight());
case Property::HeatmapColorTransition:
return makeStyleProperty(layer.getHeatmapColorTransition());
case Property::HeatmapIntensityTransition:
return makeStyleProperty(layer.getHeatmapIntensityTransition());
case Property::HeatmapOpacityTransition:
return makeStyleProperty(layer.getHeatmapOpacityTransition());
case Property::HeatmapRadiusTransition:
return makeStyleProperty(layer.getHeatmapRadiusTransition());
case Property::HeatmapWeightTransition:
return makeStyleProperty(layer.getHeatmapWeightTransition());
}
return {};
}
StyleProperty getLayerProperty(const HeatmapLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value HeatmapLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> HeatmapLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -324,34 +372,7 @@ optional<Error> HeatmapLayer::setProperty(const std::string& name, const Convert
}
StyleProperty HeatmapLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::HeatmapColor:
return makeStyleProperty(getHeatmapColor());
case Property::HeatmapIntensity:
return makeStyleProperty(getHeatmapIntensity());
case Property::HeatmapOpacity:
return makeStyleProperty(getHeatmapOpacity());
case Property::HeatmapRadius:
return makeStyleProperty(getHeatmapRadius());
case Property::HeatmapWeight:
return makeStyleProperty(getHeatmapWeight());
case Property::HeatmapColorTransition:
return makeStyleProperty(getHeatmapColorTransition());
case Property::HeatmapIntensityTransition:
return makeStyleProperty(getHeatmapIntensityTransition());
case Property::HeatmapOpacityTransition:
return makeStyleProperty(getHeatmapOpacityTransition());
case Property::HeatmapRadiusTransition:
return makeStyleProperty(getHeatmapRadiusTransition());
case Property::HeatmapWeightTransition:
return makeStyleProperty(getHeatmapWeightTransition());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> HeatmapLayer::mutableBaseImpl() const {

View File

@@ -229,6 +229,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 12u;
enum class Property : uint8_t {
HillshadeAccentColor,
HillshadeExaggeration,
@@ -262,8 +264,58 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"hillshade-illumination-anchor-transition", toUint8(Property::HillshadeIlluminationAnchorTransition)},
{"hillshade-illumination-direction-transition", toUint8(Property::HillshadeIlluminationDirectionTransition)},
{"hillshade-shadow-color-transition", toUint8(Property::HillshadeShadowColorTransition)}});
StyleProperty getLayerProperty(const HillshadeLayer& layer, Property property) {
switch (property) {
case Property::HillshadeAccentColor:
return makeStyleProperty(layer.getHillshadeAccentColor());
case Property::HillshadeExaggeration:
return makeStyleProperty(layer.getHillshadeExaggeration());
case Property::HillshadeHighlightColor:
return makeStyleProperty(layer.getHillshadeHighlightColor());
case Property::HillshadeIlluminationAnchor:
return makeStyleProperty(layer.getHillshadeIlluminationAnchor());
case Property::HillshadeIlluminationDirection:
return makeStyleProperty(layer.getHillshadeIlluminationDirection());
case Property::HillshadeShadowColor:
return makeStyleProperty(layer.getHillshadeShadowColor());
case Property::HillshadeAccentColorTransition:
return makeStyleProperty(layer.getHillshadeAccentColorTransition());
case Property::HillshadeExaggerationTransition:
return makeStyleProperty(layer.getHillshadeExaggerationTransition());
case Property::HillshadeHighlightColorTransition:
return makeStyleProperty(layer.getHillshadeHighlightColorTransition());
case Property::HillshadeIlluminationAnchorTransition:
return makeStyleProperty(layer.getHillshadeIlluminationAnchorTransition());
case Property::HillshadeIlluminationDirectionTransition:
return makeStyleProperty(layer.getHillshadeIlluminationDirectionTransition());
case Property::HillshadeShadowColorTransition:
return makeStyleProperty(layer.getHillshadeShadowColorTransition());
}
return {};
}
StyleProperty getLayerProperty(const HillshadeLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value HillshadeLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> HillshadeLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -364,38 +416,7 @@ optional<Error> HillshadeLayer::setProperty(const std::string& name, const Conve
}
StyleProperty HillshadeLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::HillshadeAccentColor:
return makeStyleProperty(getHillshadeAccentColor());
case Property::HillshadeExaggeration:
return makeStyleProperty(getHillshadeExaggeration());
case Property::HillshadeHighlightColor:
return makeStyleProperty(getHillshadeHighlightColor());
case Property::HillshadeIlluminationAnchor:
return makeStyleProperty(getHillshadeIlluminationAnchor());
case Property::HillshadeIlluminationDirection:
return makeStyleProperty(getHillshadeIlluminationDirection());
case Property::HillshadeShadowColor:
return makeStyleProperty(getHillshadeShadowColor());
case Property::HillshadeAccentColorTransition:
return makeStyleProperty(getHillshadeAccentColorTransition());
case Property::HillshadeExaggerationTransition:
return makeStyleProperty(getHillshadeExaggerationTransition());
case Property::HillshadeHighlightColorTransition:
return makeStyleProperty(getHillshadeHighlightColorTransition());
case Property::HillshadeIlluminationAnchorTransition:
return makeStyleProperty(getHillshadeIlluminationAnchorTransition());
case Property::HillshadeIlluminationDirectionTransition:
return makeStyleProperty(getHillshadeIlluminationDirectionTransition());
case Property::HillshadeShadowColorTransition:
return makeStyleProperty(getHillshadeShadowColorTransition());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> HillshadeLayer::mutableBaseImpl() const {

View File

@@ -441,6 +441,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 22u;
enum class Property : uint8_t {
LineBlur,
LineColor,
@@ -464,7 +466,7 @@ enum class Property : uint8_t {
LineTranslateTransition,
LineTranslateAnchorTransition,
LineWidthTransition,
LineCap,
LineCap = kPaintPropertyCount,
LineJoin,
LineMiterLimit,
LineRoundLimit,
@@ -504,8 +506,88 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"line-miter-limit", toUint8(Property::LineMiterLimit)},
{"line-round-limit", toUint8(Property::LineRoundLimit)},
{"line-sort-key", toUint8(Property::LineSortKey)}});
StyleProperty getLayerProperty(const LineLayer& layer, Property property) {
switch (property) {
case Property::LineBlur:
return makeStyleProperty(layer.getLineBlur());
case Property::LineColor:
return makeStyleProperty(layer.getLineColor());
case Property::LineDasharray:
return makeStyleProperty(layer.getLineDasharray());
case Property::LineGapWidth:
return makeStyleProperty(layer.getLineGapWidth());
case Property::LineGradient:
return makeStyleProperty(layer.getLineGradient());
case Property::LineOffset:
return makeStyleProperty(layer.getLineOffset());
case Property::LineOpacity:
return makeStyleProperty(layer.getLineOpacity());
case Property::LinePattern:
return makeStyleProperty(layer.getLinePattern());
case Property::LineTranslate:
return makeStyleProperty(layer.getLineTranslate());
case Property::LineTranslateAnchor:
return makeStyleProperty(layer.getLineTranslateAnchor());
case Property::LineWidth:
return makeStyleProperty(layer.getLineWidth());
case Property::LineBlurTransition:
return makeStyleProperty(layer.getLineBlurTransition());
case Property::LineColorTransition:
return makeStyleProperty(layer.getLineColorTransition());
case Property::LineDasharrayTransition:
return makeStyleProperty(layer.getLineDasharrayTransition());
case Property::LineGapWidthTransition:
return makeStyleProperty(layer.getLineGapWidthTransition());
case Property::LineGradientTransition:
return makeStyleProperty(layer.getLineGradientTransition());
case Property::LineOffsetTransition:
return makeStyleProperty(layer.getLineOffsetTransition());
case Property::LineOpacityTransition:
return makeStyleProperty(layer.getLineOpacityTransition());
case Property::LinePatternTransition:
return makeStyleProperty(layer.getLinePatternTransition());
case Property::LineTranslateTransition:
return makeStyleProperty(layer.getLineTranslateTransition());
case Property::LineTranslateAnchorTransition:
return makeStyleProperty(layer.getLineTranslateAnchorTransition());
case Property::LineWidthTransition:
return makeStyleProperty(layer.getLineWidthTransition());
case Property::LineCap:
return makeStyleProperty(layer.getLineCap());
case Property::LineJoin:
return makeStyleProperty(layer.getLineJoin());
case Property::LineMiterLimit:
return makeStyleProperty(layer.getLineMiterLimit());
case Property::LineRoundLimit:
return makeStyleProperty(layer.getLineRoundLimit());
case Property::LineSortKey:
return makeStyleProperty(layer.getLineSortKey());
}
return {};
}
StyleProperty getLayerProperty(const LineLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value LineLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> LineLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -716,68 +798,7 @@ optional<Error> LineLayer::setProperty(const std::string& name, const Convertibl
}
StyleProperty LineLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::LineBlur:
return makeStyleProperty(getLineBlur());
case Property::LineColor:
return makeStyleProperty(getLineColor());
case Property::LineDasharray:
return makeStyleProperty(getLineDasharray());
case Property::LineGapWidth:
return makeStyleProperty(getLineGapWidth());
case Property::LineGradient:
return makeStyleProperty(getLineGradient());
case Property::LineOffset:
return makeStyleProperty(getLineOffset());
case Property::LineOpacity:
return makeStyleProperty(getLineOpacity());
case Property::LinePattern:
return makeStyleProperty(getLinePattern());
case Property::LineTranslate:
return makeStyleProperty(getLineTranslate());
case Property::LineTranslateAnchor:
return makeStyleProperty(getLineTranslateAnchor());
case Property::LineWidth:
return makeStyleProperty(getLineWidth());
case Property::LineBlurTransition:
return makeStyleProperty(getLineBlurTransition());
case Property::LineColorTransition:
return makeStyleProperty(getLineColorTransition());
case Property::LineDasharrayTransition:
return makeStyleProperty(getLineDasharrayTransition());
case Property::LineGapWidthTransition:
return makeStyleProperty(getLineGapWidthTransition());
case Property::LineGradientTransition:
return makeStyleProperty(getLineGradientTransition());
case Property::LineOffsetTransition:
return makeStyleProperty(getLineOffsetTransition());
case Property::LineOpacityTransition:
return makeStyleProperty(getLineOpacityTransition());
case Property::LinePatternTransition:
return makeStyleProperty(getLinePatternTransition());
case Property::LineTranslateTransition:
return makeStyleProperty(getLineTranslateTransition());
case Property::LineTranslateAnchorTransition:
return makeStyleProperty(getLineTranslateAnchorTransition());
case Property::LineWidthTransition:
return makeStyleProperty(getLineWidthTransition());
case Property::LineCap:
return makeStyleProperty(getLineCap());
case Property::LineJoin:
return makeStyleProperty(getLineJoin());
case Property::LineMiterLimit:
return makeStyleProperty(getLineMiterLimit());
case Property::LineRoundLimit:
return makeStyleProperty(getLineRoundLimit());
case Property::LineSortKey:
return makeStyleProperty(getLineSortKey());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> LineLayer::mutableBaseImpl() const {

View File

@@ -283,6 +283,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 16u;
enum class Property : uint8_t {
RasterBrightnessMax,
RasterBrightnessMin,
@@ -324,8 +326,66 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"raster-opacity-transition", toUint8(Property::RasterOpacityTransition)},
{"raster-resampling-transition", toUint8(Property::RasterResamplingTransition)},
{"raster-saturation-transition", toUint8(Property::RasterSaturationTransition)}});
StyleProperty getLayerProperty(const RasterLayer& layer, Property property) {
switch (property) {
case Property::RasterBrightnessMax:
return makeStyleProperty(layer.getRasterBrightnessMax());
case Property::RasterBrightnessMin:
return makeStyleProperty(layer.getRasterBrightnessMin());
case Property::RasterContrast:
return makeStyleProperty(layer.getRasterContrast());
case Property::RasterFadeDuration:
return makeStyleProperty(layer.getRasterFadeDuration());
case Property::RasterHueRotate:
return makeStyleProperty(layer.getRasterHueRotate());
case Property::RasterOpacity:
return makeStyleProperty(layer.getRasterOpacity());
case Property::RasterResampling:
return makeStyleProperty(layer.getRasterResampling());
case Property::RasterSaturation:
return makeStyleProperty(layer.getRasterSaturation());
case Property::RasterBrightnessMaxTransition:
return makeStyleProperty(layer.getRasterBrightnessMaxTransition());
case Property::RasterBrightnessMinTransition:
return makeStyleProperty(layer.getRasterBrightnessMinTransition());
case Property::RasterContrastTransition:
return makeStyleProperty(layer.getRasterContrastTransition());
case Property::RasterFadeDurationTransition:
return makeStyleProperty(layer.getRasterFadeDurationTransition());
case Property::RasterHueRotateTransition:
return makeStyleProperty(layer.getRasterHueRotateTransition());
case Property::RasterOpacityTransition:
return makeStyleProperty(layer.getRasterOpacityTransition());
case Property::RasterResamplingTransition:
return makeStyleProperty(layer.getRasterResamplingTransition());
case Property::RasterSaturationTransition:
return makeStyleProperty(layer.getRasterSaturationTransition());
}
return {};
}
StyleProperty getLayerProperty(const RasterLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value RasterLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> RasterLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -441,46 +501,7 @@ optional<Error> RasterLayer::setProperty(const std::string& name, const Converti
}
StyleProperty RasterLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::RasterBrightnessMax:
return makeStyleProperty(getRasterBrightnessMax());
case Property::RasterBrightnessMin:
return makeStyleProperty(getRasterBrightnessMin());
case Property::RasterContrast:
return makeStyleProperty(getRasterContrast());
case Property::RasterFadeDuration:
return makeStyleProperty(getRasterFadeDuration());
case Property::RasterHueRotate:
return makeStyleProperty(getRasterHueRotate());
case Property::RasterOpacity:
return makeStyleProperty(getRasterOpacity());
case Property::RasterResampling:
return makeStyleProperty(getRasterResampling());
case Property::RasterSaturation:
return makeStyleProperty(getRasterSaturation());
case Property::RasterBrightnessMaxTransition:
return makeStyleProperty(getRasterBrightnessMaxTransition());
case Property::RasterBrightnessMinTransition:
return makeStyleProperty(getRasterBrightnessMinTransition());
case Property::RasterContrastTransition:
return makeStyleProperty(getRasterContrastTransition());
case Property::RasterFadeDurationTransition:
return makeStyleProperty(getRasterFadeDurationTransition());
case Property::RasterHueRotateTransition:
return makeStyleProperty(getRasterHueRotateTransition());
case Property::RasterOpacityTransition:
return makeStyleProperty(getRasterOpacityTransition());
case Property::RasterResamplingTransition:
return makeStyleProperty(getRasterResamplingTransition());
case Property::RasterSaturationTransition:
return makeStyleProperty(getRasterSaturationTransition());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> RasterLayer::mutableBaseImpl() const {

View File

@@ -1061,6 +1061,8 @@ using namespace conversion;
namespace {
constexpr uint8_t kPaintPropertyCount = 28u;
enum class Property : uint8_t {
IconColor,
IconHaloBlur,
@@ -1090,7 +1092,7 @@ enum class Property : uint8_t {
TextOpacityTransition,
TextTranslateTransition,
TextTranslateAnchorTransition,
IconAllowOverlap,
IconAllowOverlap = kPaintPropertyCount,
IconAnchor,
IconIgnorePlacement,
IconImage,
@@ -1208,8 +1210,172 @@ MAPBOX_ETERNAL_CONSTEXPR const auto layerProperties = mapbox::eternal::hash_map<
{"text-transform", toUint8(Property::TextTransform)},
{"text-variable-anchor", toUint8(Property::TextVariableAnchor)},
{"text-writing-mode", toUint8(Property::TextWritingMode)}});
StyleProperty getLayerProperty(const SymbolLayer& layer, Property property) {
switch (property) {
case Property::IconColor:
return makeStyleProperty(layer.getIconColor());
case Property::IconHaloBlur:
return makeStyleProperty(layer.getIconHaloBlur());
case Property::IconHaloColor:
return makeStyleProperty(layer.getIconHaloColor());
case Property::IconHaloWidth:
return makeStyleProperty(layer.getIconHaloWidth());
case Property::IconOpacity:
return makeStyleProperty(layer.getIconOpacity());
case Property::IconTranslate:
return makeStyleProperty(layer.getIconTranslate());
case Property::IconTranslateAnchor:
return makeStyleProperty(layer.getIconTranslateAnchor());
case Property::TextColor:
return makeStyleProperty(layer.getTextColor());
case Property::TextHaloBlur:
return makeStyleProperty(layer.getTextHaloBlur());
case Property::TextHaloColor:
return makeStyleProperty(layer.getTextHaloColor());
case Property::TextHaloWidth:
return makeStyleProperty(layer.getTextHaloWidth());
case Property::TextOpacity:
return makeStyleProperty(layer.getTextOpacity());
case Property::TextTranslate:
return makeStyleProperty(layer.getTextTranslate());
case Property::TextTranslateAnchor:
return makeStyleProperty(layer.getTextTranslateAnchor());
case Property::IconColorTransition:
return makeStyleProperty(layer.getIconColorTransition());
case Property::IconHaloBlurTransition:
return makeStyleProperty(layer.getIconHaloBlurTransition());
case Property::IconHaloColorTransition:
return makeStyleProperty(layer.getIconHaloColorTransition());
case Property::IconHaloWidthTransition:
return makeStyleProperty(layer.getIconHaloWidthTransition());
case Property::IconOpacityTransition:
return makeStyleProperty(layer.getIconOpacityTransition());
case Property::IconTranslateTransition:
return makeStyleProperty(layer.getIconTranslateTransition());
case Property::IconTranslateAnchorTransition:
return makeStyleProperty(layer.getIconTranslateAnchorTransition());
case Property::TextColorTransition:
return makeStyleProperty(layer.getTextColorTransition());
case Property::TextHaloBlurTransition:
return makeStyleProperty(layer.getTextHaloBlurTransition());
case Property::TextHaloColorTransition:
return makeStyleProperty(layer.getTextHaloColorTransition());
case Property::TextHaloWidthTransition:
return makeStyleProperty(layer.getTextHaloWidthTransition());
case Property::TextOpacityTransition:
return makeStyleProperty(layer.getTextOpacityTransition());
case Property::TextTranslateTransition:
return makeStyleProperty(layer.getTextTranslateTransition());
case Property::TextTranslateAnchorTransition:
return makeStyleProperty(layer.getTextTranslateAnchorTransition());
case Property::IconAllowOverlap:
return makeStyleProperty(layer.getIconAllowOverlap());
case Property::IconAnchor:
return makeStyleProperty(layer.getIconAnchor());
case Property::IconIgnorePlacement:
return makeStyleProperty(layer.getIconIgnorePlacement());
case Property::IconImage:
return makeStyleProperty(layer.getIconImage());
case Property::IconKeepUpright:
return makeStyleProperty(layer.getIconKeepUpright());
case Property::IconOffset:
return makeStyleProperty(layer.getIconOffset());
case Property::IconOptional:
return makeStyleProperty(layer.getIconOptional());
case Property::IconPadding:
return makeStyleProperty(layer.getIconPadding());
case Property::IconPitchAlignment:
return makeStyleProperty(layer.getIconPitchAlignment());
case Property::IconRotate:
return makeStyleProperty(layer.getIconRotate());
case Property::IconRotationAlignment:
return makeStyleProperty(layer.getIconRotationAlignment());
case Property::IconSize:
return makeStyleProperty(layer.getIconSize());
case Property::IconTextFit:
return makeStyleProperty(layer.getIconTextFit());
case Property::IconTextFitPadding:
return makeStyleProperty(layer.getIconTextFitPadding());
case Property::SymbolAvoidEdges:
return makeStyleProperty(layer.getSymbolAvoidEdges());
case Property::SymbolPlacement:
return makeStyleProperty(layer.getSymbolPlacement());
case Property::SymbolSortKey:
return makeStyleProperty(layer.getSymbolSortKey());
case Property::SymbolSpacing:
return makeStyleProperty(layer.getSymbolSpacing());
case Property::SymbolZOrder:
return makeStyleProperty(layer.getSymbolZOrder());
case Property::TextAllowOverlap:
return makeStyleProperty(layer.getTextAllowOverlap());
case Property::TextAnchor:
return makeStyleProperty(layer.getTextAnchor());
case Property::TextField:
return makeStyleProperty(layer.getTextField());
case Property::TextFont:
return makeStyleProperty(layer.getTextFont());
case Property::TextIgnorePlacement:
return makeStyleProperty(layer.getTextIgnorePlacement());
case Property::TextJustify:
return makeStyleProperty(layer.getTextJustify());
case Property::TextKeepUpright:
return makeStyleProperty(layer.getTextKeepUpright());
case Property::TextLetterSpacing:
return makeStyleProperty(layer.getTextLetterSpacing());
case Property::TextLineHeight:
return makeStyleProperty(layer.getTextLineHeight());
case Property::TextMaxAngle:
return makeStyleProperty(layer.getTextMaxAngle());
case Property::TextMaxWidth:
return makeStyleProperty(layer.getTextMaxWidth());
case Property::TextOffset:
return makeStyleProperty(layer.getTextOffset());
case Property::TextOptional:
return makeStyleProperty(layer.getTextOptional());
case Property::TextPadding:
return makeStyleProperty(layer.getTextPadding());
case Property::TextPitchAlignment:
return makeStyleProperty(layer.getTextPitchAlignment());
case Property::TextRadialOffset:
return makeStyleProperty(layer.getTextRadialOffset());
case Property::TextRotate:
return makeStyleProperty(layer.getTextRotate());
case Property::TextRotationAlignment:
return makeStyleProperty(layer.getTextRotationAlignment());
case Property::TextSize:
return makeStyleProperty(layer.getTextSize());
case Property::TextTransform:
return makeStyleProperty(layer.getTextTransform());
case Property::TextVariableAnchor:
return makeStyleProperty(layer.getTextVariableAnchor());
case Property::TextWritingMode:
return makeStyleProperty(layer.getTextWritingMode());
}
return {};
}
StyleProperty getLayerProperty(const SymbolLayer& layer, const std::string& name) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
return getLayerProperty(layer, static_cast<Property>(it->second));
}
} // namespace
Value SymbolLayer::serialize() const {
auto result = Layer::serialize();
assert(result.getObject());
for (const auto& property : layerProperties) {
auto styleProperty = getLayerProperty(*this, static_cast<Property>(property.second));
if (styleProperty.getKind() == StyleProperty::Kind::Undefined) continue;
serializeProperty(result, styleProperty, property.first.c_str(), property.second < kPaintPropertyCount);
}
return result;
}
optional<Error> SymbolLayer::setProperty(const std::string& name, const Convertible& value) {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
@@ -1707,152 +1873,7 @@ optional<Error> SymbolLayer::setProperty(const std::string& name, const Converti
}
StyleProperty SymbolLayer::getProperty(const std::string& name) const {
const auto it = layerProperties.find(name.c_str());
if (it == layerProperties.end()) {
return {};
}
switch (static_cast<Property>(it->second)) {
case Property::IconColor:
return makeStyleProperty(getIconColor());
case Property::IconHaloBlur:
return makeStyleProperty(getIconHaloBlur());
case Property::IconHaloColor:
return makeStyleProperty(getIconHaloColor());
case Property::IconHaloWidth:
return makeStyleProperty(getIconHaloWidth());
case Property::IconOpacity:
return makeStyleProperty(getIconOpacity());
case Property::IconTranslate:
return makeStyleProperty(getIconTranslate());
case Property::IconTranslateAnchor:
return makeStyleProperty(getIconTranslateAnchor());
case Property::TextColor:
return makeStyleProperty(getTextColor());
case Property::TextHaloBlur:
return makeStyleProperty(getTextHaloBlur());
case Property::TextHaloColor:
return makeStyleProperty(getTextHaloColor());
case Property::TextHaloWidth:
return makeStyleProperty(getTextHaloWidth());
case Property::TextOpacity:
return makeStyleProperty(getTextOpacity());
case Property::TextTranslate:
return makeStyleProperty(getTextTranslate());
case Property::TextTranslateAnchor:
return makeStyleProperty(getTextTranslateAnchor());
case Property::IconColorTransition:
return makeStyleProperty(getIconColorTransition());
case Property::IconHaloBlurTransition:
return makeStyleProperty(getIconHaloBlurTransition());
case Property::IconHaloColorTransition:
return makeStyleProperty(getIconHaloColorTransition());
case Property::IconHaloWidthTransition:
return makeStyleProperty(getIconHaloWidthTransition());
case Property::IconOpacityTransition:
return makeStyleProperty(getIconOpacityTransition());
case Property::IconTranslateTransition:
return makeStyleProperty(getIconTranslateTransition());
case Property::IconTranslateAnchorTransition:
return makeStyleProperty(getIconTranslateAnchorTransition());
case Property::TextColorTransition:
return makeStyleProperty(getTextColorTransition());
case Property::TextHaloBlurTransition:
return makeStyleProperty(getTextHaloBlurTransition());
case Property::TextHaloColorTransition:
return makeStyleProperty(getTextHaloColorTransition());
case Property::TextHaloWidthTransition:
return makeStyleProperty(getTextHaloWidthTransition());
case Property::TextOpacityTransition:
return makeStyleProperty(getTextOpacityTransition());
case Property::TextTranslateTransition:
return makeStyleProperty(getTextTranslateTransition());
case Property::TextTranslateAnchorTransition:
return makeStyleProperty(getTextTranslateAnchorTransition());
case Property::IconAllowOverlap:
return makeStyleProperty(getIconAllowOverlap());
case Property::IconAnchor:
return makeStyleProperty(getIconAnchor());
case Property::IconIgnorePlacement:
return makeStyleProperty(getIconIgnorePlacement());
case Property::IconImage:
return makeStyleProperty(getIconImage());
case Property::IconKeepUpright:
return makeStyleProperty(getIconKeepUpright());
case Property::IconOffset:
return makeStyleProperty(getIconOffset());
case Property::IconOptional:
return makeStyleProperty(getIconOptional());
case Property::IconPadding:
return makeStyleProperty(getIconPadding());
case Property::IconPitchAlignment:
return makeStyleProperty(getIconPitchAlignment());
case Property::IconRotate:
return makeStyleProperty(getIconRotate());
case Property::IconRotationAlignment:
return makeStyleProperty(getIconRotationAlignment());
case Property::IconSize:
return makeStyleProperty(getIconSize());
case Property::IconTextFit:
return makeStyleProperty(getIconTextFit());
case Property::IconTextFitPadding:
return makeStyleProperty(getIconTextFitPadding());
case Property::SymbolAvoidEdges:
return makeStyleProperty(getSymbolAvoidEdges());
case Property::SymbolPlacement:
return makeStyleProperty(getSymbolPlacement());
case Property::SymbolSortKey:
return makeStyleProperty(getSymbolSortKey());
case Property::SymbolSpacing:
return makeStyleProperty(getSymbolSpacing());
case Property::SymbolZOrder:
return makeStyleProperty(getSymbolZOrder());
case Property::TextAllowOverlap:
return makeStyleProperty(getTextAllowOverlap());
case Property::TextAnchor:
return makeStyleProperty(getTextAnchor());
case Property::TextField:
return makeStyleProperty(getTextField());
case Property::TextFont:
return makeStyleProperty(getTextFont());
case Property::TextIgnorePlacement:
return makeStyleProperty(getTextIgnorePlacement());
case Property::TextJustify:
return makeStyleProperty(getTextJustify());
case Property::TextKeepUpright:
return makeStyleProperty(getTextKeepUpright());
case Property::TextLetterSpacing:
return makeStyleProperty(getTextLetterSpacing());
case Property::TextLineHeight:
return makeStyleProperty(getTextLineHeight());
case Property::TextMaxAngle:
return makeStyleProperty(getTextMaxAngle());
case Property::TextMaxWidth:
return makeStyleProperty(getTextMaxWidth());
case Property::TextOffset:
return makeStyleProperty(getTextOffset());
case Property::TextOptional:
return makeStyleProperty(getTextOptional());
case Property::TextPadding:
return makeStyleProperty(getTextPadding());
case Property::TextPitchAlignment:
return makeStyleProperty(getTextPitchAlignment());
case Property::TextRadialOffset:
return makeStyleProperty(getTextRadialOffset());
case Property::TextRotate:
return makeStyleProperty(getTextRotate());
case Property::TextRotationAlignment:
return makeStyleProperty(getTextRotationAlignment());
case Property::TextSize:
return makeStyleProperty(getTextSize());
case Property::TextTransform:
return makeStyleProperty(getTextTransform());
case Property::TextVariableAnchor:
return makeStyleProperty(getTextVariableAnchor());
case Property::TextWritingMode:
return makeStyleProperty(getTextWritingMode());
}
return {};
return getLayerProperty(*this, name);
}
Mutable<Layer::Impl> SymbolLayer::mutableBaseImpl() const {