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 libfontconfig" PANGO_SUFFIX "-1.0.lib" )
94 # pragma message( "Will automatically link with libpango" PANGO_SUFFIX "-1.0.lib" )
95 # pragma message( "Will automatically link with libpangoft2" PANGO_SUFFIX "-1.0.lib" )
96 # pragma message( "Will automatically link with libgobject" PANGO_SUFFIX "-2.0.lib" )
97 # pragma comment( lib, "libfontconfig" PANGO_SUFFIX "-1.0.lib" )
98 # pragma comment( lib, "libpango" PANGO_SUFFIX "-1.0.lib" )
99 # pragma comment( lib, "libpangoft2" PANGO_SUFFIX "-1.0.lib" )
100 # pragma comment( lib, "libgobject" PANGO_SUFFIX "-2.0.lib" )
107 #ifndef GLS_CTL_FALLBACK_ENABLED
108 class GlsPangoWrapper;
111 class GlsTextBoxFontRenderer;
112 #endif // GLS_CTL_FALLBACK_ENABLED
115 class GlsGloFileAttribute;
116 class GlsStateManager;
117 class GlsQuadListVCT_2D;
131 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
140 friend class GlsCTLTextBoxEditor;
142 #ifndef GLS_CTL_FALLBACK_ENABLED
151 #endif // GLS_CTL_FALLBACK_ENABLED
156 VERTICAL_ALIGNMENT_CENTER = ALIGN_CENTER,
157 VERTICAL_ALIGNMENT_TOP = ALIGN_TOP,
158 VERTICAL_ALIGNMENT_BOTTOM = ALIGN_BOTTOM
165 ELLIPSIZE_MODE_START,
166 ELLIPSIZE_MODE_MIDDLE,
181 TEXT_DIRECTION_AUTOMATIC,
182 TEXT_DIRECTION_AUTO_BY_LINE
220 #ifndef GLS_CTL_FALLBACK_ENABLED
234 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void Draw();
237 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void SetVertices(
unsigned int nPoints,
Vertex* vertices );
240 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void Scale(
float px,
float py,
float pz,
Vertex* anchor,
int handleBar );
246 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void VaString(
const char* format, ... );
251 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void VerticalAlignment( VerticalAlignment_t verticalAlignment );
258 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void VerticalAlignment( VerticalAlignment_t verticalAlignment ) { BaseClass::VerticalAlignment( verticalAlignment ); }
261 #endif // GLS_CTL_FALLBACK_ENABLED
281 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void Rebuild();
302 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
unsigned int GetLineCount();
308 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
unsigned int GetGlyphCount();
315 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT GlyphMetrics
GetGlyphMetrics(
const unsigned int glyphIndex );
329 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void SetAltWidth(
float width );
335 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void SetAltHeight(
float height );
376 GLSGEN_GLSCTLTEXTBOX_EXPORT
static void SetAutomaticPixelAlignmentEnabled(
const bool enabled );
380 #ifndef GLS_CTL_FALLBACK_ENABLED
402 static bool s_isAutomaticPixelAlignmentEnabled;
407 #endif // GLS_CTL_FALLBACK_ENABLED
414 # ifndef GLS_CTL_FALLBACK_ENABLED
421 bool _geometryRefreshDraw;
426 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void PopulateQuadStorage(
IGlsStateManager* stateManager );
432 # endif // GLS_CTL_FALLBACK_ENABLED
437 virtual GLSGEN_GLSCTLTEXTBOX_EXPORT
void DrawText();
439 #ifndef GLS_CTL_FALLBACK_ENABLED
443 #endif // GLS_CTL_FALLBACK_ENABLED
447 void OnCellDimensionChanged()
459 #ifndef GLS_CTL_FALLBACK_ENABLED
468 if( str ==
"ALIGN_TOP" || str ==
"VERTICAL_ALIGNMENT_TOP" )
470 verticalAlignment = disti::GlsCTLTextBox::ALIGN_TOP;
472 else if( str ==
"ALIGN_CENTER" || str ==
"VERTICAL_ALIGNMENT_CENTER" )
474 verticalAlignment = disti::GlsCTLTextBox::ALIGN_CENTER;
476 else if( str ==
"ALIGN_BOTTOM" || str ==
"VERTICAL_ALIGNMENT_BOTTOM" )
478 verticalAlignment = disti::GlsCTLTextBox::ALIGN_BOTTOM;
487 switch( verticalAlignment )
489 case disti::GlsCTLTextBox::ALIGN_TOP:
490 outstr <<
"ALIGN_TOP";
492 case disti::GlsCTLTextBox::ALIGN_CENTER:
493 outstr <<
"ALIGN_CENTER";
495 case disti::GlsCTLTextBox::ALIGN_BOTTOM:
496 outstr <<
"ALIGN_BOTTOM";
501 #endif // GLS_CTL_FALLBACK_ENABLED
510 if( str ==
"ELLIPSIZE_MODE_NONE" )
512 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_NONE;
514 else if( str ==
"ELLIPSIZE_MODE_START" )
516 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_START;
518 else if( str ==
"ELLIPSIZE_MODE_MIDDLE" )
520 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_MIDDLE;
522 else if( str ==
"ELLIPSIZE_MODE_END" )
524 ellipsizeMode = disti::GlsCTLTextBox::ELLIPSIZE_MODE_END;
533 switch( ellipsizeMode )
535 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_NONE:
536 outstr <<
"ELLIPSIZE_MODE_NONE";
538 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_START:
539 outstr <<
"ELLIPSIZE_MODE_START";
541 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_MIDDLE:
542 outstr <<
"ELLIPSIZE_MODE_MIDDLE";
544 case disti::GlsCTLTextBox::ELLIPSIZE_MODE_END:
545 outstr <<
"ELLIPSIZE_MODE_END";
558 if( str ==
"TEXT_DIRECTION_LTR" )
560 direction = disti::GlsCTLTextBox::TEXT_DIRECTION_LTR;
562 else if( str ==
"TEXT_DIRECTION_RTL" )
564 direction = disti::GlsCTLTextBox::TEXT_DIRECTION_RTL;
566 else if( str ==
"TEXT_DIRECTION_AUTOMATIC" )
568 direction = disti::GlsCTLTextBox::TEXT_DIRECTION_AUTOMATIC;
570 else if( str ==
"TEXT_DIRECTION_AUTO_BY_LINE" )
572 direction = disti::GlsCTLTextBox::TEXT_DIRECTION_AUTO_BY_LINE;
583 case disti::GlsCTLTextBox::TEXT_DIRECTION_LTR:
584 outstr <<
"TEXT_DIRECTION_LTR";
586 case disti::GlsCTLTextBox::TEXT_DIRECTION_RTL:
587 outstr <<
"TEXT_DIRECTION_RTL";
589 case disti::GlsCTLTextBox::TEXT_DIRECTION_AUTOMATIC:
590 outstr <<
"TEXT_DIRECTION_AUTOMATIC";
592 case disti::GlsCTLTextBox::TEXT_DIRECTION_AUTO_BY_LINE:
593 outstr <<
"TEXT_DIRECTION_AUTO_BY_LINE";
601 #endif // INCLUDED_GLS_CTL_TEXT_BOX_H
The DistiUnhideGlobalsDummyClass class.
virtual VerticalAlignment_t VerticalAlignment()
The disti::GlsTextBox class.
#define DISTI_DEPRECATED(msg)
Defines whether this compiler supports the C++14 deprecated attribute.
Definition: gls_cpp_lang_support.h:436
ScopedPtr< GlsPangoWrapper > _glsPangoWrapper
Definition: gls_ctl_text_box.h:392
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:296
virtual void CopyGeometry(DisplayObject *src)
virtual void SetVertices(unsigned int nPoints, Vertex *vertices)
float _altWidth
Definition: gls_ctl_text_box.h:382
bool RequiresFontFile() const DISTI_METHOD_OVERRIDE
Definition: gls_ctl_text_box.h:366
virtual DisplayObject * CloneObject(bool generateNames=false)
EllipsizeMode_t
Definition: gls_ctl_text_box.h:162
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:787
Definition: gls_state_manager_interface.h:67
virtual void RecalcVertices()
virtual unsigned int GetLineCount()
The disti::GlsText class.
float _altHeight
Definition: gls_ctl_text_box.h:384
Definition: gls_glo_file.h:982
virtual unsigned int GetGlyphCount()
std::ostream & operator<<(std::ostream &outstr, const AttributeName &name)
Defines the stream out operator.
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:128
bool ControlCellSize() const
Definition: gls_text.h:465
VerticalAlignmentCTL_t
Definition: gls_ctl_text_box.h:154
static const unsigned int INTERNAL_BORDER
Definition: gls_ctl_text_box.h:138
virtual void SetLayoutAutoDir(bool)
Definition: gls_ctl_text_box.h:323
TextDirection_t
Definition: gls_ctl_text_box.h:177
Definition: gls_ctl_text_box.h:188
VerticalAlignment_t
Definition: gls_ctl_text_box.h:144
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
float _cellWidth
Definition: gls_text.h:790
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array)
float _textVerticalScale
Definition: gls_ctl_text_box.h:389
virtual EllipsizeMode_t EllipsizeMode()
virtual void SetAltHeight(float height)
A smart pointer with unique ownership – poor man's std::unique_ptr.
Macros and helper code to determine what subset of C++11/14/17 is available.
float _textHorizontalScale
Definition: gls_ctl_text_box.h:387
virtual TextDirection_t TextDirection()
Definition: bmpimage.h:46
virtual void SetAltWidth(float width)