CLabel.h
Go to the documentation of this file.
1 //==============================================================================
2 /*
3  Software License Agreement (BSD License)
4  Copyright (c) 2003-2016, CHAI3D.
5  (www.chai3d.org)
6 
7  All rights reserved.
8 
9  Redistribution and use in source and binary forms, with or without
10  modification, are permitted provided that the following conditions
11  are met:
12 
13  * Redistributions of source code must retain the above copyright
14  notice, this list of conditions and the following disclaimer.
15 
16  * Redistributions in binary form must reproduce the above
17  copyright notice, this list of conditions and the following
18  disclaimer in the documentation and/or other materials provided
19  with the distribution.
20 
21  * Neither the name of CHAI3D nor the names of its contributors may
22  be used to endorse or promote products derived from this software
23  without specific prior written permission.
24 
25  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
28  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
30  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
31  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
35  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36  POSSIBILITY OF SUCH DAMAGE.
37 
38  \author <http://www.chai3d.org>
39  \author Francois Conti
40  \version 3.2.0 $Rev: 2153 $
41 */
42 //==============================================================================
43 
44 //------------------------------------------------------------------------------
45 #ifndef CLabelH
46 #define CLabelH
47 //------------------------------------------------------------------------------
48 #include "widgets/CPanel.h"
49 #include "graphics/CFont.h"
50 #include "graphics/CColor.h"
51 #include "system/CString.h"
52 #include <string>
53 //------------------------------------------------------------------------------
54 
55 //------------------------------------------------------------------------------
56 namespace chai3d {
57 //------------------------------------------------------------------------------
58 
59 //==============================================================================
66 //==============================================================================
67 
68 //==============================================================================
79 //==============================================================================
80 class cLabel : public cPanel
81 {
82  //--------------------------------------------------------------------------
83  // CONSTRUCTOR & DESTRUCTOR:
84  //--------------------------------------------------------------------------
85 
86 public:
87 
89  cLabel(cFontPtr a_font);
90 
92  virtual ~cLabel();
93 
94 
95  //-----------------------------------------------------------------------
96  // PUBLIC MEMBERS:
97  //--------------------------------------------------------------------------
98 
99 public:
100 
103 
106 
107 
108  //--------------------------------------------------------------------------
109  // PUBLIC MEMBERS:
110  //--------------------------------------------------------------------------
111 
112 public:
113 
115  void setText(const std::string a_text);
116 
118  std::string getText() const { return (m_text); }
119 
121  void setFontScale(const double a_scale);
122 
124  double getFontScale() const { return (m_fontScale); }
125 
127  void setLetterSpacing(const double a_letterSpacing) { m_letterSpacing = a_letterSpacing; }
128 
130  double getLetterSpacing() { return (m_letterSpacing); }
131 
133  void setLineSpacing(const double a_lineSpacing) { m_lineSpacing = a_lineSpacing; }
134 
136  double getLineSpacing() { return (m_lineSpacing); }
137 
138 
139  //--------------------------------------------------------------------------
140  // PUBLIC MEMBERS:
141  //--------------------------------------------------------------------------
142 
143 public:
144 
146  virtual bool computeOtherCollisionDetection(cVector3d& a_segmentPointA,
147  cVector3d& a_segmentPointB,
148  cCollisionRecorder& a_recorder,
149  cCollisionSettings& a_settings);
150 
151 
152  //--------------------------------------------------------------------------
153  // PROTECTED MEMBERS:
154  //--------------------------------------------------------------------------
155 
156 protected:
157 
159  double m_fontScale;
160 
163 
166 
168  std::string m_text;
169 
170 
171  //--------------------------------------------------------------------------
172  // PUBLIC METHODS:
173  //--------------------------------------------------------------------------
174 
175 public:
176 
178  cLabel* copy(const bool a_duplicateMaterialData = false,
179  const bool a_duplicateTextureData = false,
180  const bool a_duplicateMeshData = false,
181  const bool a_buildCollisionDetector = false);
182 
184  virtual double getTextWidth() const;
185 
187  virtual double getTextHeight() const;
188 
189 
190  //--------------------------------------------------------------------------
191  // PROTECTED METHODS:
192  //--------------------------------------------------------------------------
193 
194 protected:
195 
197  virtual void render(cRenderOptions& a_options);
198 
200  void copyLabelProperties(cLabel* a_obj,
201  const bool a_duplicateMaterialData,
202  const bool a_duplicateTextureData,
203  const bool a_duplicateMeshData,
204  const bool a_buildCollisionDetector);
205 };
206 
207 //------------------------------------------------------------------------------
208 } // namespace chai3d
209 //------------------------------------------------------------------------------
210 
211 //------------------------------------------------------------------------------
212 #endif
213 //------------------------------------------------------------------------------
This class implements a 3D vector.
Definition: CVector3d.h:88
This structures provide a containers for storing rendering options that are passed through the sceneg...
Definition: CRenderOptions.h:82
void setText(const std::string a_text)
This method assign a string text to this label.
Definition: CLabel.cpp:141
double m_lineSpacing
Line spacing. Default value is 1.0.
Definition: CLabel.h:165
Implements a panel widget.
std::shared_ptr< cFont > cFontPtr
Definition: CFont.h:71
This class implements a 2D panel widget.
Definition: CPanel.h:80
std::string m_text
Text to be displayed.
Definition: CLabel.h:168
cFontPtr m_font
Font type.
Definition: CLabel.h:102
cLabel(cFontPtr a_font)
Constructor of cLabel.
Definition: CLabel.cpp:59
This class implements a 2D label widget to display one line of text.
Definition: CLabel.h:80
virtual void render(cRenderOptions &a_options)
This method renders the object graphically using OpenGL.
Definition: CLabel.cpp:99
Implements utility functions for manipulating strings.
cColorf m_fontColor
Font color.
Definition: CLabel.h:105
This class implements a collision detection recorder that stores all collision events that are report...
Definition: CCollisionBasics.h:185
void setLetterSpacing(const double a_letterSpacing)
This method sets the letter spacing.
Definition: CLabel.h:127
void setFontScale(const double a_scale)
This method sets the font scale factor.
Definition: CLabel.cpp:169
This structure stores the collision settings that are passed to a collision detector when querying fo...
Definition: CCollisionBasics.h:242
cLabel * copy(const bool a_duplicateMaterialData=false, const bool a_duplicateTextureData=false, const bool a_duplicateMeshData=false, const bool a_buildCollisionDetector=false)
This method creates a copy of this object.
Definition: CLabel.cpp:231
Implements support for fonts.
virtual bool computeOtherCollisionDetection(cVector3d &a_segmentPointA, cVector3d &a_segmentPointB, cCollisionRecorder &a_recorder, cCollisionSettings &a_settings)
This method computes any collisions between a segment and this object.
Definition: CLabel.cpp:296
double getLetterSpacing()
This method returns the current letter spacing value.
Definition: CLabel.h:130
This class defines a color using a GLfloat representation for each component.
Definition: CColor.h:138
Implements color properties.
void setLineSpacing(const double a_lineSpacing)
This method sets the line spacing when multiple lines of text are used.
Definition: CLabel.h:133
double getFontScale() const
This method returns the font scale factor.
Definition: CLabel.h:124
virtual double getTextWidth() const
This method returns the width of the text in pixels.
Definition: CLabel.cpp:186
double m_letterSpacing
Letter spacing. Default value is 1.0.
Definition: CLabel.h:162
Definition: CAudioBuffer.cpp:56
double m_fontScale
Scale factor of fonts.
Definition: CLabel.h:159
virtual ~cLabel()
Destructor of cLabel.
Definition: CLabel.cpp:87
std::string getText() const
This method returns the text associated with this label.
Definition: CLabel.h:118
double getLineSpacing()
This method returns the current line spacing value.
Definition: CLabel.h:136
virtual double getTextHeight() const
This method returns the height of the text in pixels.
Definition: CLabel.cpp:206
void copyLabelProperties(cLabel *a_obj, const bool a_duplicateMaterialData, const bool a_duplicateTextureData, const bool a_duplicateMeshData, const bool a_buildCollisionDetector)
This method copies all properties of this object to another.
Definition: CLabel.cpp:261