#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; // Returns constants mask for the data-driven properties. virtual unsigned long constantsMask() const { return 0u; } Immutable baseImpl; // Contains render passes used by the renderer, see `mbgl::RenderPass`. uint8_t renderPasses = 0u; protected: LayerProperties(Immutable impl) : baseImpl(std::move(impl)) {} }; template inline const auto& getEvaluated(const Immutable& properties) { return static_cast(*properties).evaluated; } template inline const auto& getCrossfade(const Immutable& properties) { return static_cast(*properties).crossfade; } } // namespace style } // namespace mbgl