GL Studio API
gls_ctl_text_box.h
Go to the documentation of this file.
1 /*! \file
2  \brief The disti::GlsCTLTextBox class.
3 
4  \par Copyright Information
5 
6  Copyright (c) 2015 by The DiSTI Corporation.<br>
7  11301 Corporate Blvd; Suite 100<br>
8  Orlando, Florida 32817<br>
9  USA<br>
10  <br>
11  All rights reserved.<br>
12 
13  This Software contains proprietary trade secrets of DiSTI and may not be
14 reproduced, in whole or part, in any form, or by any means of electronic,
15 mechanical, or otherwise, without the written permission of DiSTI. Said
16 permission may be derived through the purchase of applicable DiSTI product
17 licenses which detail the distribution rights of this content and any
18 Derivative Works based on this or other copyrighted DiSTI Software.
19 
20  NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21 AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22 PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23 AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24 IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25 PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26 
27  LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28 IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29 INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30 DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31 INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32 INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33 OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34 EXCEED FIVE DOLLARS (US$5.00).
35 
36  The aforementioned terms and restrictions are governed by the laws of the
37 State of Florida and the United States of America.
38 
39 */
40 
41 #ifndef INCLUDED_GLS_CTL_TEXT_BOX_H
42 #define INCLUDED_GLS_CTL_TEXT_BOX_H
43 
44 // CTL Text box does not work for WebGL/RPi due to issues with the Pango library and its dependencies
45 // CTL Text boxes will fall back to stock GlsTextBoxes, and any CTL functions will do nothing.
46 // GLS-5903: Remove Pango from CTL Text Box
47 #if defined(EMSCRIPTEN) || defined(RPI_ARCH)
48 # define GLS_CTL_FALLBACK_ENABLED
49 # ifndef GLES
50 # error "GLES should always be enabled when using the CTL fallback code"
51 # endif
52 #endif
53 
54 //////////////////// Provides support for creating DLLs ////////////////////////
55 #if (defined(GLSGEN_EXPORT_GLSCTLTEXTBOX) || \
56  defined(GLSGEN_IMPORT_GLSCTLTEXTBOX) || \
57  defined(GLSGEN_GLSCTLTEXTBOX_EXPORT_GENERATED) || \
58  defined(GLS_IMPORT_GENERATED)) \
59  && defined(_MSC_VER)
60 # if defined(GLSGEN_EXPORT_GLSCTLTEXTBOX) || defined(GLSGEN_GLSCTLTEXTBOX_EXPORT_GENERATED)
61 # define GLSGEN_GLSCTLTEXTBOX_EXPORT __declspec(dllexport)
62 # else
63 # define GLSGEN_GLSCTLTEXTBOX_EXPORT __declspec(dllimport)
64 # endif
65 #else
66 # define GLSGEN_GLSCTLTEXTBOX_EXPORT
67 #endif
68 ///////////////////////////////////////////////////////////////////////////////
69 
70 #include <string>
71 #include "gls_gl.h"
72 #include "unhide_globals.h"
73 #include "gls_cpp_lang_support.h"
74 #include "scoped_ptr.h"
75 
76 #ifndef GLS_CTL_FALLBACK_ENABLED
77 # include "gls_text.h"
78 # define CTL_BASE_CLASS GlsText
79 #else
80 # include "gls_text_box.h"
81 # define CTL_BASE_CLASS GlsTextBox
82 #endif
83 
84 #define LIB_BASE_NAME "gls_ctl_text_box"
85 #include "gls_auto_lib.h"
86 #undef LIB_BASE_NAME
87 
88 // Force inclusion of the pango libraries
89 #ifdef WIN32
90 # if !defined(NO_GLS_AUTOLIB) && !defined(GLS_IMPORT_LIBRARY)
91 # ifdef _WIN64
92 # define PANGO_SUFFIX "_64"
93 # else
94 # define PANGO_SUFFIX ""
95 # endif
96 # pragma message( "Will automatically link with libpango" PANGO_SUFFIX "-1.0.lib" )
97 # pragma message( "Will automatically link with libpangoft2" PANGO_SUFFIX "-1.0.lib" )
98 # pragma message( "Will automatically link with libgobject" PANGO_SUFFIX "-2.0.lib" )
99 # pragma comment(lib, "libpango" PANGO_SUFFIX "-1.0.lib")
100 # pragma comment(lib, "libpangoft2" PANGO_SUFFIX "-1.0.lib")
101 # pragma comment(lib, "libgobject" PANGO_SUFFIX "-2.0.lib")
102 # endif
103 #endif
104 
105 namespace disti
106 {
107 
108 // Forward Declarations
109 #ifndef GLS_CTL_FALLBACK_ENABLED
110 class GlsPangoWrapper;
111 struct PangoRect;
112 #else
113 class GlsTextBoxFontRenderer;
114 #endif // GLS_CTL_FALLBACK_ENABLED
115 
116 #ifdef GLES
117 class GlsGloFileAttribute;
118 class GlsStateManager;
119 class GlsQuadListVCT_2D;
120 #endif // GLES
121 
122 //===========================================================================
123 /** \brief The Gls CTL (Complex Text Layout) Text Box.
124  *
125  * On certain platforms, the text layout library is unavailable, and complex text rendering in the runtime will be missing.
126  *
127  * To account for this, the GlsCTLTextBox will 'Fallback' to being treated as a GlsTextBox. In those cases, certain
128  * GlsCTLTextBox functions will not have no effect.
129  */
130 class GlsCTLTextBox : public CTL_BASE_CLASS
131 {
132 public:
133  typedef CTL_BASE_CLASS _BaseClass;
134 
135  /** The internal border between the layout edges and the glyph edges.
136  * This will keep the glyph edges from appearing cut-off when linear texture filtering is applied.
137  */
138  static const unsigned int INTERNAL_BORDER = 1;
139 
140  friend class GlsCTLTextBoxEditor;
141 
142 #ifndef GLS_CTL_FALLBACK_ENABLED
143  /** The vertical alignment types. */
145  {
146  ALIGN_CENTER,
147  ALIGN_TOP,
148  ALIGN_BOTTOM
149  };
150 #else
151  typedef Align_t VerticalAlignment_t;
152 #endif // GLS_CTL_FALLBACK_ENABLED
153 
154  /** Deprecated */
156  {
157  VERTICAL_ALIGNMENT_CENTER = ALIGN_CENTER,
158  VERTICAL_ALIGNMENT_TOP = ALIGN_TOP,
159  VERTICAL_ALIGNMENT_BOTTOM = ALIGN_BOTTOM
160  };
161 
162  /** The ellipsize mode types. */
164  {
165  ELLIPSIZE_MODE_NONE,
166  ELLIPSIZE_MODE_START,
167  ELLIPSIZE_MODE_MIDDLE,
168  ELLIPSIZE_MODE_END
169  };
170 
171  /** The structure returned to the caller when getting the glyph metrics.
172  * These are in logical units, relative to the bottom-left corner of the text box.
173  */
175  {
176  float minX;
177  float minY;
178  float maxX;
179  float maxY;
180 
181  GlyphMetrics()
182  : minX( 0.0f )
183  , minY( 0.0f )
184  , maxX( 0.0f )
185  , maxY( 0.0f )
186  {}
187  };
188 
189  /** Default constructor. */
190  GLSGEN_GLSCTLTEXTBOX_EXPORT GlsCTLTextBox();
191 
192  /** The copy constructor for GlsCTLTextBox
193  *
194  * \param that The GlsCTLTextBox object that is being copied
195  * \param generateNames Whether or not to generate a new instance name
196  */
197  GLSGEN_GLSCTLTEXTBOX_EXPORT GlsCTLTextBox( const GlsCTLTextBox& that, const bool generateNames );
198 
199  /** Destructor.
200  */
201  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT ~GlsCTLTextBox();
202 
203  // See DisplayObject
204  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void SetAvailableAttributes( unsigned int value );
205 
206 #ifndef GLS_CTL_FALLBACK_ENABLED
207  // See DisplayObject
208  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT DisplayObject* CloneObject( bool generateNames = false );
209 
210  // See DisplayObject
211  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void CopyGeometry( DisplayObject* src );
212 
213  // See DisplayObject
214  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void CopyProperties( DisplayObject* src );
215 
216  // See DisplayObject
217  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void PreDraw( const OpenGLMatrices& current, Culler& culler );
218 
219  // See DisplayObject
220  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void Draw();
221 
222  // See DisplayObject
223  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void SetVertices( unsigned int nPoints, Vertex* vertices );
224 
225  // See DisplayObject
226  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void Scale( float px, float py, float pz, Vertex* anchor, int handleBar );
227 
228  /** Print a string into this text object.
229  * Replaces the entire string.
230  * \param format printf style varargs formatting string.
231  */
232  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void VaString( const char* format, ... );
233 
234  /** Set the vertical alignment for this text object
235  * \param[in] verticalAlignment The vertical alignment type.
236  */
237  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void VerticalAlignment( VerticalAlignment_t verticalAlignment );
238  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void VerticalAlignment( VerticalAlignmentCTL_t verticalAlignment ) { VerticalAlignment( static_cast<VerticalAlignment_t>( verticalAlignment ) ); }
239 
240  /** Get the vertical alignment for this text object
241  * \return The vertical alignment type.
242  */
243  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT VerticalAlignment_t VerticalAlignment();
244 
245 #else
246 
247  /** Set the vertical alignment for this text object
248  * \param[in] verticalAlignment The vertical alignment type.
249  */
250  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void VerticalAlignment( VerticalAlignment_t verticalAlignment ) { _BaseClass::VerticalAlignment( verticalAlignment ); }
251  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void VerticalAlignment( VerticalAlignmentCTL_t verticalAlignment );
252 
253 #endif // GLS_CTL_FALLBACK_ENABLED
254 
255 #ifndef GLES
256 
257  // See DisplayObject
258  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT InterfaceListType* GetCppInterfaceDescription( InterfaceListType* addToThisList = NULL );
259 
260  // See DisplayObject
261  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void GetCppInterfaceDescriptionFree( InterfaceListType* array );
262 
263 #endif // GLES
264 
265  /** Rebuilds this text box layout. This may be an expensive call, so it should only be called when a property changes.
266  * \note In CTL Fallback mode, GlsText::SetRebuild will be called instead, as this is a protected method in GlsTextBox.
267  */
268  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void Rebuild();
269 
270 // NO CTL-only functions should be disabled when using the GlsTextBox fallback.
271 // They should be available to every runtime, even if they do nothing.
272 
273 
274  /** Gets the type of automatic ellipsize if the text does not fit in the boundary.
275  * \return The type of automatic ellipsize if the text does not fit in the boundary.
276  * \note In CTL Fallback mode, returns ELLIPSIZE_MODE_NONE.
277  */
278  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT EllipsizeMode_t EllipsizeMode();
279 
280  /** Sets the type of automatic ellipsize if the text does not fit in the boundary.
281  * \param[in] ellipsizeMode The type of automatic ellipsize if the text does not fit in the boundary.
282  * \note In CTL Fallback mode, has no effect.
283  */
284  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void EllipsizeMode( const EllipsizeMode_t ellipsizeMode );
285 
286  /** Gets the number of lines in the layout.
287  * \return The number of lines in the layout.
288  * \note In CTL Fallback mode, returns 0.
289  */
290  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT unsigned int GetLineCount();
291 
292  /** Gets the number of glyphs in the layout.
293  * \return The number of glyphs in the layout.
294  * \note In CTL Fallback mode, returns 0.
295  */
296  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT unsigned int GetGlyphCount();
297 
298  /** Gets the glyph metrics for the given glyph index.
299  * \param[in] glyphIndex The index of the glyph in the layout line to get the glyph metrics for.
300  * \return The glyph metrics for the given glyph index.
301  * \note In CTL Fallback mode, returns a default GlyphMetrics struct.
302  */
303  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT GlyphMetrics GetGlyphMetrics( const unsigned int glyphIndex );
304 
305  /** Set the Pango Layout auto dir, exposes pango_layout_set_auto_dir ()
306  * see: https://developer.gnome.org/pango/stable/pango-Layout-Objects.html#pango-layout-set-auto-dir
307  * \param[in] autoDir Whether or not the layout should automatically determine base direction based on content
308  * \note In CTL Fallback mode, has no effect.
309  */
310  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void SetLayoutAutoDir( bool autoDir );
311 
312  /** Set width used to render the text. If the width of the vertices is smaller than this width, the text will be truncated. If the
313  * value is 0.0, the text will be rendered to the full width of the vertices
314  * \note In CTL Fallback mode, has no effect.
315  */
316  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void SetAltWidth( float width );
317 
318  /** Set height used to render the text. If the height of the vertices is smaller than this height, the text will be truncated. If the
319  * value is 0.0, the text will be rendered to the full height of the vertices
320  * \note In CTL Fallback mode, has no effect.
321  */
322  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void SetAltHeight( float height );
323 
324  /** Scales the text horizontally by the given value. Text is still clamped by the bounds of the text box
325  * \param value the horizontal scale
326  */
327  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void TextHorizontalScale( float value );
328 
329  /** Get the horizontal scale */
330  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT float TextHorizontalScale();
331 
332  /** Scales the text vertically by the given value. Text is still clamped by the bounds of the text box
333  * \param value the vertical scale
334  */
335  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void TextVerticalScale( float value );
336 
337  /** Get the vertical scale */
338  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT float TextVerticalScale();
339 
340 protected:
341 #ifndef GLS_CTL_FALLBACK_ENABLED
342  /** Width used to render the text */
343  float _altWidth;
344  /** Height used to render the text */
345  float _altHeight;
346 
347  /** the horizontal scale */
349  /** the vertical scale */
351 
352  /** Pointer to the internal data needed for Pango. */
354 
355  /** makes adjustment to the image verts and texture coords for the alt width / height and text scaling properties
356  * \param[inout] verts the image verts
357  * \param[inout] texCoords the image texture coords
358  */
359  void AdjustImageVertsAndCoords( PangoRect& verts, PangoRect& texCoords );
360 
361 #endif // GLS_CTL_FALLBACK_ENABLED
362 
363 #ifdef GLES
364 
365  // See DisplayObject
366  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void SetFromGloData( GlsGloFileAttribute& data );
367 
368 #ifndef GLS_CTL_FALLBACK_ENABLED
369  /** The list of quads to draw for the shadows. */
371  /** The list of quads to draw for the characters. */
372  ScopedPtr< GlsQuadListVCT_2D > _characters;
373 
374  /** True if _geometryRefresh was true in PreDraw. This is just so we can rebuild the quads in Draw(). */
375  bool _geometryRefreshDraw;
376 
377  /** Populate the quad storage
378  * \param stateManager
379  */
380  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void PopulateQuadStorage( IGlsStateManager* stateManager );
381 
382  /** Draws the polygons that make up the characters.
383  * \param stateManager
384  */
385  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void DrawText( IGlsStateManager* stateManager );
386 #endif // GLS_CTL_FALLBACK_ENABLED
387 
388 
389 #else
390  /** Draws the polygons that make up the characters.
391  */
392  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void DrawText();
393 #endif // GLES
394 #ifndef GLS_CTL_FALLBACK_ENABLED
395  /** Rebuilds the vertices of the text box.
396  */
397  virtual GLSGEN_GLSCTLTEXTBOX_EXPORT void RecalcVertices();
398 #endif // GLS_CTL_FALLBACK_ENABLED
399 
400 private:
401  /* See base class */
402  void OnCellDimensionChanged()
403  {
404  // Prevent changing cell dimensions for CTL Textbox
405  _cellHeight = 0;
406  _cellWidth = 0;
407  ControlCellSize( false );
408  }
409 
410  GlsCTLTextBox& operator=( const GlsCTLTextBox& ) DISTI_SPECIAL_MEM_FUN_DELETE;
411  GlsCTLTextBox( const GlsCTLTextBox& ) DISTI_SPECIAL_MEM_FUN_DELETE;
412 };
413 
414 #ifndef GLS_CTL_FALLBACK_ENABLED
415 
416 /** In stream operator for VerticalAlignment_t enumeration.
417  */
418 inline std::istream& operator>>( std::istream& instr, disti::GlsCTLTextBox::VerticalAlignment_t& verticalAlignment )
419 {
420  std::string str;
421  instr >> str;
422 
423  if( str == "ALIGN_TOP" || str == "VERTICAL_ALIGNMENT_TOP" )
424  {
425  verticalAlignment = disti::GlsCTLTextBox::ALIGN_TOP;
426  }
427  else if( str == "ALIGN_CENTER" || str == "VERTICAL_ALIGNMENT_CENTER" )
428  {
429  verticalAlignment = disti::GlsCTLTextBox::ALIGN_CENTER;
430  }
431  else if( str == "ALIGN_BOTTOM" || str == "VERTICAL_ALIGNMENT_BOTTOM" )
432  {
433  verticalAlignment = disti::GlsCTLTextBox::ALIGN_BOTTOM;
434  }
435  return instr;
436 }
437 
438 /** Out stream operator for VerticalAlignment_t enumeration.
439  */
440 inline std::ostream& operator<<( std::ostream& outstr, disti::GlsCTLTextBox::VerticalAlignment_t verticalAlignment )
441 {
442  switch( verticalAlignment )
443  {
444  case disti::GlsCTLTextBox::ALIGN_TOP:
445  outstr << "ALIGN_TOP";
446  break;
447  case disti::GlsCTLTextBox::ALIGN_CENTER:
448  outstr << "ALIGN_CENTER";
449  break;
450  case disti::GlsCTLTextBox::ALIGN_BOTTOM:
451  outstr << "ALIGN_BOTTOM";
452  break;
453  }
454  return outstr;
455 }
456 #endif // GLS_CTL_FALLBACK_ENABLED
457 
458 /** In stream operator for EllipsizeMode_t enumeration.
459  */
460 inline std::istream& operator>>( std::istream& instr, disti::GlsCTLTextBox::EllipsizeMode_t& ellipsizeMode )
461 {
462  std::string str;
463  instr >> str;
464 
465  if( str == "ELLIPSIZE_MODE_NONE" )
466  {
467  ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_NONE;
468  }
469  else if( str == "ELLIPSIZE_MODE_START" )
470  {
471  ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_START;
472  }
473  else if( str == "ELLIPSIZE_MODE_MIDDLE" )
474  {
475  ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_MIDDLE;
476  }
477  else if( str == "ELLIPSIZE_MODE_END" )
478  {
479  ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_END;
480  }
481  return instr;
482 }
483 
484 /** Out stream operator for EllipsizeMode_t enumeration.
485  */
486 inline std::ostream& operator<<( std::ostream& outstr, disti::GlsCTLTextBox::EllipsizeMode_t ellipsizeMode )
487 {
488  switch( ellipsizeMode )
489  {
490  case disti::GlsCTLTextBox::ELLIPSIZE_MODE_NONE:
491  outstr << "ELLIPSIZE_MODE_NONE";
492  break;
493  case disti::GlsCTLTextBox::ELLIPSIZE_MODE_START:
494  outstr << "ELLIPSIZE_MODE_START";
495  break;
496  case disti::GlsCTLTextBox::ELLIPSIZE_MODE_MIDDLE:
497  outstr << "ELLIPSIZE_MODE_MIDDLE";
498  break;
499  case disti::GlsCTLTextBox::ELLIPSIZE_MODE_END:
500  outstr << "ELLIPSIZE_MODE_END";
501  break;
502  }
503  return outstr;
504 }
505 
506 }
507 
508 #endif // INCLUDED_GLS_CTL_TEXT_BOX_H
The DistiUnhideGlobalsDummyClass class.
Definition: cull.h:50
virtual VerticalAlignment_t VerticalAlignment()
Definition: vertex.h:365
The disti::GlsTextBox class.
virtual float TextHorizontalScale()
void AdjustImageVertsAndCoords(PangoRect &verts, PangoRect &texCoords)
virtual void PreDraw(const OpenGLMatrices &current, Culler &culler)
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:281
virtual void CopyGeometry(DisplayObject *src)
virtual void SetVertices(unsigned int nPoints, Vertex *vertices)
float _altWidth
Definition: gls_ctl_text_box.h:343
virtual DisplayObject * CloneObject(bool generateNames=false)
EllipsizeMode_t
Definition: gls_ctl_text_box.h:163
virtual void SetAvailableAttributes(unsigned int value)
virtual void VaString(const char *format,...)
Definition: display.h:98
virtual GlyphMetrics GetGlyphMetrics(const unsigned int glyphIndex)
float _cellHeight
Definition: gls_text.h:778
virtual void RecalcVertices()
virtual unsigned int GetLineCount()
The disti::GlsText class.
float _altHeight
Definition: gls_ctl_text_box.h:345
virtual unsigned int GetGlyphCount()
ScopedPtr< GlsPangoWrapper > _glsPangoWrapper
Definition: gls_ctl_text_box.h:353
virtual ~GlsCTLTextBox()
virtual void CopyProperties(DisplayObject *src)
virtual float TextVerticalScale()
virtual void Scale(float px, float py, float pz, Vertex *anchor, int handleBar)
virtual void Draw()
The Gls CTL (Complex Text Layout) Text Box.
Definition: gls_ctl_text_box.h:130
bool ControlCellSize() const
Definition: gls_text.h:461
VerticalAlignmentCTL_t
Definition: gls_ctl_text_box.h:155
static const unsigned int INTERNAL_BORDER
Definition: gls_ctl_text_box.h:138
Definition: gls_ctl_text_box.h:174
VerticalAlignment_t
Definition: gls_ctl_text_box.h:144
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
float _cellWidth
Definition: gls_text.h:781
The gls_auto_lib.
virtual void Rebuild()
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array)
float _textVerticalScale
Definition: gls_ctl_text_box.h:350
virtual EllipsizeMode_t EllipsizeMode()
virtual void SetAltHeight(float height)
A smart pointer with unique ownership – poor man's std::unique_ptr.
virtual void DrawText()
virtual void SetLayoutAutoDir(bool autoDir)
Macros and helper code to determine what subset of C++11/14/17 is available.
float _textHorizontalScale
Definition: gls_ctl_text_box.h:348
Definition: bmpimage.h:46
virtual void SetAltWidth(float width)
The gls_gl.