From 1a66a02097f0e3c95a4d06610fc0b7609f6d77b9 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Thu, 24 Jan 2019 10:40:50 +0200 Subject: [core] Introduce `style::LayerProperties` interface and its implementations --- include/mbgl/style/layer_properties.hpp | 29 ++++++++++++++++++++++ src/core-files.json | 1 + src/mbgl/style/layer_impl.hpp | 4 +-- .../style/layers/background_layer_properties.cpp | 20 +++++++++++++++ .../style/layers/background_layer_properties.hpp | 17 +++++++++++++ src/mbgl/style/layers/circle_layer_properties.cpp | 18 ++++++++++++++ src/mbgl/style/layers/circle_layer_properties.hpp | 15 +++++++++++ .../layers/fill_extrusion_layer_properties.cpp | 20 +++++++++++++++ .../layers/fill_extrusion_layer_properties.hpp | 17 +++++++++++++ src/mbgl/style/layers/fill_layer_properties.cpp | 20 +++++++++++++++ src/mbgl/style/layers/fill_layer_properties.hpp | 17 +++++++++++++ src/mbgl/style/layers/heatmap_layer_properties.cpp | 18 ++++++++++++++ src/mbgl/style/layers/heatmap_layer_properties.hpp | 15 +++++++++++ .../style/layers/hillshade_layer_properties.cpp | 18 ++++++++++++++ .../style/layers/hillshade_layer_properties.hpp | 15 +++++++++++ src/mbgl/style/layers/layer_properties.cpp.ejs | 24 ++++++++++++++++++ src/mbgl/style/layers/layer_properties.hpp.ejs | 21 ++++++++++++++++ src/mbgl/style/layers/line_layer_properties.cpp | 20 +++++++++++++++ src/mbgl/style/layers/line_layer_properties.hpp | 17 +++++++++++++ src/mbgl/style/layers/raster_layer_properties.cpp | 18 ++++++++++++++ src/mbgl/style/layers/raster_layer_properties.hpp | 15 +++++++++++ src/mbgl/style/layers/symbol_layer_properties.cpp | 18 ++++++++++++++ src/mbgl/style/layers/symbol_layer_properties.hpp | 15 +++++++++++ 23 files changed, 389 insertions(+), 3 deletions(-) create mode 100644 include/mbgl/style/layer_properties.hpp diff --git a/include/mbgl/style/layer_properties.hpp b/include/mbgl/style/layer_properties.hpp new file mode 100644 index 0000000000..89d599dfbc --- /dev/null +++ b/include/mbgl/style/layer_properties.hpp @@ -0,0 +1,29 @@ +#pragma once +#include + +namespace mbgl { + +namespace style { + +/** + * @brief An interface, wrapping evaluated layer properties. + * + * It is an abstract base class; concrete derived classes that hold the actual data are provided for each layer type. + */ +class LayerProperties { +public: + virtual ~LayerProperties() = default; + + Immutable baseImpl; + +protected: + LayerProperties(Immutable impl) : baseImpl(std::move(impl)) {} +}; + +template +inline const auto& getEvaluated(const Immutable& properties) { + return static_cast(*properties).evaluated; +} + +} // namespace style +} // namespace mbgl diff --git a/src/core-files.json b/src/core-files.json index 9860212399..e224f55cad 100644 --- a/src/core-files.json +++ b/src/core-files.json @@ -420,6 +420,7 @@ "mbgl/style/filter.hpp": "include/mbgl/style/filter.hpp", "mbgl/style/image.hpp": "include/mbgl/style/image.hpp", "mbgl/style/layer.hpp": "include/mbgl/style/layer.hpp", + "mbgl/style/layer_properties.hpp": "include/mbgl/style/layer_properties.hpp", "mbgl/style/layers/background_layer.hpp": "include/mbgl/style/layers/background_layer.hpp", "mbgl/style/layers/circle_layer.hpp": "include/mbgl/style/layers/circle_layer.hpp", "mbgl/style/layers/custom_layer.hpp": "include/mbgl/style/layers/custom_layer.hpp", diff --git a/src/mbgl/style/layer_impl.hpp b/src/mbgl/style/layer_impl.hpp index c64173600e..53dd1320bd 100644 --- a/src/mbgl/style/layer_impl.hpp +++ b/src/mbgl/style/layer_impl.hpp @@ -12,8 +12,6 @@ namespace mbgl { -class RenderLayer; - namespace style { /** @@ -65,4 +63,4 @@ const LayerTypeInfo* getTypeInfo() const noexcept final { return staticTypeInfo( static const LayerTypeInfo* staticTypeInfo() noexcept } // namespace style -} // namespace mbgl \ No newline at end of file +} // namespace mbgl diff --git a/src/mbgl/style/layers/background_layer_properties.cpp b/src/mbgl/style/layers/background_layer_properties.cpp index ba3e638977..f0da811379 100644 --- a/src/mbgl/style/layers/background_layer_properties.cpp +++ b/src/mbgl/style/layers/background_layer_properties.cpp @@ -2,8 +2,28 @@ #include +#include + namespace mbgl { namespace style { +BackgroundLayerProperties::BackgroundLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +BackgroundLayerProperties::BackgroundLayerProperties( + Immutable impl_, + CrossfadeParameters crossfade_, + BackgroundPaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + crossfade(std::move(crossfade_)), + evaluated(std::move(evaluated_)) {} + +BackgroundLayerProperties::~BackgroundLayerProperties() = default; + +const BackgroundLayer::Impl& BackgroundLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/background_layer_properties.hpp b/src/mbgl/style/layers/background_layer_properties.hpp index 3a61392fb4..3765e2e569 100644 --- a/src/mbgl/style/layers/background_layer_properties.hpp +++ b/src/mbgl/style/layers/background_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -30,5 +32,20 @@ class BackgroundPaintProperties : public Properties< BackgroundOpacity > {}; +class BackgroundLayerProperties final : public LayerProperties { +public: + explicit BackgroundLayerProperties(Immutable); + BackgroundLayerProperties( + Immutable, + CrossfadeParameters, + BackgroundPaintProperties::PossiblyEvaluated); + ~BackgroundLayerProperties() override; + + const BackgroundLayer::Impl& layerImpl() const; + // Data members. + CrossfadeParameters crossfade; + BackgroundPaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/circle_layer_properties.cpp b/src/mbgl/style/layers/circle_layer_properties.cpp index af727fa36f..fbb4aeabd4 100644 --- a/src/mbgl/style/layers/circle_layer_properties.cpp +++ b/src/mbgl/style/layers/circle_layer_properties.cpp @@ -2,8 +2,26 @@ #include +#include + namespace mbgl { namespace style { +CircleLayerProperties::CircleLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +CircleLayerProperties::CircleLayerProperties( + Immutable impl_, + CirclePaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + evaluated(std::move(evaluated_)) {} + +CircleLayerProperties::~CircleLayerProperties() = default; + +const CircleLayer::Impl& CircleLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/circle_layer_properties.hpp b/src/mbgl/style/layers/circle_layer_properties.hpp index 57caba9e3a..ef08e65455 100644 --- a/src/mbgl/style/layers/circle_layer_properties.hpp +++ b/src/mbgl/style/layers/circle_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -70,5 +72,18 @@ class CirclePaintProperties : public Properties< CircleStrokeOpacity > {}; +class CircleLayerProperties final : public LayerProperties { +public: + explicit CircleLayerProperties(Immutable); + CircleLayerProperties( + Immutable, + CirclePaintProperties::PossiblyEvaluated); + ~CircleLayerProperties() override; + + const CircleLayer::Impl& layerImpl() const; + // Data members. + CirclePaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp b/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp index 59572bd3ab..7986c40923 100644 --- a/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp +++ b/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp @@ -2,8 +2,28 @@ #include +#include + namespace mbgl { namespace style { +FillExtrusionLayerProperties::FillExtrusionLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +FillExtrusionLayerProperties::FillExtrusionLayerProperties( + Immutable impl_, + CrossfadeParameters crossfade_, + FillExtrusionPaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + crossfade(std::move(crossfade_)), + evaluated(std::move(evaluated_)) {} + +FillExtrusionLayerProperties::~FillExtrusionLayerProperties() = default; + +const FillExtrusionLayer::Impl& FillExtrusionLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp b/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp index a7799eee22..c90594036b 100644 --- a/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp +++ b/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -55,5 +57,20 @@ class FillExtrusionPaintProperties : public Properties< FillExtrusionVerticalGradient > {}; +class FillExtrusionLayerProperties final : public LayerProperties { +public: + explicit FillExtrusionLayerProperties(Immutable); + FillExtrusionLayerProperties( + Immutable, + CrossfadeParameters, + FillExtrusionPaintProperties::PossiblyEvaluated); + ~FillExtrusionLayerProperties() override; + + const FillExtrusionLayer::Impl& layerImpl() const; + // Data members. + CrossfadeParameters crossfade; + FillExtrusionPaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/fill_layer_properties.cpp b/src/mbgl/style/layers/fill_layer_properties.cpp index b07a083950..55e5a58cce 100644 --- a/src/mbgl/style/layers/fill_layer_properties.cpp +++ b/src/mbgl/style/layers/fill_layer_properties.cpp @@ -2,8 +2,28 @@ #include +#include + namespace mbgl { namespace style { +FillLayerProperties::FillLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +FillLayerProperties::FillLayerProperties( + Immutable impl_, + CrossfadeParameters crossfade_, + FillPaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + crossfade(std::move(crossfade_)), + evaluated(std::move(evaluated_)) {} + +FillLayerProperties::~FillLayerProperties() = default; + +const FillLayer::Impl& FillLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/fill_layer_properties.hpp b/src/mbgl/style/layers/fill_layer_properties.hpp index 942733f2e1..f76aee448b 100644 --- a/src/mbgl/style/layers/fill_layer_properties.hpp +++ b/src/mbgl/style/layers/fill_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -50,5 +52,20 @@ class FillPaintProperties : public Properties< FillPattern > {}; +class FillLayerProperties final : public LayerProperties { +public: + explicit FillLayerProperties(Immutable); + FillLayerProperties( + Immutable, + CrossfadeParameters, + FillPaintProperties::PossiblyEvaluated); + ~FillLayerProperties() override; + + const FillLayer::Impl& layerImpl() const; + // Data members. + CrossfadeParameters crossfade; + FillPaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/heatmap_layer_properties.cpp b/src/mbgl/style/layers/heatmap_layer_properties.cpp index 2edb839589..03a73be103 100644 --- a/src/mbgl/style/layers/heatmap_layer_properties.cpp +++ b/src/mbgl/style/layers/heatmap_layer_properties.cpp @@ -2,8 +2,26 @@ #include +#include + namespace mbgl { namespace style { +HeatmapLayerProperties::HeatmapLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +HeatmapLayerProperties::HeatmapLayerProperties( + Immutable impl_, + HeatmapPaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + evaluated(std::move(evaluated_)) {} + +HeatmapLayerProperties::~HeatmapLayerProperties() = default; + +const HeatmapLayer::Impl& HeatmapLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/heatmap_layer_properties.hpp b/src/mbgl/style/layers/heatmap_layer_properties.hpp index ce00217b2e..cccff61449 100644 --- a/src/mbgl/style/layers/heatmap_layer_properties.hpp +++ b/src/mbgl/style/layers/heatmap_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -39,5 +41,18 @@ class HeatmapPaintProperties : public Properties< HeatmapOpacity > {}; +class HeatmapLayerProperties final : public LayerProperties { +public: + explicit HeatmapLayerProperties(Immutable); + HeatmapLayerProperties( + Immutable, + HeatmapPaintProperties::PossiblyEvaluated); + ~HeatmapLayerProperties() override; + + const HeatmapLayer::Impl& layerImpl() const; + // Data members. + HeatmapPaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/hillshade_layer_properties.cpp b/src/mbgl/style/layers/hillshade_layer_properties.cpp index f296ab4520..407acb6fc0 100644 --- a/src/mbgl/style/layers/hillshade_layer_properties.cpp +++ b/src/mbgl/style/layers/hillshade_layer_properties.cpp @@ -2,8 +2,26 @@ #include +#include + namespace mbgl { namespace style { +HillshadeLayerProperties::HillshadeLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +HillshadeLayerProperties::HillshadeLayerProperties( + Immutable impl_, + HillshadePaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + evaluated(std::move(evaluated_)) {} + +HillshadeLayerProperties::~HillshadeLayerProperties() = default; + +const HillshadeLayer::Impl& HillshadeLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/hillshade_layer_properties.hpp b/src/mbgl/style/layers/hillshade_layer_properties.hpp index 260d7ea808..6433151148 100644 --- a/src/mbgl/style/layers/hillshade_layer_properties.hpp +++ b/src/mbgl/style/layers/hillshade_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -45,5 +47,18 @@ class HillshadePaintProperties : public Properties< HillshadeAccentColor > {}; +class HillshadeLayerProperties final : public LayerProperties { +public: + explicit HillshadeLayerProperties(Immutable); + HillshadeLayerProperties( + Immutable, + HillshadePaintProperties::PossiblyEvaluated); + ~HillshadeLayerProperties() override; + + const HillshadeLayer::Impl& layerImpl() const; + // Data members. + HillshadePaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/layer_properties.cpp.ejs b/src/mbgl/style/layers/layer_properties.cpp.ejs index e5523e5439..2c8e1ce9a0 100644 --- a/src/mbgl/style/layers/layer_properties.cpp.ejs +++ b/src/mbgl/style/layers/layer_properties.cpp.ejs @@ -7,8 +7,32 @@ #include _layer_properties.hpp> +#include _layer_impl.hpp> + namespace mbgl { namespace style { +<%- camelize(type) %>LayerProperties::<%- camelize(type) %>LayerProperties( + Immutable<<%- camelize(type) %>Layer::Impl> impl_) + : LayerProperties(std::move(impl_)) {} + +<%- camelize(type) %>LayerProperties::<%- camelize(type) %>LayerProperties( + Immutable<<%- camelize(type) %>Layer::Impl> impl_, +<% if (type === 'background' || type === 'fill' || type === 'line' || type === 'fill-extrusion') { -%> + CrossfadeParameters crossfade_, +<% } -%> + <%- camelize(type) %>PaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), +<% if (type === 'background' || type === 'fill' || type === 'line' || type === 'fill-extrusion') { -%> + crossfade(std::move(crossfade_)), +<% } -%> + evaluated(std::move(evaluated_)) {} + +<%- camelize(type) %>LayerProperties::~<%- camelize(type) %>LayerProperties() = default; + +const <%- camelize(type) %>Layer::Impl& <%- camelize(type) %>LayerProperties::layerImpl() const { + return static_castLayer::Impl&>(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/layer_properties.hpp.ejs b/src/mbgl/style/layers/layer_properties.hpp.ejs index de647fbc07..11a1db33c7 100644 --- a/src/mbgl/style/layers/layer_properties.hpp.ejs +++ b/src/mbgl/style/layers/layer_properties.hpp.ejs @@ -8,6 +8,8 @@ #pragma once #include +#include +#include _layer.hpp> #include #include #include @@ -66,5 +68,24 @@ class <%- camelize(type) %>PaintProperties : public Properties< <%- camelize(paintProperties.slice(-1)[0].name) %> > {}; +class <%- camelize(type) %>LayerProperties final : public LayerProperties { +public: + explicit <%- camelize(type) %>LayerProperties(Immutable<<%- camelize(type) %>Layer::Impl>); + <%- camelize(type) %>LayerProperties( + Immutable<<%- camelize(type) %>Layer::Impl>, +<% if (type === 'background' || type === 'fill' || type === 'line' || type === 'fill-extrusion') { -%> + CrossfadeParameters, +<% } -%> + <%- camelize(type) %>PaintProperties::PossiblyEvaluated); + ~<%- camelize(type) %>LayerProperties() override; + + const <%- camelize(type) %>Layer::Impl& layerImpl() const; + // Data members. +<% if (type === 'background' || type === 'fill' || type === 'line' || type === 'fill-extrusion') { -%> + CrossfadeParameters crossfade; +<% } -%> + <%- camelize(type) %>PaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/line_layer_properties.cpp b/src/mbgl/style/layers/line_layer_properties.cpp index 174239bcc8..09fb6ff80c 100644 --- a/src/mbgl/style/layers/line_layer_properties.cpp +++ b/src/mbgl/style/layers/line_layer_properties.cpp @@ -2,8 +2,28 @@ #include +#include + namespace mbgl { namespace style { +LineLayerProperties::LineLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +LineLayerProperties::LineLayerProperties( + Immutable impl_, + CrossfadeParameters crossfade_, + LinePaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + crossfade(std::move(crossfade_)), + evaluated(std::move(evaluated_)) {} + +LineLayerProperties::~LineLayerProperties() = default; + +const LineLayer::Impl& LineLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/line_layer_properties.hpp b/src/mbgl/style/layers/line_layer_properties.hpp index 33d7eddbe8..5fcbecf3be 100644 --- a/src/mbgl/style/layers/line_layer_properties.hpp +++ b/src/mbgl/style/layers/line_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -102,5 +104,20 @@ class LinePaintProperties : public Properties< LineGradient > {}; +class LineLayerProperties final : public LayerProperties { +public: + explicit LineLayerProperties(Immutable); + LineLayerProperties( + Immutable, + CrossfadeParameters, + LinePaintProperties::PossiblyEvaluated); + ~LineLayerProperties() override; + + const LineLayer::Impl& layerImpl() const; + // Data members. + CrossfadeParameters crossfade; + LinePaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/raster_layer_properties.cpp b/src/mbgl/style/layers/raster_layer_properties.cpp index 303719af40..4d9245a218 100644 --- a/src/mbgl/style/layers/raster_layer_properties.cpp +++ b/src/mbgl/style/layers/raster_layer_properties.cpp @@ -2,8 +2,26 @@ #include +#include + namespace mbgl { namespace style { +RasterLayerProperties::RasterLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +RasterLayerProperties::RasterLayerProperties( + Immutable impl_, + RasterPaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + evaluated(std::move(evaluated_)) {} + +RasterLayerProperties::~RasterLayerProperties() = default; + +const RasterLayer::Impl& RasterLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/raster_layer_properties.hpp b/src/mbgl/style/layers/raster_layer_properties.hpp index 08818c9fb3..c380ea471d 100644 --- a/src/mbgl/style/layers/raster_layer_properties.hpp +++ b/src/mbgl/style/layers/raster_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -55,5 +57,18 @@ class RasterPaintProperties : public Properties< RasterFadeDuration > {}; +class RasterLayerProperties final : public LayerProperties { +public: + explicit RasterLayerProperties(Immutable); + RasterLayerProperties( + Immutable, + RasterPaintProperties::PossiblyEvaluated); + ~RasterLayerProperties() override; + + const RasterLayer::Impl& layerImpl() const; + // Data members. + RasterPaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/symbol_layer_properties.cpp b/src/mbgl/style/layers/symbol_layer_properties.cpp index 5a1ce713ba..aeca39b419 100644 --- a/src/mbgl/style/layers/symbol_layer_properties.cpp +++ b/src/mbgl/style/layers/symbol_layer_properties.cpp @@ -2,8 +2,26 @@ #include +#include + namespace mbgl { namespace style { +SymbolLayerProperties::SymbolLayerProperties( + Immutable impl_) + : LayerProperties(std::move(impl_)) {} + +SymbolLayerProperties::SymbolLayerProperties( + Immutable impl_, + SymbolPaintProperties::PossiblyEvaluated evaluated_) + : LayerProperties(std::move(impl_)), + evaluated(std::move(evaluated_)) {} + +SymbolLayerProperties::~SymbolLayerProperties() = default; + +const SymbolLayer::Impl& SymbolLayerProperties::layerImpl() const { + return static_cast(*baseImpl); +} + } // namespace style } // namespace mbgl diff --git a/src/mbgl/style/layers/symbol_layer_properties.hpp b/src/mbgl/style/layers/symbol_layer_properties.hpp index caefbad137..6e3fa54241 100644 --- a/src/mbgl/style/layers/symbol_layer_properties.hpp +++ b/src/mbgl/style/layers/symbol_layer_properties.hpp @@ -3,6 +3,8 @@ #pragma once #include +#include +#include #include #include #include @@ -331,5 +333,18 @@ class SymbolPaintProperties : public Properties< TextTranslateAnchor > {}; +class SymbolLayerProperties final : public LayerProperties { +public: + explicit SymbolLayerProperties(Immutable); + SymbolLayerProperties( + Immutable, + SymbolPaintProperties::PossiblyEvaluated); + ~SymbolLayerProperties() override; + + const SymbolLayer::Impl& layerImpl() const; + // Data members. + SymbolPaintProperties::PossiblyEvaluated evaluated; +}; + } // namespace style } // namespace mbgl -- cgit v1.2.1