+#include <msp/core/maputils.h>
#include <msp/datafile/collection.h>
#include "bindable.h"
#include "gl.h"
descent(0)
{ }
+// Avoid synthesizing ~RefPtr in files including font.h
+Font::~Font()
+{ }
+
void Font::set_texture(const Texture2D &t)
{
texture = &t;
return *texture;
}
-void Font::add_glyph(unsigned code, float x1, float y1, float x2, float y2, float w, float h, float ox, float oy, float adv)
+void Font::add_glyph(const Glyph &g)
{
- Glyph glyph;
- glyph.code = code;
- glyph.x1 = x1;
- glyph.y1 = y1;
- glyph.x2 = x2;
- glyph.y2 = y2;
- glyph.w = w;
- glyph.h = h;
- glyph.off_x = ox;
- glyph.off_y = oy;
- glyph.advance = adv;
- glyphs.insert(GlyphMap::value_type(code, glyph));
+ insert_unique(glyphs, g.code, g);
}
float Font::get_string_width(const string &str, StringCodec::Decoder &dec) const
return x;
}
-void Font::draw_string(const string &str, StringCodec::Decoder &dec) const
+void Font::draw_string(const string &str, StringCodec::Decoder &dec, const Color &color) const
{
+ Bind bind_tex(get_texture(), true);
Immediate imm((TEXCOORD2, COLOR4_UBYTE, VERTEX2));
- draw_string(str, dec, imm);
+ imm.color(color);
+ build_string(str, dec, imm);
}
-void Font::draw_string(const string &str, StringCodec::Decoder &dec, PrimitiveBuilder &bld) const
+void Font::build_string(const string &str, StringCodec::Decoder &dec, PrimitiveBuilder &bld) const
{
MatrixStack::Push push_mtx(bld.matrix());
- Bind bind_tex(get_texture(), true);
bld.begin(QUADS);
for(string::const_iterator i=str.begin(); i!=str.end();)
add("texture", &Loader::texture);
add("texture", &Loader::texture_ref);
add("glyph", &Loader::glyph);
-
- // Deprecated aliases
- add("default_size", &Font::native_size);
- add("texture_inline", &Loader::texture);
}
void Font::Loader::glyph(unsigned c)