возвращает текст
| 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) |
no test coverage detected