#pragma once #include "element.hpp" #include "../std/map.hpp" #include "../std/vector.hpp" #include "../std/shared_ptr.hpp" #include "../base/string_utils.hpp" #include "../base/matrix.hpp" #include "../graphics/glyph_cache.hpp" #include "../graphics/display_list.hpp" #include "../graphics/glyph_layout.hpp" namespace gui { class CachedTextView : public Element { private: string m_text; strings::UniString m_uniText; vector > m_dls; vector > m_maskedDls; scoped_ptr m_layout; scoped_ptr m_maskedLayout; mutable vector m_boundRects; public: struct Params : public Element::Params { string m_text; }; CachedTextView(Params const & p); void setText(string const & text); string const & text() const; vector const & boundRects() const; void draw(graphics::OverlayRenderer * r, math::Matrix const & m) const; void cache(); void purge(); void layout(); void setFont(EState state, graphics::FontDesc const & desc); void setPivot(m2::PointD const & pv); }; }