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)