void Console::appendTextRow(const CeGuiString& text, const colour color) { const float MIN_SPACE_POS = 0.5; CeGuiString textLeft = CeGuiString(text); CEGUI::Font* font = const_cast<CEGUI::Font*>(mDisplay->getFont()); unsigned int width = mDisplay->getPixelSize().d_width * 0.95f; while (textLeft.length() > 0) { CeGuiString textLine; if (font->getTextExtent(textLeft) > width) { unsigned int numLastChar = font->getCharAtPixel(textLeft, width); unsigned int numSpace = textLeft.find_last_of(" \t\n", numLastChar); if (numSpace == CeGuiString::npos || numSpace < MIN_SPACE_POS*numLastChar) { textLine = textLeft.substr(0, numLastChar); textLeft = textLeft.substr(numLastChar); } else { textLine = textLeft.substr(0, numSpace); textLeft = textLeft.substr(numSpace+1); } } else { textLine = textLeft; textLeft = ""; } ListboxTextItem* item = new ListboxTextItem(textLine); item->setTextColours(color); mDisplay->addItem(item); mDisplay->ensureItemIsVisible(item); // scroll to bottom; } //ListboxWrappedTextItem* item = new ListboxWrappedTextItem(text); //item->setTextColours(color); //item->setTextFormatting(CEGUI::WordWrapLeftAligned); //mDisplay->addItem(item); //mDisplay->ensureItemIsVisible(item); // scroll to bottom;*/ }
void Zonsole::addMessage(const colour &c, const String &s) { ListboxTextItem *i = new ListboxTextItem(s); i->setTextColours(c); bufferWnd->addItem(i); }