From 4b2e1cddb4645fb6d2c5f9634dbeb7c21516cede Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 26 Sep 2017 14:14:44 -0700 Subject: Replace compile-time polymorphism with runtime polymorphism in the conversion system --- .../style/conversion/make_property_setters.hpp | 209 +++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 src/mbgl/style/conversion/make_property_setters.hpp (limited to 'src/mbgl/style/conversion/make_property_setters.hpp') diff --git a/src/mbgl/style/conversion/make_property_setters.hpp b/src/mbgl/style/conversion/make_property_setters.hpp new file mode 100644 index 0000000000..074d7eb730 --- /dev/null +++ b/src/mbgl/style/conversion/make_property_setters.hpp @@ -0,0 +1,209 @@ +#pragma once + +// This file is generated. Edit make_property_setters.hpp.ejs, then run `make style-code`. + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace mbgl { +namespace style { +namespace conversion { + +inline auto makeLayoutPropertySetters() { + std::unordered_map result; + + result["visibility"] = &setVisibility; + + + result["line-cap"] = &setProperty, &LineLayer::setLineCap>; + result["line-join"] = &setProperty, &LineLayer::setLineJoin>; + result["line-miter-limit"] = &setProperty, &LineLayer::setLineMiterLimit>; + result["line-round-limit"] = &setProperty, &LineLayer::setLineRoundLimit>; + + result["symbol-placement"] = &setProperty, &SymbolLayer::setSymbolPlacement>; + result["symbol-spacing"] = &setProperty, &SymbolLayer::setSymbolSpacing>; + result["symbol-avoid-edges"] = &setProperty, &SymbolLayer::setSymbolAvoidEdges>; + result["icon-allow-overlap"] = &setProperty, &SymbolLayer::setIconAllowOverlap>; + result["icon-ignore-placement"] = &setProperty, &SymbolLayer::setIconIgnorePlacement>; + result["icon-optional"] = &setProperty, &SymbolLayer::setIconOptional>; + result["icon-rotation-alignment"] = &setProperty, &SymbolLayer::setIconRotationAlignment>; + result["icon-size"] = &setProperty, &SymbolLayer::setIconSize>; + result["icon-text-fit"] = &setProperty, &SymbolLayer::setIconTextFit>; + result["icon-text-fit-padding"] = &setProperty>, &SymbolLayer::setIconTextFitPadding>; + result["icon-image"] = &setProperty, &SymbolLayer::setIconImage>; + result["icon-rotate"] = &setProperty, &SymbolLayer::setIconRotate>; + result["icon-padding"] = &setProperty, &SymbolLayer::setIconPadding>; + result["icon-keep-upright"] = &setProperty, &SymbolLayer::setIconKeepUpright>; + result["icon-offset"] = &setProperty>, &SymbolLayer::setIconOffset>; + result["icon-anchor"] = &setProperty, &SymbolLayer::setIconAnchor>; + result["icon-pitch-alignment"] = &setProperty, &SymbolLayer::setIconPitchAlignment>; + result["text-pitch-alignment"] = &setProperty, &SymbolLayer::setTextPitchAlignment>; + result["text-rotation-alignment"] = &setProperty, &SymbolLayer::setTextRotationAlignment>; + result["text-field"] = &setProperty, &SymbolLayer::setTextField>; + result["text-font"] = &setProperty>, &SymbolLayer::setTextFont>; + result["text-size"] = &setProperty, &SymbolLayer::setTextSize>; + result["text-max-width"] = &setProperty, &SymbolLayer::setTextMaxWidth>; + result["text-line-height"] = &setProperty, &SymbolLayer::setTextLineHeight>; + result["text-letter-spacing"] = &setProperty, &SymbolLayer::setTextLetterSpacing>; + result["text-justify"] = &setProperty, &SymbolLayer::setTextJustify>; + result["text-anchor"] = &setProperty, &SymbolLayer::setTextAnchor>; + result["text-max-angle"] = &setProperty, &SymbolLayer::setTextMaxAngle>; + result["text-rotate"] = &setProperty, &SymbolLayer::setTextRotate>; + result["text-padding"] = &setProperty, &SymbolLayer::setTextPadding>; + result["text-keep-upright"] = &setProperty, &SymbolLayer::setTextKeepUpright>; + result["text-transform"] = &setProperty, &SymbolLayer::setTextTransform>; + result["text-offset"] = &setProperty>, &SymbolLayer::setTextOffset>; + result["text-allow-overlap"] = &setProperty, &SymbolLayer::setTextAllowOverlap>; + result["text-ignore-placement"] = &setProperty, &SymbolLayer::setTextIgnorePlacement>; + result["text-optional"] = &setProperty, &SymbolLayer::setTextOptional>; + + + + + + return result; +} + +inline auto makePaintPropertySetters() { + std::unordered_map result; + + result["fill-antialias"] = &setProperty, &FillLayer::setFillAntialias>; + result["fill-antialias-transition"] = &setTransition; + result["fill-opacity"] = &setProperty, &FillLayer::setFillOpacity>; + result["fill-opacity-transition"] = &setTransition; + result["fill-color"] = &setProperty, &FillLayer::setFillColor>; + result["fill-color-transition"] = &setTransition; + result["fill-outline-color"] = &setProperty, &FillLayer::setFillOutlineColor>; + result["fill-outline-color-transition"] = &setTransition; + result["fill-translate"] = &setProperty>, &FillLayer::setFillTranslate>; + result["fill-translate-transition"] = &setTransition; + result["fill-translate-anchor"] = &setProperty, &FillLayer::setFillTranslateAnchor>; + result["fill-translate-anchor-transition"] = &setTransition; + result["fill-pattern"] = &setProperty, &FillLayer::setFillPattern>; + result["fill-pattern-transition"] = &setTransition; + + result["line-opacity"] = &setProperty, &LineLayer::setLineOpacity>; + result["line-opacity-transition"] = &setTransition; + result["line-color"] = &setProperty, &LineLayer::setLineColor>; + result["line-color-transition"] = &setTransition; + result["line-translate"] = &setProperty>, &LineLayer::setLineTranslate>; + result["line-translate-transition"] = &setTransition; + result["line-translate-anchor"] = &setProperty, &LineLayer::setLineTranslateAnchor>; + result["line-translate-anchor-transition"] = &setTransition; + result["line-width"] = &setProperty, &LineLayer::setLineWidth>; + result["line-width-transition"] = &setTransition; + result["line-gap-width"] = &setProperty, &LineLayer::setLineGapWidth>; + result["line-gap-width-transition"] = &setTransition; + result["line-offset"] = &setProperty, &LineLayer::setLineOffset>; + result["line-offset-transition"] = &setTransition; + result["line-blur"] = &setProperty, &LineLayer::setLineBlur>; + result["line-blur-transition"] = &setTransition; + result["line-dasharray"] = &setProperty>, &LineLayer::setLineDasharray>; + result["line-dasharray-transition"] = &setTransition; + result["line-pattern"] = &setProperty, &LineLayer::setLinePattern>; + result["line-pattern-transition"] = &setTransition; + + result["icon-opacity"] = &setProperty, &SymbolLayer::setIconOpacity>; + result["icon-opacity-transition"] = &setTransition; + result["icon-color"] = &setProperty, &SymbolLayer::setIconColor>; + result["icon-color-transition"] = &setTransition; + result["icon-halo-color"] = &setProperty, &SymbolLayer::setIconHaloColor>; + result["icon-halo-color-transition"] = &setTransition; + result["icon-halo-width"] = &setProperty, &SymbolLayer::setIconHaloWidth>; + result["icon-halo-width-transition"] = &setTransition; + result["icon-halo-blur"] = &setProperty, &SymbolLayer::setIconHaloBlur>; + result["icon-halo-blur-transition"] = &setTransition; + result["icon-translate"] = &setProperty>, &SymbolLayer::setIconTranslate>; + result["icon-translate-transition"] = &setTransition; + result["icon-translate-anchor"] = &setProperty, &SymbolLayer::setIconTranslateAnchor>; + result["icon-translate-anchor-transition"] = &setTransition; + result["text-opacity"] = &setProperty, &SymbolLayer::setTextOpacity>; + result["text-opacity-transition"] = &setTransition; + result["text-color"] = &setProperty, &SymbolLayer::setTextColor>; + result["text-color-transition"] = &setTransition; + result["text-halo-color"] = &setProperty, &SymbolLayer::setTextHaloColor>; + result["text-halo-color-transition"] = &setTransition; + result["text-halo-width"] = &setProperty, &SymbolLayer::setTextHaloWidth>; + result["text-halo-width-transition"] = &setTransition; + result["text-halo-blur"] = &setProperty, &SymbolLayer::setTextHaloBlur>; + result["text-halo-blur-transition"] = &setTransition; + result["text-translate"] = &setProperty>, &SymbolLayer::setTextTranslate>; + result["text-translate-transition"] = &setTransition; + result["text-translate-anchor"] = &setProperty, &SymbolLayer::setTextTranslateAnchor>; + result["text-translate-anchor-transition"] = &setTransition; + + result["circle-radius"] = &setProperty, &CircleLayer::setCircleRadius>; + result["circle-radius-transition"] = &setTransition; + result["circle-color"] = &setProperty, &CircleLayer::setCircleColor>; + result["circle-color-transition"] = &setTransition; + result["circle-blur"] = &setProperty, &CircleLayer::setCircleBlur>; + result["circle-blur-transition"] = &setTransition; + result["circle-opacity"] = &setProperty, &CircleLayer::setCircleOpacity>; + result["circle-opacity-transition"] = &setTransition; + result["circle-translate"] = &setProperty>, &CircleLayer::setCircleTranslate>; + result["circle-translate-transition"] = &setTransition; + result["circle-translate-anchor"] = &setProperty, &CircleLayer::setCircleTranslateAnchor>; + result["circle-translate-anchor-transition"] = &setTransition; + result["circle-pitch-scale"] = &setProperty, &CircleLayer::setCirclePitchScale>; + result["circle-pitch-scale-transition"] = &setTransition; + result["circle-pitch-alignment"] = &setProperty, &CircleLayer::setCirclePitchAlignment>; + result["circle-pitch-alignment-transition"] = &setTransition; + result["circle-stroke-width"] = &setProperty, &CircleLayer::setCircleStrokeWidth>; + result["circle-stroke-width-transition"] = &setTransition; + result["circle-stroke-color"] = &setProperty, &CircleLayer::setCircleStrokeColor>; + result["circle-stroke-color-transition"] = &setTransition; + result["circle-stroke-opacity"] = &setProperty, &CircleLayer::setCircleStrokeOpacity>; + result["circle-stroke-opacity-transition"] = &setTransition; + + result["fill-extrusion-opacity"] = &setProperty, &FillExtrusionLayer::setFillExtrusionOpacity>; + result["fill-extrusion-opacity-transition"] = &setTransition; + result["fill-extrusion-color"] = &setProperty, &FillExtrusionLayer::setFillExtrusionColor>; + result["fill-extrusion-color-transition"] = &setTransition; + result["fill-extrusion-translate"] = &setProperty>, &FillExtrusionLayer::setFillExtrusionTranslate>; + result["fill-extrusion-translate-transition"] = &setTransition; + result["fill-extrusion-translate-anchor"] = &setProperty, &FillExtrusionLayer::setFillExtrusionTranslateAnchor>; + result["fill-extrusion-translate-anchor-transition"] = &setTransition; + result["fill-extrusion-pattern"] = &setProperty, &FillExtrusionLayer::setFillExtrusionPattern>; + result["fill-extrusion-pattern-transition"] = &setTransition; + result["fill-extrusion-height"] = &setProperty, &FillExtrusionLayer::setFillExtrusionHeight>; + result["fill-extrusion-height-transition"] = &setTransition; + result["fill-extrusion-base"] = &setProperty, &FillExtrusionLayer::setFillExtrusionBase>; + result["fill-extrusion-base-transition"] = &setTransition; + + result["raster-opacity"] = &setProperty, &RasterLayer::setRasterOpacity>; + result["raster-opacity-transition"] = &setTransition; + result["raster-hue-rotate"] = &setProperty, &RasterLayer::setRasterHueRotate>; + result["raster-hue-rotate-transition"] = &setTransition; + result["raster-brightness-min"] = &setProperty, &RasterLayer::setRasterBrightnessMin>; + result["raster-brightness-min-transition"] = &setTransition; + result["raster-brightness-max"] = &setProperty, &RasterLayer::setRasterBrightnessMax>; + result["raster-brightness-max-transition"] = &setTransition; + result["raster-saturation"] = &setProperty, &RasterLayer::setRasterSaturation>; + result["raster-saturation-transition"] = &setTransition; + result["raster-contrast"] = &setProperty, &RasterLayer::setRasterContrast>; + result["raster-contrast-transition"] = &setTransition; + result["raster-fade-duration"] = &setProperty, &RasterLayer::setRasterFadeDuration>; + result["raster-fade-duration-transition"] = &setTransition; + + result["background-color"] = &setProperty, &BackgroundLayer::setBackgroundColor>; + result["background-color-transition"] = &setTransition; + result["background-pattern"] = &setProperty, &BackgroundLayer::setBackgroundPattern>; + result["background-pattern-transition"] = &setTransition; + result["background-opacity"] = &setProperty, &BackgroundLayer::setBackgroundOpacity>; + result["background-opacity-transition"] = &setTransition; + + return result; +} + +} // namespace conversion +} // namespace style +} // namespace mbgl -- cgit v1.2.1