#pragma once #include #include #include #include namespace scwx { namespace qt { namespace gl { namespace draw { class PlacefileIcons : public DrawItem { public: explicit PlacefileIcons(const std::shared_ptr& context); ~PlacefileIcons(); PlacefileIcons(const PlacefileIcons&) = delete; PlacefileIcons& operator=(const PlacefileIcons&) = delete; PlacefileIcons(PlacefileIcons&&) noexcept; PlacefileIcons& operator=(PlacefileIcons&&) noexcept; void set_selected_time(std::chrono::system_clock::time_point selectedTime); void set_thresholded(bool thresholded); void Initialize() override; void Render(const QMapLibreGL::CustomLayerRenderParameters& params, bool textureAtlasChanged) override; void Deinitialize() override; bool RunMousePicking(const QMapLibreGL::CustomLayerRenderParameters& params, const QPointF& mouseLocalPos, const QPointF& mouseGlobalPos, const glm::vec2& mouseCoords) override; /** * Resets and prepares the draw item for adding a new set of icons. */ void StartIcons(); /** * Configures the textures for drawing the placefile icons. * * @param [in] iconFiles A list of icon files * @param [in] baseUrl The base URL of the placefile */ void SetIconFiles( const std::vector>& iconFiles, const std::string& baseUrl); /** * Adds a placefile icon to the internal draw list. * * @param [in] di Placefile icon */ void AddIcon(const std::shared_ptr& di); /** * Finalizes the draw item after adding new icons. */ void FinishIcons(); private: class Impl; std::unique_ptr p; }; } // namespace draw } // namespace gl } // namespace qt } // namespace scwx