MyGUI  3.2.1
MyGUI_EditText.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_EDIT_TEXT_H__
00008 #define __MYGUI_EDIT_TEXT_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_XmlDocument.h"
00012 #include "MyGUI_Types.h"
00013 #include "MyGUI_ISubWidgetText.h"
00014 #include "MyGUI_IFont.h"
00015 #include "MyGUI_ResourceSkin.h"
00016 #include "MyGUI_RenderFormat.h"
00017 #include "MyGUI_TextView.h"
00018 #include "MyGUI_VertexData.h"
00019 
00020 namespace MyGUI
00021 {
00022 
00023     class RenderItem;
00024 
00025     class MYGUI_EXPORT EditText :
00026         public ISubWidgetText
00027     {
00028         MYGUI_RTTI_DERIVED( EditText )
00029 
00030     public:
00031         EditText();
00032         virtual ~EditText();
00033 
00034         virtual void setVisible(bool _value);
00035 
00036         // обновляет все данные связанные с тектом
00037         virtual void updateRawData();
00038 
00039         // метод для отрисовки себя
00040         virtual void doRender();
00041 
00042         void setCaption(const UString& _value);
00043         const UString& getCaption() const;
00044 
00045         void setTextColour(const Colour& _value);
00046         const Colour& getTextColour() const;
00047 
00048         void setAlpha(float _value);
00049         float getAlpha() const;
00050 
00051         virtual void setFontName(const std::string& _value);
00052         virtual const std::string& getFontName() const;
00053 
00054         virtual void setFontHeight(int _value);
00055         virtual int getFontHeight() const;
00056 
00057         virtual void createDrawItem(ITexture* _texture, ILayerNode* _node);
00058         virtual void destroyDrawItem();
00059 
00060         virtual void setTextAlign(Align _value);
00061         virtual Align getTextAlign() const;
00062 
00063         virtual size_t getTextSelectionStart() const;
00064         virtual size_t getTextSelectionEnd() const;
00065         virtual void setTextSelection(size_t _start, size_t _end);
00066 
00067         virtual bool getSelectBackground() const;
00068         virtual void setSelectBackground(bool _normal);
00069 
00070         virtual bool isVisibleCursor() const;
00071         virtual void setVisibleCursor(bool _value);
00072 
00074         virtual bool getInvertSelected() const;
00078         virtual void setInvertSelected(bool _value);
00079 
00080         virtual size_t getCursorPosition() const;
00081         virtual void setCursorPosition(size_t _index);
00082 
00083         virtual IntSize getTextSize();
00084 
00085         // устанавливает смещение текста в пикселях
00086         virtual void setViewOffset(const IntPoint& _point);
00087         virtual IntPoint getViewOffset() const;
00088 
00089         // возвращает положение курсора по произвольному положению
00090         virtual size_t getCursorPosition(const IntPoint& _point);
00091 
00092         // возвращает положение курсора в обсолютных координатах
00093         virtual IntCoord getCursorCoord(size_t _position);
00094 
00095         virtual bool getShadow() const;
00096         virtual void setShadow(bool _value);
00097 
00098         virtual void setShiftText(bool _shift);
00099 
00100         virtual void setWordWrap(bool _value);
00101 
00102         virtual void setStateData(IStateInfo* _data);
00103 
00104         virtual void setShadowColour(const Colour& _value);
00105         virtual const Colour& getShadowColour() const;
00106 
00107         /*internal:*/
00108         virtual void _updateView();
00109         virtual void _correctView();
00110 
00111         virtual void _setAlign(const IntSize& _oldsize);
00112 
00113         virtual const VectorLineInfo& getLineInfo() const;
00114 
00115     private:
00116         void _setTextColour(const Colour& _value);
00117         void checkVertexSize();
00118 
00119         void drawQuad(
00120             Vertex*& _vertex,
00121             size_t& _vertexCount,
00122             const FloatRect& _vertexRect,
00123             float _vertexZ,
00124             const FloatRect& _textureRect,
00125             uint32 _colour) const;
00126 
00127         void drawGlyph(
00128             const RenderTargetInfo& renderTargetInfo,
00129             Vertex*& _vertex,
00130             size_t& _vertexCount,
00131             FloatRect _vertexRect,
00132             FloatRect _textureRect,
00133             uint32 _colour) const;
00134 
00135     protected:
00136         bool mEmptyView;
00137         uint32 mCurrentColourNative;
00138         uint32 mInverseColourNative;
00139         uint32 mCurrentAlphaNative;
00140         uint32 mShadowColourNative;
00141         IntCoord mCurrentCoord;
00142 
00143         UString mCaption;
00144         bool mTextOutDate;
00145         Align mTextAlign;
00146 
00147         Colour mColour;
00148         Colour mShadowColour;
00149         float mAlpha;
00150         VertexColourType mVertexFormat;
00151 
00152         IFont* mFont;
00153         ITexture* mTexture;
00154         int mFontHeight;
00155 
00156         bool mBackgroundNormal;
00157         size_t mStartSelect;
00158         size_t mEndSelect;
00159         size_t mCursorPosition;
00160         bool mVisibleCursor;
00161         bool mInvertSelect;
00162         bool mShadow;
00163 
00164         IntPoint mViewOffset; // смещение текста
00165 
00166         ILayerNode* mNode;
00167         RenderItem* mRenderItem;
00168         size_t mCountVertex;
00169         bool mIsAddCursorWidth;
00170 
00171         bool mShiftText;
00172         bool mWordWrap;
00173         bool mManualColour;
00174         int mOldWidth;
00175 
00176         TextView mTextView;
00177     };
00178 
00179 } // namespace MyGUI
00180 
00181 #endif // __MYGUI_EDIT_TEXT_H__