MCPcopy Create free account
hub / github.com/MyGUI/mygui / getTextInterval

Method getTextInterval

MyGUIEngine/src/MyGUI_EditBox.cpp:1102–1153  ·  view source on GitHub ↗

возвращает текст

Source from the content-addressed store, hash-verified

1100
1101 // возвращает текст
1102 UString EditBox::getTextInterval(size_t _start, size_t _count) const
1103 {
1104 // подстраховка
1105 if (_start > mTextLength)
1106 _start = mTextLength;
1107 // конец диапазона
1108 size_t end = _start + _count;
1109
1110 // итератор нашей строки
1111 TextIterator iterator(getRealString());
1112
1113 // дефолтный цвет
1114 UString colour;
1115 if (mClientText != nullptr)
1116 colour = TextIterator::convertTagColour(mClientText->getTextColour());
1117
1118 // нужно ли вставлять цвет
1119 bool need_colour = true;
1120
1121 // цикл прохода по строке
1122 while (iterator.moveNext())
1123 {
1124 // текущаяя позиция
1125 size_t pos = iterator.getPosition();
1126
1127 // еще рано
1128 if (pos < _start)
1129 {
1130 // берем цвет из позиции и запоминаем
1131 iterator.getTagColour(colour);
1132
1133 continue;
1134 }
1135
1136 // проверяем на надобность начального тега
1137 if (pos == _start)
1138 {
1139 need_colour = !iterator.getTagColour(colour);
1140 // сохраняем место откуда начинается
1141 iterator.saveStartPoint();
1142 }
1143
1144 // а теперь просто до конца диапазона
1145 else if (pos == end)
1146 break;
1147 }
1148
1149 // возвращаем строку
1150 if (need_colour)
1151 return colour + iterator.getFromStart();
1152 return iterator.getFromStart();
1153 }
1154
1155 // выделяет цветом диапазон
1156 void EditBox::_setTextColour(size_t _start, size_t _count, const Colour& _colour, bool _history)

Calls 5

moveNextMethod · 0.80
getTagColourMethod · 0.80
saveStartPointMethod · 0.80
getFromStartMethod · 0.80
getPositionMethod · 0.45

Tested by

no test coverage detected