#pragma once #include "drape/pointers.hpp" class ScreenBase; namespace dp { class OverlayHandle; class OverlayTree; class VertexArrayBuffer; class RenderBucket { public: RenderBucket(TransferPointer buffer); ~RenderBucket(); RefPointer GetBuffer(); void AddOverlayHandle(TransferPointer handle); void Update(ScreenBase const & modelView); void CollectOverlayHandles(RefPointer tree); void Render(ScreenBase const & screen); /// Only for testing! Don't use this function in production code! template void ForEachOverlay(ToDo const & todo) { for (MasterPointer & h : m_overlay) todo(h.GetRaw()); } private: vector > m_overlay; MasterPointer m_buffer; }; } // namespace dp