MyGUI  3.2.1
MyGUI_TextIterator.h
Go to the documentation of this file.
00001 /*
00002  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
00003  * Distributed under the MIT License
00004  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
00005  */
00006 
00007 #ifndef __MYGUI_TEXT_ITERATOR_H__
00008 #define __MYGUI_TEXT_ITERATOR_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_Colour.h"
00012 #include "MyGUI_TextChangeHistory.h"
00013 #include "MyGUI_IFont.h"
00014 
00015 namespace MyGUI
00016 {
00017 
00018     class MYGUI_EXPORT TextIterator
00019     {
00020     private:
00021         TextIterator();
00022 
00023     public:
00024         TextIterator(const UString& _text, VectorChangeInfo* _history = nullptr);
00025 
00026         bool moveNext();
00027 
00028         // возвращает цвет
00029         bool getTagColour(UString& _colour) const;
00030 
00031         // удаляет цвет
00032         void clearTagColour();
00033 
00034         bool setTagColour(const Colour& _colour);
00035 
00036         bool setTagColour(UString _colour);
00037 
00038         // сохраняет текущий итератор
00039         bool saveStartPoint();
00040 
00041         // возвращает строку от сохраненного итератора до текущего
00042         UString getFromStart();
00043 
00044         // удаляет от запомненной точки до текущей
00045         bool eraseFromStart();
00046 
00047         // возвращает текущую псевдо позицию
00048         size_t getPosition() const;
00049 
00050         const UString& getText() const;
00051 
00052         void insertText(const UString& _insert, bool _multiLine);
00053 
00054         void clearNewLine(UString& _text);
00055 
00056         //очищает весь текст
00057         void clearText();
00058 
00059         // возвращает размер строки
00060         size_t getSize() const;
00061 
00062         void setText(const UString& _text, bool _multiLine);
00063 
00064         void cutMaxLength(size_t _max);
00065 
00066         void cutMaxLengthFromBeginning(size_t _max);
00067 
00068         // возвращает текст без тегов
00069         static UString getOnlyText(const UString& _text);
00070 
00071         static UString getTextNewLine();
00072 
00073         static UString getTextCharInfo(Char _char);
00074 
00075         // просто конвертируем цвет в строку
00076         static UString convertTagColour(const Colour& _colour);
00077 
00078         static UString toTagsString(const UString& _text);
00079 
00080     private:
00081         // возвращает цвет
00082         bool getTagColour(UString& _colour, UString::iterator& _iter) const;
00083 
00084         void insert(UString::iterator& _start, UString& _insert);
00085 
00086         UString::iterator erase(UString::iterator _start, UString::iterator _end);
00087 
00088         void clear();
00089 
00090         void normaliseNewLine(UString& _colour);
00091 
00092     private:
00093         UString mText;
00094         UString::iterator mCurrent, mEnd, mSave;
00095 
00096         // позиция и размер
00097         size_t mPosition;
00098         mutable size_t mSize;
00099         bool mFirst;
00100 
00101         VectorChangeInfo* mHistory;
00102     };
00103 
00104 } // namespace MyGUI
00105 
00106 #endif // __MYGUI_TEXT_ITERATOR_H__