void TextIterator::clearTagColour() { if (mCurrent == mEnd) return; UString::iterator iter = mCurrent; UString colour; // нам нужен последний цвет while (getTagColour(colour, iter)) { // обязательно обновляем итераторы iter = mCurrent = erase(mCurrent, iter); mEnd = mText.end(); } }
// возвращает цвет bool TextIterator::getTagColour(UString& _colour) const { if (mCurrent == mEnd) return false; UString::iterator iter = mCurrent; // нам нужен последний цвет bool ret = false; while (getTagColour(_colour, iter)) { ret = true; } return ret; }
// возвращает цвет bool TextIterator::getTagColour(Ogre::UTFString & _colour) { if (mCurrent == mEnd) return false; Ogre::UTFString::iterator iter = mCurrent; // нам нужен последний цвет bool ret = false; while (true) { if (!getTagColour(_colour, iter)) break; ret = true; }; return ret; }
// возвращает цвет Ogre::UTFString TextIterator::getTagColour(bool _clear) { if (mCurrent == mEnd) return L""; Ogre::UTFString::iterator iter = mCurrent; Ogre::UTFString colour; // нам нужен последний цвет while (getTagColour(colour, iter)) { if (_clear) { // обязательно обновляем итераторы iter = mCurrent = erase(mCurrent, iter); mEnd = mText.end(); } }; return colour; }