#pragma once #include "drape/batcher.hpp" #include "drape/glstate.hpp" #include "drape/pointers.hpp" #include "drape_frontend/tile_key.hpp" #include "std/vector.hpp" namespace dp { class TextureManager; class RenderBucket; } // namespace dp namespace df { class MapShape; struct OverlayRenderData { TileKey m_tileKey; dp::GLState m_state; drape_ptr m_bucket; OverlayRenderData(TileKey const & key, dp::GLState const & state, drape_ptr && bucket) : m_tileKey(key), m_state(state), m_bucket(move(bucket)) {} }; using TOverlaysRenderData = vector; class OverlayBatcher { public: OverlayBatcher(TileKey const & key); void Batch(drape_ptr const & shape, ref_ptr texMng); void Finish(TOverlaysRenderData & data); private: void FlushGeometry(TileKey const & key, dp::GLState const & state, drape_ptr && bucket); dp::Batcher m_batcher; TOverlaysRenderData m_data; }; } // namespace df