#pragma once #include #include namespace mbgl { class TransformState; namespace style { class CustomLayer::Impl : public Layer::Impl { public: Impl(const std::string& id, CustomLayerInitializeFunction, CustomLayerRenderFunction, CustomLayerDeinitializeFunction, void* context); Impl(const Impl&); ~Impl() final; void initialize(); void deinitialize(); void render(const TransformState&) const; private: std::unique_ptr clone() const override; std::unique_ptr cloneRef(const std::string& id) const override; void stringifyLayout(rapidjson::Writer&) const override; void cascade(const CascadeParameters&) final {} bool evaluate(const PropertyEvaluationParameters&) final; std::unique_ptr createBucket(BucketParameters&, const GeometryTileLayer&) const final; CustomLayerInitializeFunction initializeFn = nullptr; CustomLayerRenderFunction renderFn = nullptr; CustomLayerDeinitializeFunction deinitializeFn = nullptr; void* context = nullptr; }; } // namespace style } // namespace mbgl