29 TextIterator::TextIterator() :
39 mCurrent(mText.begin()),
51 if (mCurrent == mEnd)
return false;
92 for (
size_t pos=0; pos<5; pos++)
128 if (mCurrent == mEnd)
return L
"";
138 iter = mCurrent = erase(mCurrent, iter);
148 if (mCurrent == mEnd)
return false;
165 if (mCurrent == mEnd)
return false;
169 if (mCurrent == mEnd)
return false;
171 const size_t SIZE = 16;
175 swprintf(buff, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red*255), (
int)(_colour.
green*255), (
int)(_colour.
blue*255));
177 swprintf(buff, SIZE, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red*255), (
int)(_colour.
green*255), (
int)(_colour.
blue*255));
181 insert(mCurrent, tmpStr);
188 if (mCurrent == mEnd)
return false;
192 if (mCurrent == mEnd)
return false;
195 if ( (_colour.
size() != 7) || (_colour.
find(L
'#', 1) != _colour.
npos) )
return false;
198 insert(mCurrent, _colour);
216 if (iter == mEnd)
break;
222 for (
size_t pos=0; pos<5; pos++)
256 if (iter == end)
break;
262 for (
size_t pos=0; pos<5; pos++)
285 if ( (_iter == mEnd) || ((*_iter) != L
'#') )
return false;
289 if ( (_iter == mEnd) || ((*_iter) == L
'#') )
return false;
292 wchar_t buff[16] = L
"#FFFFFF\0";
293 buff[1] = (wchar_t)(*_iter);
294 for (
size_t pos=2; pos<7; pos++)
297 if ( _iter == mEnd )
return false;
298 buff[pos] = (
Char)(*_iter);
324 if (mCurrent == mEnd)
return false;
331 if (mSave == mEnd)
return L
"";
332 size_t start = mSave-mText.
begin();
333 return mText.
substr(start, mCurrent-mText.
begin()-start);
338 if (mSave == mEnd)
return false;
339 mCurrent = erase(mSave, mCurrent);
340 mSave = mEnd = mText.
end();
348 insert(mCurrent, text);
358 insert(mCurrent, text);
363 if (_char == L
'#')
return L
"##";
364 wchar_t buff[16] = L
"_\0";
371 const size_t SIZE = 16;
375 swprintf(buff, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red*255), (
int)(_colour.
green*255), (
int)(_colour.
blue*255));
377 swprintf(buff, SIZE, L
"#%.2X%.2X%.2X\0", (
int)(_colour.
red*255), (
int)(_colour.
green*255), (
int)(_colour.
blue*255));
389 if (L
'#' == (*iter)) iter = text.
insert(++iter, L
'#');
401 size_t pos = _start - mText.
begin();
402 size_t pos_save = (mSave==mEnd) ?
ITEM_NONE : _start - mText.
begin();
406 _start = mText.
begin() + pos;
408 (pos_save==
ITEM_NONE) ? mSave = mEnd : mSave = mText.
begin() + pos_save;
416 size_t start = _start-mText.
begin();
419 return mText.
erase(_start, _end);
422 void TextIterator::clear()
424 if (mText.
empty())
return;
431 mCurrent = mText.
begin();
432 mEnd = mSave = mText.
end();
438 if ( (mSize !=
ITEM_NONE) && (mSize <= _max) )
return;
439 if (mPosition > _max)
442 mSize = mPosition = 0;
443 mCurrent = mText.
begin();
444 mEnd = mSave = mText.
end();
456 if (iter == mEnd)
break;
462 for (
size_t pos=0; pos<5; pos++)
479 mCurrent = erase(iter, mEnd);
480 mSave = mEnd = mText.
end();
494 if (size <= _max)
return;
497 size_t diff = size - _max;
504 for (; iter!=mEnd; ++iter)
512 if (iter == mEnd)
break;
518 for (
size_t pos=0; pos<5; pos++)
533 if (diff == 0)
break;
539 if (iter_colour != mEnd)
541 colour.
append(iter_colour, iter_colour +
size_t(7));
544 mCurrent = erase(mText.
begin(), iter);