28 TextIterator::TextIterator() :
38 mCurrent(mText.begin()),
50 if (mCurrent == mEnd)
return false;
91 for (
size_t pos = 0; pos < 5; pos++)
127 if (mCurrent == mEnd)
return false;
143 if (mCurrent == mEnd)
return false;
147 if (mCurrent == mEnd)
return false;
149 const size_t SIZE = 16;
153 swprintf(buff, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red * 255), (
int)(_colour.
green * 255), (
int)(_colour.
blue * 255));
155 swprintf(buff, SIZE, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red * 255), (
int)(_colour.
green * 255), (
int)(_colour.
blue * 255));
159 insert(mCurrent, tmpStr);
166 if (mCurrent == mEnd)
return false;
170 if (mCurrent == mEnd)
return false;
173 if ( (_colour.
size() != 7) || (_colour.
find(L
'#', 1) != _colour.
npos) )
return false;
176 insert(mCurrent, _colour);
194 if (iter == mEnd)
break;
200 for (
size_t pos = 0; pos < 5; pos++)
234 if (iter == end)
break;
240 for (
size_t pos = 0; pos < 5; pos++)
263 if ( (_iter == mEnd) || ((*_iter) != L
'#') )
return false;
267 if ( (_iter == mEnd) || ((*_iter) == L
'#') )
return false;
270 wchar_t buff[16] = L
"#FFFFFF\0";
271 buff[1] = (wchar_t)(*_iter);
272 for (
size_t pos = 2; pos < 7; pos++)
275 if ( _iter == mEnd )
return false;
276 buff[pos] = (wchar_t)(*_iter);
302 if (mCurrent == mEnd)
return false;
309 if (mSave == mEnd)
return L
"";
310 size_t start = mSave - mText.
begin();
311 return mText.
substr(start, mCurrent - mText.
begin() - start);
316 if (mSave == mEnd)
return false;
317 mCurrent = erase(mSave, mCurrent);
318 mSave = mEnd = mText.
end();
326 insert(mCurrent, text);
336 insert(mCurrent, text);
341 if (_char == L
'#')
return L
"##";
342 wchar_t buff[16] = L
"_\0";
343 buff[0] = (wchar_t)_char;
349 const size_t SIZE = 16;
353 swprintf(buff, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red * 255), (
int)(_colour.
green * 255), (
int)(_colour.
blue * 255));
355 swprintf(buff, SIZE, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red * 255), (
int)(_colour.
green * 255), (
int)(_colour.
blue * 255));
367 if (L
'#' == (*iter)) iter = text.
insert(++iter, L
'#');
379 size_t pos = _start - mText.
begin();
380 size_t pos_save = (mSave == mEnd) ?
ITEM_NONE : _start - mText.
begin();
384 _start = mText.
begin() + pos;
386 (pos_save ==
ITEM_NONE) ? mSave = mEnd : mSave = mText.
begin() + pos_save;
394 size_t start = _start - mText.
begin();
397 return mText.
erase(_start, _end);
400 void TextIterator::clear()
402 if (mText.
empty())
return;
409 mCurrent = mText.
begin();
410 mEnd = mSave = mText.
end();
416 if ( (mSize !=
ITEM_NONE) && (mSize <= _max) )
return;
417 if (mPosition > _max)
420 mSize = mPosition = 0;
421 mCurrent = mText.
begin();
422 mEnd = mSave = mText.
end();
434 if (iter == mEnd)
break;
440 for (
size_t pos = 0; pos < 5; pos++)
457 mCurrent = erase(iter, mEnd);
458 mSave = mEnd = mText.
end();
472 if (size <= _max)
return;
475 size_t diff = size - _max;
482 for (; iter != mEnd; ++iter)
490 if (iter == mEnd)
break;
496 for (
size_t pos = 0; pos < 5; pos++)
511 if (diff == 0)
break;
517 if (iter_colour != mEnd)
519 colour.
append(iter_colour, iter_colour +
size_t(7));
522 mCurrent = erase(mText.
begin(), iter);
534 if (mCurrent == mEnd)
return;
542 iter = mCurrent = erase(mCurrent, iter);