1 /*********************************************************************** 2 created: 25/05/2009 3 author: Paul Turner 4 *************************************************************************/ 5 /*************************************************************************** 6 * Copyright (C) 2004 - 2009 Paul D Turner & The CEGUI Development Team 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining 9 * a copy of this software and associated documentation files (the 10 * "Software"), to deal in the Software without restriction, including 11 * without limitation the rights to use, copy, modify, merge, publish, 12 * distribute, sublicense, and/or sell copies of the Software, and to 13 * permit persons to whom the Software is furnished to do so, subject to 14 * the following conditions: 15 * 16 * The above copyright notice and this permission notice shall be 17 * included in all copies or substantial portions of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 * OTHER DEALINGS IN THE SOFTWARE. 26 ***************************************************************************/ 27 #ifndef _CEGUIRenderedStringTextComponent_h_ 28 #define _CEGUIRenderedStringTextComponent_h_ 29 30 #include "CEGUI/RenderedStringComponent.h" 31 #include "CEGUI/ColourRect.h" 32 #include "CEGUI/String.h" 33 34 // Start of CEGUI namespace section 35 namespace CEGUI 36 { 37 //! String component that draws an image. 38 class CEGUIEXPORT RenderedStringTextComponent : public RenderedStringComponent 39 { 40 public: 41 //! Constructor 42 RenderedStringTextComponent(); 43 RenderedStringTextComponent(const String& text); 44 RenderedStringTextComponent(const String& text, const String& font_name); 45 RenderedStringTextComponent(const String& text, const Font* font); 46 47 //! Set the text to be rendered by this component. 48 void setText(const String& text); 49 //! return the text that will be rendered by this component 50 const String& getText() const; 51 //! set the font to use when rendering the text. 52 void setFont(const Font* font); 53 //! set the font to use when rendering the text. 54 void setFont(const String& font_name); 55 //! return the font set to be used. If 0 the default font will be used. 56 const Font* getFont() const; 57 //! Set the colour values used when rendering this component. 58 void setColours(const ColourRect& cr); 59 //! Set the colour values used when rendering this component. 60 void setColours(const Colour& c); 61 //! return the ColourRect object used when drawing this component. 62 const ColourRect& getColours() const; 63 64 // implementation of abstract base interface 65 void draw(const Window* ref_wnd, GeometryBuffer& buffer, 66 const Vector2f& position, const ColourRect* mod_colours, 67 const Rectf* clip_rect, const float vertical_space, 68 const float space_extra) const; 69 Sizef getPixelSize(const Window* ref_wnd) const; 70 bool canSplit() const; 71 RenderedStringTextComponent* split(const Window* ref_wnd, 72 float split_point, bool first_component); 73 RenderedStringTextComponent* clone() const; 74 size_t getSpaceCount() const; 75 void setSelection(const Window* ref_wnd, 76 const float start, const float end); 77 78 protected: 79 const Font* getEffectiveFont(const Window* window) const; 80 81 static size_t getNextTokenLength(const String& text, size_t start_idx); 82 83 //! pointer to the image drawn by the component. 84 String d_text; 85 //! Font to use for text rendering, 0 for system default. 86 const Font* d_font; 87 //! ColourRect object describing the colours to use when rendering. 88 ColourRect d_colours; 89 //! last set selection 90 size_t d_selectionStart, d_selectionLength; 91 }; 92 93 } // End of CEGUI namespace section 94 95 #endif // end of guard _CEGUIRenderedStringTextComponent_h_ 96