mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-02-10 14:14:05 +00:00
Add Lua function text_getStringWidth()
This commit is contained in:
parent
dee156cf7a
commit
b70de7f94b
6 changed files with 53 additions and 1 deletions
|
@ -8651,7 +8651,7 @@ luaFunc(avatar_updatePosition)
|
||||||
|
|
||||||
luaFunc(avatar_toggleMovement)
|
luaFunc(avatar_toggleMovement)
|
||||||
{
|
{
|
||||||
dsq->game->avatar->toggleMovement((bool)lua_tointeger(L, 1));
|
dsq->game->avatar->toggleMovement(getBool(L));
|
||||||
luaReturnNil();
|
luaReturnNil();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9047,6 +9047,12 @@ luaFunc(text_getHeight)
|
||||||
luaReturnNum(txt ? txt->getHeight() : 0.0f);
|
luaReturnNum(txt ? txt->getHeight() : 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
luaFunc(text_getStringWidth)
|
||||||
|
{
|
||||||
|
BaseText *txt = getText(L);
|
||||||
|
luaReturnNum(txt ? txt->getStringWidth(getString(L, 2)) : 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
luaFunc(loadShader)
|
luaFunc(loadShader)
|
||||||
{
|
{
|
||||||
int handle = 0;
|
int handle = 0;
|
||||||
|
@ -10120,6 +10126,7 @@ static const struct {
|
||||||
luaRegister(text_setWidth),
|
luaRegister(text_setWidth),
|
||||||
luaRegister(text_setAlign),
|
luaRegister(text_setAlign),
|
||||||
luaRegister(text_getHeight),
|
luaRegister(text_getHeight),
|
||||||
|
luaRegister(text_getStringWidth),
|
||||||
|
|
||||||
luaRegister(loadShader),
|
luaRegister(loadShader),
|
||||||
luaRegister(createShader),
|
luaRegister(createShader),
|
||||||
|
|
|
@ -14,6 +14,7 @@ public:
|
||||||
virtual void setFontSize(int sz) = 0;
|
virtual void setFontSize(int sz) = 0;
|
||||||
virtual void setAlign(Align a) = 0;
|
virtual void setAlign(Align a) = 0;
|
||||||
virtual float getHeight() = 0;
|
virtual float getHeight() = 0;
|
||||||
|
virtual float getStringWidth(const std::string& text) = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -425,6 +425,30 @@ int BitmapText::getNumLines()
|
||||||
return lines.size();
|
return lines.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float BitmapText::getStringWidth(const std::string& text)
|
||||||
|
{
|
||||||
|
std::string tmp;
|
||||||
|
int maxsize = 0;
|
||||||
|
tmp.reserve(text.length());
|
||||||
|
for (size_t i = 0; i < text.size(); i++)
|
||||||
|
{
|
||||||
|
if(text[i] == '\n')
|
||||||
|
{
|
||||||
|
std::pair<int, int> dim;
|
||||||
|
bmpFont->font.GetStringSize(tmp, &dim);
|
||||||
|
maxsize = std::max(maxsize, dim.first);
|
||||||
|
tmp.resize(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tmp += text[i];
|
||||||
|
}
|
||||||
|
std::pair<int, int> dim;
|
||||||
|
bmpFont->font.GetStringSize(tmp, &dim);
|
||||||
|
maxsize = std::max(maxsize, dim.first);
|
||||||
|
|
||||||
|
return maxsize * bmpFont->scale;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
BitmapText::BitmapText() : RenderObject()
|
BitmapText::BitmapText() : RenderObject()
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,6 +75,7 @@ public:
|
||||||
virtual float getHeight();
|
virtual float getHeight();
|
||||||
void unloadDevice();
|
void unloadDevice();
|
||||||
void reloadDevice();
|
void reloadDevice();
|
||||||
|
virtual float getStringWidth(const std::string& text);
|
||||||
|
|
||||||
int getNumLines();
|
int getNumLines();
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -52,6 +52,24 @@ float DebugFont::getHeight()
|
||||||
return fontDrawSize * lines.size() * 1.5f; // vspc in render()
|
return fontDrawSize * lines.size() * 1.5f; // vspc in render()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float DebugFont::getStringWidth(const std::string& text)
|
||||||
|
{
|
||||||
|
int maxchars = 0;
|
||||||
|
int c = 0;
|
||||||
|
for (size_t i = 0; i < text.size(); i++)
|
||||||
|
{
|
||||||
|
if(text[i] == '\n')
|
||||||
|
{
|
||||||
|
maxchars = std::max(maxchars, c);
|
||||||
|
c = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
++c;
|
||||||
|
}
|
||||||
|
maxchars = std::max(maxchars, c);
|
||||||
|
return float(fontDrawSize * maxchars);
|
||||||
|
}
|
||||||
|
|
||||||
void DebugFont::formatText()
|
void DebugFont::formatText()
|
||||||
{
|
{
|
||||||
std::string text;
|
std::string text;
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
int getNumLines() { return lines.size(); }
|
int getNumLines() { return lines.size(); }
|
||||||
virtual void setAlign(Align align);
|
virtual void setAlign(Align align);
|
||||||
virtual float getHeight();
|
virtual float getHeight();
|
||||||
|
virtual float getStringWidth(const std::string& text);
|
||||||
protected:
|
protected:
|
||||||
int fontDrawSize, textWidth;
|
int fontDrawSize, textWidth;
|
||||||
void formatText();
|
void formatText();
|
||||||
|
|
Loading…
Add table
Reference in a new issue