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

Method cutMaxLengthFromBeginning

MyGUIEngine/src/MyGUI_TextIterator.cpp:505–570  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

503 }
504
505 void TextIterator::cutMaxLengthFromBeginning(size_t _max)
506 {
507 // узнаем размер без тегов
508 size_t size = getSize();
509 if (size <= _max)
510 return;
511
512 // разница
513 size_t diff = size - _max;
514
515 // последний цвет
516 UString::utf32string::iterator iter_colour = mEnd;
517
518 // теперь пройдем от начала и узнаем реальную позицию разницы
519 UString::utf32string::iterator iter = mText.begin();
520 for (; iter != mEnd; ++iter)
521 {
522 if ((*iter) == L'#')
523 {
524 UString::utf32string::iterator save = iter;
525
526 // следующий символ
527 ++iter;
528 if (iter == mEnd)
529 break;
530
531 // тэг цвета
532 if ((*iter) != L'#')
533 {
534 // остальные 5 символов цвета
535 for (size_t pos = 0; pos < 5; pos++)
536 {
537 ++iter;
538 if (iter == mEnd)
539 {
540 --iter;
541 break;
542 }
543 }
544 // сохраняем цвет
545 iter_colour = save;
546 }
547 continue;
548 }
549 // обычный символ был
550 if (diff == 0)
551 break;
552 --diff;
553 }
554
555 UString::utf32string colour;
556 // если бы цвет, то вставляем назад
557 if (iter_colour != mEnd)
558 {
559 colour.append(iter_colour, iter_colour + size_t(7));
560 }
561
562 mCurrent = erase(mText.begin(), iter);

Callers 2

setTextMethod · 0.80
insertTextMethod · 0.80

Calls 5

getSizeFunction · 0.85
beginMethod · 0.45
appendMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected