Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/OgreMain/include/OgreTextAreaOverlayElement.h @ 1

Last change on this file since 1 was 1, checked in by landauf, 17 years ago
File size: 8.7 KB
Line 
1/*-------------------------------------------------------------------------
2This source file is a part of OGRE
3(Object-oriented Graphics Rendering Engine)
4
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10This library is free software; you can redistribute it and/or modify it
11under the terms of the GNU Lesser General Public License (LGPL) as
12published by the Free Software Foundation; either version 2.1 of the
13License, or (at your option) any later version.
14
15This library is distributed in the hope that it will be useful, but
16WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
18License for more details.
19
20You should have received a copy of the GNU Lesser General Public License
21along with this library; if not, write to the Free Software Foundation,
22Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA or go to
23http://www.gnu.org/copyleft/lesser.txt
24-------------------------------------------------------------------------*/
25
26#ifndef _TextAreaOverlayElement_H__
27#define _TextAreaOverlayElement_H__
28
29#include "OgreOverlayElement.h"
30#include "OgreFont.h"
31
32namespace Ogre
33{
34    /** This class implements an overlay element which contains simple unformatted text.
35    */
36    class _OgreExport TextAreaOverlayElement : public OverlayElement
37    {
38    public:
39        enum Alignment
40        {
41            Left,
42            Right,
43            Center
44        };
45
46    public:
47        /** Constructor. */
48        TextAreaOverlayElement(const String& name);
49        virtual ~TextAreaOverlayElement();
50
51        virtual void initialise(void);
52                virtual void setCaption(const DisplayString& text);
53
54        void setCharHeight( Real height );
55        Real getCharHeight() const;
56
57        void setSpaceWidth( Real width );
58        Real getSpaceWidth() const;
59
60        void setFontName( const String& font );
61        const String& getFontName() const;
62
63        /** See OverlayElement. */
64        virtual const String& getTypeName(void) const;
65        /** See Renderable. */
66        void getRenderOperation(RenderOperation& op);
67        /** Overridden from OverlayElement */
68        void setMaterialName(const String& matName);
69
70        /** Sets the colour of the text.
71        @remarks
72            This method establishes a constant colour for
73            the entire text. Also see setColourBottom and
74            setColourTop which allow you to set a colour gradient.
75        */
76        void setColour(const ColourValue& col);
77
78        /** Gets the colour of the text. */
79        const ColourValue& getColour(void) const;
80        /** Sets the colour of the bottom of the letters.
81        @remarks
82            By setting a separate top and bottom colour, you
83            can create a text area which has a graduated colour
84            effect to it.
85        */
86        void setColourBottom(const ColourValue& col);
87        /** Gets the colour of the bottom of the letters. */
88        const ColourValue& getColourBottom(void) const;
89        /** Sets the colour of the top of the letters.
90        @remarks
91            By setting a separate top and bottom colour, you
92            can create a text area which has a graduated colour
93            effect to it.
94        */
95        void setColourTop(const ColourValue& col);
96        /** Gets the colour of the top of the letters. */
97        const ColourValue& getColourTop(void) const;
98
99        inline void setAlignment( Alignment a )
100        {
101            mAlignment = a;
102                        mGeomPositionsOutOfDate = true;
103        }
104        inline Alignment getAlignment() const
105        {
106            return mAlignment;
107        }
108
109        /** Overridden from OverlayElement */
110        void setMetricsMode(GuiMetricsMode gmm);
111
112        /** Overridden from OverlayElement */
113        void _update(void);
114
115        //-----------------------------------------------------------------------------------------
116        /** Command object for setting the caption.
117                @see ParamCommand
118        */
119        class _OgrePrivate CmdCaption : public ParamCommand
120        {
121        public:
122            String doGet( const void* target ) const;
123            void doSet( void* target, const String& val );
124        };
125        //-----------------------------------------------------------------------------------------
126        /** Command object for setting the char height.
127                @see ParamCommand
128        */
129        class _OgrePrivate CmdCharHeight : public ParamCommand
130        {
131        public:
132            String doGet( const void* target ) const;
133            void doSet( void* target, const String& val );
134        };
135        //-----------------------------------------------------------------------------------------
136        /** Command object for setting the width of a space.
137                @see ParamCommand
138        */
139        class _OgrePrivate CmdSpaceWidth : public ParamCommand
140        {
141        public:
142            String doGet( const void* target ) const;
143            void doSet( void* target, const String& val );
144        };
145        //-----------------------------------------------------------------------------------------
146        /** Command object for setting the caption.
147                @see ParamCommand
148        */
149        class _OgrePrivate CmdFontName : public ParamCommand
150        {
151        public:
152            String doGet( const void* target ) const;
153            void doSet( void* target, const String& val );
154        };
155        //-----------------------------------------------------------------------------------------
156        /** Command object for setting the top colour.
157                @see ParamCommand
158        */
159        class _OgrePrivate CmdColourTop : public ParamCommand
160        {
161        public:
162            String doGet( const void* target ) const;
163            void doSet( void* target, const String& val );
164        };
165        //-----------------------------------------------------------------------------------------
166        /** Command object for setting the bottom colour.
167                @see ParamCommand
168        */
169        class _OgrePrivate CmdColourBottom : public ParamCommand
170        {
171        public:
172            String doGet( const void* target ) const;
173            void doSet( void* target, const String& val );
174        };
175        //-----------------------------------------------------------------------------------------
176        /** Command object for setting the constant colour.
177                @see ParamCommand
178        */
179        class _OgrePrivate CmdColour : public ParamCommand
180        {
181        public:
182            String doGet( const void* target ) const;
183            void doSet( void* target, const String& val );
184        };
185        //-----------------------------------------------------------------------------------------
186        /** Command object for setting the alignment.
187                @see ParamCommand
188        */
189        class _OgrePrivate CmdAlignment : public ParamCommand
190        {
191        public:
192            String doGet( const void* target ) const;
193            void doSet( void* target, const String& val );
194        };
195
196    protected:
197        /// The text alignment
198        Alignment mAlignment;
199
200        /// Flag indicating if this panel should be visual or just group things
201        bool mTransparent;
202
203        /// Render operation
204        RenderOperation mRenderOp;
205
206        /// Method for setting up base parameters for this class
207        void addBaseParameters(void);
208
209        static String msTypeName;
210
211        // Command objects
212        static CmdCharHeight msCmdCharHeight;
213        static CmdSpaceWidth msCmdSpaceWidth;
214        static CmdFontName msCmdFontName;
215        static CmdColour msCmdColour;
216        static CmdColourTop msCmdColourTop;
217        static CmdColourBottom msCmdColourBottom;
218        static CmdAlignment msCmdAlignment;
219
220
221        FontPtr mpFont;
222        Real mCharHeight;
223        ushort mPixelCharHeight;
224        Real mSpaceWidth;
225        ushort mPixelSpaceWidth;
226        size_t mAllocSize;
227                Real mViewportAspectCoef;
228
229        /// Colours to use for the vertices
230        ColourValue mColourBottom;
231        ColourValue mColourTop;
232        bool mColoursChanged;
233
234
235        /// Internal method to allocate memory, only reallocates when necessary
236        void checkMemoryAllocation( size_t numChars );
237        /// Inherited function
238        virtual void updatePositionGeometry();
239                /// Inherited function
240                virtual void updateTextureGeometry();
241        /// Updates vertex colours
242        virtual void updateColours(void);
243    };
244}
245
246#endif
247
Note: See TracBrowser for help on using the repository browser.