GRAPHICS: Further work on MacText class

This commit is contained in:
Eugene Sandulenko 2016-12-14 19:37:45 +01:00
parent 34a9c588b0
commit aecc17e5a5
2 changed files with 62 additions and 0 deletions

View file

@ -20,6 +20,7 @@
*/
#include "graphics/macgui/mactext.h"
#include "graphics/font.h"
namespace Graphics {
@ -27,6 +28,54 @@ MacText::MacText(Common::String s, Graphics::Font *font, int maxWidth) {
_str = s;
_font = font;
_maxWidth = maxWidth;
_interLinear = 2; // 2 pixels by default
_textMaxWidth = -1;
splitString();
}
void MacText::splitString() {
const char *s = _str.c_str();
Common::String tmp;
bool prevCR;
while (*s) {
if (*s == '\n' && prevCR) { // trean \r\n as one
prevCR = false;
continue;
}
if (*s == '\r')
prevCR = true;
if (*s == '\r' || *s == '\n') {
_text.push_back(tmp);
_widths.push_back(_font->getStringWidth(tmp));
tmp.clear();
continue;
}
tmp += *s;
}
calcMaxWidth();
}
void MacText::calcMaxWidth() {
int max = -1;
for (uint i = 0; i < _widths.size(); i++)
if (max < _widths[i])
max = _widths[i];
_textMaxWidth = max;
}
void MacText::render() {
}
} // End of namespace Graphics

View file

@ -31,10 +31,23 @@ class MacText {
public:
MacText(Common::String s, Graphics::Font *font, int maxWidth = -1);
void setInterLinear(int interLinear) { _interLinear = interLinear; }
private:
void splitString();
void render();
void calcMaxWidth();
private:
Common::String _str;
Graphics::Font *_font;
int _maxWidth;
int _interLinear;
Common::Array<Common::String> _text;
Common::Array<int> _widths;
int _textMaxWidth;
};
} // End of namespace Graphics