#pragma once #include #include namespace scwx::qt::map { class DrawLayer : public GenericLayer { Q_DISABLE_COPY_MOVE(DrawLayer) public: explicit DrawLayer(std::shared_ptr glContext, const std::string& imGuiContextName); virtual ~DrawLayer(); void Initialize(const std::shared_ptr& mapContext) override; void Render(const std::shared_ptr& mapContext, const QMapLibre::CustomLayerRenderParameters&) override; void Deinitialize() override; bool RunMousePicking(const std::shared_ptr& mapContext, const QMapLibre::CustomLayerRenderParameters& params, const QPointF& mouseLocalPos, const QPointF& mouseGlobalPos, const glm::vec2& mouseCoords, const common::Coordinate& mouseGeoCoords, std::shared_ptr& eventHandler) override; protected: void AddDrawItem(const std::shared_ptr& drawItem); void ImGuiFrameStart(const std::shared_ptr& mapContext); void ImGuiFrameEnd(); void ImGuiInitialize(const std::shared_ptr& mapContext); void RenderWithoutImGui(const QMapLibre::CustomLayerRenderParameters& params); void ImGuiSelectContext(); private: class Impl; std::unique_ptr p; }; } // namespace scwx::qt::map