#pragma once #include #include #include namespace mbgl { namespace style { class PluginLayer final : public Layer { public: PluginLayer(const std::string& layerID, const std::string& sourceID, const style::LayerTypeInfo layerTypeInfo, const std::string& layerProperties); ~PluginLayer() override; // Private implementation class Impl; const Impl& impl() const; Mutable mutableImpl() const; PluginLayer(Immutable); std::unique_ptr cloneRef(const std::string& id) const final; public: using OnRenderLayer = std::function; using OnUpdateLayer = std::function; using OnUpdateLayerProperties = std::function; void* _platformReference = nullptr; protected: std::optional setPropertyInternal(const std::string& name, const conversion::Convertible& value) final; StyleProperty getProperty(const std::string& name) const final; Value serialize() const final; Mutable mutableBaseImpl() const final; }; } // namespace style } // namespace mbgl