mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
This commit is contained in:
@@ -199,13 +199,20 @@ namespace opengl
|
||||
|
||||
Glyph * g;
|
||||
|
||||
utf8::iterator<std::string::const_iterator> i (line.begin(), line.begin(), line.end());
|
||||
utf8::iterator<std::string::const_iterator> end (line.end(), line.begin(), line.end());
|
||||
while (i != end) {
|
||||
int c = *i++;
|
||||
g = glyphs[c];
|
||||
if (!g) g = addGlyph(c);
|
||||
temp += static_cast<int>(g->spacing * mSpacing);
|
||||
try
|
||||
{
|
||||
utf8::iterator<std::string::const_iterator> i (line.begin(), line.begin(), line.end());
|
||||
utf8::iterator<std::string::const_iterator> end (line.end(), line.begin(), line.end());
|
||||
while (i != end) {
|
||||
int c = *i++;
|
||||
g = glyphs[c];
|
||||
if (!g) g = addGlyph(c);
|
||||
temp += static_cast<int>(g->spacing * mSpacing);
|
||||
}
|
||||
}
|
||||
catch (utf8::invalid_utf8 e)
|
||||
{
|
||||
throw love::Exception(e.what());
|
||||
}
|
||||
|
||||
return temp;
|
||||
@@ -251,11 +258,13 @@ namespace opengl
|
||||
|
||||
// on wordwrap, push line to line buffer and clear string builder
|
||||
if (width >= wrap && oldwidth > 0) {
|
||||
if (width > maxw)
|
||||
maxw = width;
|
||||
int realw = width;
|
||||
lines_to_draw.push_back( string_builder.str() );
|
||||
string_builder.str( "" );
|
||||
width = static_cast<float>(getWidth( word ));
|
||||
realw -= width;
|
||||
if (realw > maxw)
|
||||
maxw = realw;
|
||||
}
|
||||
string_builder << word << " ";
|
||||
width += width_space;
|
||||
|
||||
@@ -43,7 +43,14 @@ namespace opengl
|
||||
{
|
||||
Font * t = luax_checkfont(L, 1);
|
||||
const char * str = luaL_checkstring(L, 2);
|
||||
lua_pushinteger(L, t->getWidth(str));
|
||||
try
|
||||
{
|
||||
lua_pushinteger(L, t->getWidth(str));
|
||||
}
|
||||
catch (love::Exception & e)
|
||||
{
|
||||
return luaL_error(L, e.what());
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -52,10 +59,18 @@ namespace opengl
|
||||
Font * t = luax_checkfont(L, 1);
|
||||
const char * str = luaL_checkstring(L, 2);
|
||||
float wrap = (float) luaL_checknumber(L, 3);
|
||||
int max_width = 0;
|
||||
std::vector<std::string> lines = t->getWrap(str, wrap, &max_width);
|
||||
int max_width = 0, numlines = 0;
|
||||
try
|
||||
{
|
||||
std::vector<std::string> lines = t->getWrap(str, wrap, &max_width);
|
||||
numlines = lines.size();
|
||||
}
|
||||
catch (love::Exception & e)
|
||||
{
|
||||
return luaL_error(L, e.what());
|
||||
}
|
||||
lua_pushinteger(L, max_width);
|
||||
lua_pushinteger(L, lines.size());
|
||||
lua_pushinteger(L, numlines);
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user