// возвращает текст без тегов Ogre::UTFString TextIterator::getOnlyText(const Ogre::UTFString& _text) { Ogre::UTFString ret; ret.reserve(_text.size()); Ogre::UTFString::const_iterator end = _text.end(); for (Ogre::UTFString::const_iterator iter=_text.begin(); iter!=end; ++iter) { if ((*iter) == L'#') { // следующий символ ++ iter; if (iter == end) break; // тэг цвета if ((*iter) != L'#') { // остальные 5 символов цвета for (size_t pos=0; pos<5; pos++) { ++ iter; if (iter == end) { --iter; break; } } continue; } } // обыкновенный символ ret.push_back(*iter); } return ret; }
void MultiList::flipList() { if (ITEM_NONE == mSortColumnIndex) return; size_t end = mVectorColumnInfo.front().list->getItemCount(); if (0 == end) return; end --; size_t start = 0; Ogre::UTFString tmp; tmp.reserve(64); size_t index1, index2; VectorSizeT vec; size_t size2 = mToSortIndex.size(); vec.resize(size2); for (size_t pos=0; pos<size2; ++pos) vec[mToSortIndex[pos]] = pos; while (start < end) { for (VectorColumnInfo::iterator iter=mVectorColumnInfo.begin(); iter!=mVectorColumnInfo.end(); ++iter) { tmp = (*iter).list->getItem(start); (*iter).list->setItem(start, (*iter).list->getItem(end)); (*iter).list->setItem(end, tmp); } index1 = vec[start]; index2 = vec[end]; mToSortIndex[index1] = mToSortIndex[index2]; mToSortIndex[index2] = start; vec[start] = vec[end]; vec[end] = index1; start++; end--; } }