#ifndef SPECTRE_GRAPHICS_TEXT_H #define SPECTRE_GRAPHICS_TEXT_H #include #include #include #include #include class Text : public Renderable2D { public : /* TODO enum Properties { Regular = 0, Bold = 1 << 0, Italic = 1 << 1, Underline = 1 << 2, StrikeThrough = 1 << 3 }; enum Alignment { Left, Right, Center }; */ Text(); Text(const std::string text, unsigned int size, const Font& font); void setString(const std::string& string); const std::string& getString() const; void setCharacterSize(unsigned int size); unsigned int getCharacteSize() const; void setFont(const Font& font); const Font* getFont() const; void setColor(const Color& color); const Color& getColor() const; void setOutlineColor(const Color& color); const Color& getOutlineColor() const; void setOutlineSize(unsigned int size); unsigned int getOutlineSize() const; Vector2f getSize() const; virtual const std::vector& getVertices() const; virtual const std::vector& getIndices() const; virtual const RenderType getRenderType() const { return RenderType_UI; }; virtual const Texture* getTexture() const; void render(Renderer2D& renderer) const; private : void updateGeometry() const; private : // String containing the text. std::string m_string; // Character size (in pixels, not points). unsigned int m_size; const Font* m_font; Color m_color; Color m_outlineColor; unsigned int m_outlineWidth; std::vector m_indicies; mutable bool m_geometryNeedsUpdate; mutable std::vector m_vertices; }; #endif /* SPECTRE_GRAPHICS_TEXT_H */