示例#1
0
Rasterizer *Font::newRasterizer(love::image::ImageData *data, const std::string &text)
{
	size_t strlen = text.size();
	size_t numglyphs = 0;

	uint32 *glyphs = new uint32[strlen];

	try
	{
		utf8::iterator<std::string::const_iterator> i(text.begin(), text.begin(), text.end());
		utf8::iterator<std::string::const_iterator> end(text.end(), text.begin(), text.end());

		while (i != end)
			glyphs[numglyphs++] = *i++;
	}
	catch (utf8::exception &e)
	{
		delete [] glyphs;
		throw love::Exception("UTF-8 decoding error: %s", e.what());
	}

	Rasterizer *r = newRasterizer(data, glyphs, numglyphs);
	delete [] glyphs;

	return r;
}
示例#2
0
Rasterizer * Font::newRasterizer(love::image::ImageData * data, std::string glyphs)
{
    int length = glyphs.size();
    unsigned short * g = new unsigned short[length];
    for (int i = 0; i < length; i++) {
        g[i] = (unsigned char)glyphs[i];
    }
    Rasterizer * r = newRasterizer(data, g, length);
    delete [] g;
    return r;
}