41 #ifndef INCLUDED_GLS_CTL_TEXT_BOX_H
42 #define INCLUDED_GLS_CTL_TEXT_BOX_H
47 #if defined( EMSCRIPTEN ) || defined( RPI_ARCH )
48 # define GLS_CTL_FALLBACK_ENABLED
50 # error "GLES should always be enabled when using the CTL fallback code"
55 #if( defined( GLSGEN_EXPORT_GLSCTLTEXTBOX ) || defined( GLSGEN_IMPORT_GLSCTLTEXTBOX ) || defined( GLSGEN_GLSCTLTEXTBOX_EXPORT_GENERATED ) || defined( GLS_IMPORT_GENERATED ) ) \
56 && defined( _MSC_VER )
57 # if defined( GLSGEN_EXPORT_GLSCTLTEXTBOX ) || defined( GLSGEN_GLSCTLTEXTBOX_EXPORT_GENERATED )
58 # define GLSGEN_GLSCTLTEXTBOX_EXPORT __declspec( dllexport )
60 # define GLSGEN_GLSCTLTEXTBOX_EXPORT __declspec( dllimport )
63 # define GLSGEN_GLSCTLTEXTBOX_EXPORT
73 #ifndef GLS_CTL_FALLBACK_ENABLED
75 # define CTL_BASE_CLASS GlsText
78 # define CTL_BASE_CLASS GlsTextBox
81 #define LIB_BASE_NAME "gls_ctl_text_box"
87 # if !defined( NO_GLS_AUTOLIB ) && !defined( GLS_IMPORT_LIBRARY )
89 # define PANGO_SUFFIX "_64"
91 # define PANGO_SUFFIX ""
93 # pragma message( "Will automatically link with libpango" PANGO_SUFFIX "-1.0.lib" )
94 # pragma message( "Will automatically link with libpangoft2" PANGO_SUFFIX "-1.0.lib" )
95 # pragma message( "Will automatically link with libgobject" PANGO_SUFFIX "-2.0.lib" )
96 # pragma comment( lib, "libpango" PANGO_SUFFIX "-1.0.lib" )
97 # pragma comment( lib, "libpangoft2" PANGO_SUFFIX "-1.0.lib" )
98 # pragma comment( lib, "libgobject" PANGO_SUFFIX "-2.0.lib" )
105 #ifndef GLS_CTL_FALLBACK_ENABLED
106 class GlsPangoWrapper;
109 class GlsTextBoxFontRenderer;
110 #endif // GLS_CTL_FALLBACK_ENABLED
113 class GlsGloFileAttribute;
114 class GlsStateManager;
115 class GlsQuadListVCT_2D;
136 friend class GlsCTLTextBoxEditor;
138 #ifndef GLS_CTL_FALLBACK_ENABLED
147 #endif // GLS_CTL_FALLBACK_ENABLED
152 VERTICAL_ALIGNMENT_CENTER = ALIGN_CENTER,
153 VERTICAL_ALIGNMENT_TOP = ALIGN_TOP,
154 VERTICAL_ALIGNMENT_BOTTOM = ALIGN_BOTTOM
161 ELLIPSIZE_MODE_START,
162 ELLIPSIZE_MODE_MIDDLE,
201 #ifndef GLS_CTL_FALLBACK_ENABLED
215 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void Draw();
218 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void SetVertices(
unsigned int nPoints,
Vertex* vertices );
221 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void Scale(
float px,
float py,
float pz,
Vertex* anchor,
int handleBar );
227 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void VaString(
const char* format, ... );
232 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void VerticalAlignment( VerticalAlignment_t verticalAlignment );
245 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void VerticalAlignment( VerticalAlignment_t verticalAlignment ) { _BaseClass::VerticalAlignment( verticalAlignment ); }
248 #endif // GLS_CTL_FALLBACK_ENABLED
263 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void Rebuild();
284 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
unsigned int GetLineCount();
290 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
unsigned int GetGlyphCount();
297 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT GlyphMetrics
GetGlyphMetrics(
const unsigned int glyphIndex );
310 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void SetAltWidth(
float width );
316 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void SetAltHeight(
float height );
341 #ifndef GLS_CTL_FALLBACK_ENABLED
361 #endif // GLS_CTL_FALLBACK_ENABLED
368 # ifndef GLS_CTL_FALLBACK_ENABLED
375 bool _geometryRefreshDraw;
380 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void PopulateQuadStorage(
IGlsStateManager* stateManager );
386 # endif // GLS_CTL_FALLBACK_ENABLED
391 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void DrawText();
393 #ifndef GLS_CTL_FALLBACK_ENABLED
397 #endif // GLS_CTL_FALLBACK_ENABLED
401 void OnCellDimensionChanged()
413 #ifndef GLS_CTL_FALLBACK_ENABLED
422 if( str ==
"ALIGN_TOP" || str ==
"VERTICAL_ALIGNMENT_TOP" )
424 verticalAlignment = disti::GlsCTLTextBox::ALIGN_TOP;
426 else if( str ==
"ALIGN_CENTER" || str ==
"VERTICAL_ALIGNMENT_CENTER" )
428 verticalAlignment = disti::GlsCTLTextBox::ALIGN_CENTER;
430 else if( str ==
"ALIGN_BOTTOM" || str ==
"VERTICAL_ALIGNMENT_BOTTOM" )
432 verticalAlignment = disti::GlsCTLTextBox::ALIGN_BOTTOM;
441 switch( verticalAlignment )
443 case disti::GlsCTLTextBox::ALIGN_TOP:
444 outstr <<
"ALIGN_TOP";
446 case disti::GlsCTLTextBox::ALIGN_CENTER:
447 outstr <<
"ALIGN_CENTER";
449 case disti::GlsCTLTextBox::ALIGN_BOTTOM:
450 outstr <<
"ALIGN_BOTTOM";
455 #endif // GLS_CTL_FALLBACK_ENABLED
464 if( str ==
"ELLIPSIZE_MODE_NONE" )
466 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_NONE;
468 else if( str ==
"ELLIPSIZE_MODE_START" )
470 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_START;
472 else if( str ==
"ELLIPSIZE_MODE_MIDDLE" )
474 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_MIDDLE;
476 else if( str ==
"ELLIPSIZE_MODE_END" )
478 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_END;
487 switch( ellipsizeMode )
489 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_NONE:
490 outstr <<
"ELLIPSIZE_MODE_NONE";
492 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_START:
493 outstr <<
"ELLIPSIZE_MODE_START";
495 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_MIDDLE:
496 outstr <<
"ELLIPSIZE_MODE_MIDDLE";
498 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_END:
499 outstr <<
"ELLIPSIZE_MODE_END";
507 #endif // INCLUDED_GLS_CTL_TEXT_BOX_H
The DistiUnhideGlobalsDummyClass class.
virtual VerticalAlignment_t VerticalAlignment()
The disti::GlsTextBox class.
ScopedPtr< GlsPangoWrapper > _glsPangoWrapper
Definition: gls_ctl_text_box.h:353
virtual float TextHorizontalScale()
void AdjustImageVertsAndCoords(PangoRect &verts, PangoRect &texCoords)
virtual void PreDraw(const OpenGLMatrices ¤t, Culler &culler)
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:278
virtual void CopyGeometry(DisplayObject *src)
virtual void SetVertices(unsigned int nPoints, Vertex *vertices)
float _altWidth
Definition: gls_ctl_text_box.h:343
bool RequiresFontFile() const DISTI_METHOD_OVERRIDE
Definition: gls_ctl_text_box.h:335
virtual DisplayObject * CloneObject(bool generateNames=false)
EllipsizeMode_t
Definition: gls_ctl_text_box.h:158
virtual void SetAvailableAttributes(unsigned int value)
virtual void VaString(const char *format,...)
virtual GlyphMetrics GetGlyphMetrics(const unsigned int glyphIndex)
float _cellHeight
Definition: gls_text.h:784
Definition: gls_state_manager_interface.h:66
virtual void RecalcVertices()
virtual unsigned int GetLineCount()
The disti::GlsText class.
float _altHeight
Definition: gls_ctl_text_box.h:345
Definition: gls_glo_file.h:835
virtual unsigned int GetGlyphCount()
virtual void CopyProperties(DisplayObject *src)
virtual float TextVerticalScale()
virtual void Scale(float px, float py, float pz, Vertex *anchor, int handleBar)
The Gls CTL (Complex Text Layout) Text Box.
Definition: gls_ctl_text_box.h:126
bool ControlCellSize() const
Definition: gls_text.h:463
VerticalAlignmentCTL_t
Definition: gls_ctl_text_box.h:150
static const unsigned int INTERNAL_BORDER
Definition: gls_ctl_text_box.h:134
Definition: gls_ctl_text_box.h:169
VerticalAlignment_t
Definition: gls_ctl_text_box.h:140
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
float _cellWidth
Definition: gls_text.h:787
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 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)