const Texture2D &Font::get_texture() const
{
if(!texture)
- throw InvalidState("No texture");
+ throw logic_error("No texture");
return *texture;
}
glyphs.insert(GlyphMap::value_type(code, glyph));
}
-float Font::get_string_width(const string &str, Codecs::Decoder &dec) const
+float Font::get_string_width(const string &str, StringCodec::Decoder &dec) const
{
float x = 0;
return x;
}
-void Font::draw_string(const string &str, Codecs::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, Codecs::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();)
void Font::Loader::texture_ref(const string &name)
{
- obj.texture = get_collection().get<Texture2D>(name);
+ obj.texture = &get_collection().get<Texture2D>(name);
obj.texture.keep();
}