MyGUI
3.2.1
|
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__