+++ /dev/null
-#ifndef MSP_GL_TEXT_H_
-#define MSP_GL_TEXT_H_
-
-#include "font.h"
-#include "mesh.h"
-#include "object.h"
-#include "technique.h"
-
-namespace Msp {
-namespace GL {
-
-/**
-Creates an object consisting of the visual representation of a string. Can be
-used with an ObjectInstance to further customize the appearance.
-*/
-class Text: public Renderable
-{
-public:
- enum HorizontalAlign
- {
- LEFT,
- CENTER,
- RIGHT
- };
-
- enum VerticalAlign
- {
- DESCENT,
- BASELINE,
- MIDLINE,
- ASCENT
- };
-
-private:
- const Font &font;
- Mesh mesh;
- Object object;
- Technique technique;
- float horz_align;
- float vert_offset;
- float width;
-
-public:
- Text(const Font &, const Technique * = 0);
-
- const Mesh *get_mesh() const { return &mesh; }
-
- /** Sets technique to render with. It should have a texture slot named
- "diffusemap", which will be replaced with the font's texture. */
- void set_technique(const Technique *);
-
- const Technique *get_technique() const { return object.get_technique(); }
-
- /// Sets the string to be displayed.
- void set_text(const std::string &, StringCodec::Decoder &);
-
- template<typename C>
- void set_text(const std::string &t)
- {
- typename C::Decoder dec;
- set_text(t, dec);
- }
-
- void set_text(const std::string &t)
- { set_text<StringCodec::Utf8>(t); }
-
- /// Clears the object's contents.
- void clear();
-
- /// Sets horizontal and vertical alignment with predefined anchors.
- void set_alignment(HorizontalAlign, VerticalAlign = BASELINE);
-
- /** Sets horizontal and vertical alignment. 0.0 means left or baseline,
- 1.0 means right or top. */
- void set_alignment(float, float = 0.0f);
-
- float get_width() const { return width; }
-
- virtual void render(Renderer &, const Tag &) const;
-
- operator const Object &() const { return object; }
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif