VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtTextLayout.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2014 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
14 #include <vrvUtil/DtUnicode.h>
15 
16 struct hb_buffer_t;
17 struct hb_font_t;
18 struct hb_glyph_position_t;
19 struct hb_glyph_info_t;
20 
21 namespace makVrv
22 {
23  class DtFreeTypeFace;
24 
28  {
29  public:
31  {
32  public:
35 
37  virtual ~HarfBuzzShaper();
38 
40  void setFont(const DtFontSP& f);
41 
43  void layoutText(const DtUnicode& string);
44 
46  hb_glyph_position_t *getGlyphPositions(unsigned int* glyph_count) const;
47 
49  hb_glyph_info_t* getGlyphInfos(unsigned int* glyph_count) const;
50 
51  protected:
52  hb_font_t* myHarfBuzzFont;
53  hb_buffer_t *myHarfBuzzBuffer;
54  };
55 
56  public:
58  DtTextLayout();
59 
61  virtual ~DtTextLayout();
62 
64  virtual void renderText(DtTexturedGlyphRenderer*, DtTextProxy*);
65 
67  virtual DtUnicode bidiFix(const DtUnicode&) const;
68 
70  virtual Dt2dPoint calculateGlyphSize(const DtFontSP& font, const DtPen& pen,
71  const DtUnicode& string, unsigned int pos = 0, int len = -1);
72 
74  virtual DtBoundingBox calculateBoundingBox(const DtFontSP& font, const DtPen& pen,
75  const DtUnicode& string, unsigned int pos = 0, int len = -1);
76 
77  virtual bool isShaped(void) const{ return true; }
78 
79  virtual void layoutRightToLeft(const DtTextProxy*);
80  virtual void layoutLeftToRight(const DtTextProxy*);
81 
82  protected:
84  virtual bool renderCharacter(DtGlyphRenderer& renderer,
85  DtPen& pen, const DtFontSP& font, const unsigned int& character);
86 
88  virtual void renderLayout(DtTexturedGlyphRenderer*, DtTextProxy*);
89 
90  protected:
92 
95  std::vector<std::string> myFontFilePaths;
96  unsigned int myPointSize;
99 
102  {
103  CharacterInformation() : advance(0.0f), offset(0.0f), glyphIndex(0), changeColor(false), glyphDefined(true)
104  {
105  color[0] = color[1] = color[2] = color[3] = 1.0;
106  };
108  advance(orig.advance), offset(orig.offset), glyphIndex(orig.glyphIndex), changeColor(orig.changeColor),
109  glyphDefined(orig.glyphDefined) { memcpy(color, orig.color, sizeof(color)); };
110 
111  float color[4];
114  unsigned short glyphIndex;
117  };
118 
122  {
123  LineInformation() : margin(0.0f), alignment(0) {}
125  margin(orig.margin), alignment(orig.alignment), characters(orig.characters) {};
126 
127  float margin;
128  unsigned int alignment;
129  std::vector<CharacterInformation> characters;
130  };
131 
132  typedef std::vector<LineInformation> Lines;
134 
135  double myLineLength;
137  };
138 }
Generic base class for text layout renderers.
Definition: DtTextLayoutInterface.h:24
virtual bool isShaped(void) const
Definition: DtTextLayout.h:77
A unicode string.
Definition: DtUnicode.h:33
std::vector< std::string > myFontFilePaths
Members that are used to store information about the last font/point size used.
Definition: DtTextLayout.h:95
std::vector< LineInformation > Lines
Definition: DtTextLayout.h:132
unsigned short glyphIndex
Definition: DtTextLayout.h:114
hb_font_t * myHarfBuzzFont
Definition: DtTextLayout.h:52
A 2D point.
Definition: DtBoundingBox.h:19
Contains the makVrv::DtTextLayoutInterface class declaration.
bool glyphDefined
Definition: DtTextLayout.h:116
A glyph renderer which renders the texture associated with a glyph.
Definition: DtTexturedGlyphRenderer.h:23
A class for controlling text owned by the TextRenderer.
Definition: DtTextRenderer.h:90
Abstract class for handling glyph rendering.
Definition: DtGlyphRenderer.h:21
unsigned int alignment
Definition: DtTextLayout.h:128
bool changeColor
Definition: DtTextLayout.h:115
LineInformation()
Definition: DtTextLayout.h:123
Lines myLines
Definition: DtTextLayout.h:133
std::vector< CharacterInformation > characters
Definition: DtTextLayout.h:129
float color[4]
Definition: DtTextLayout.h:109
double myLineLength
Definition: DtTextLayout.h:135
DtUnicode myLastStringRendered
Definition: DtTextLayout.h:97
hb_buffer_t * myHarfBuzzBuffer
Definition: DtTextLayout.h:53
Dt2dPoint advance
Definition: DtTextLayout.h:112
#define DT_DLL_VRVGRAPHICS
Contains DLL export macros.
Definition: vrvGraphics.h:19
DtUnicode myRenderedText
Definition: DtTextLayout.h:98
CharacterInformation()
Definition: DtTextLayout.h:103
A class for rendering text objects using harfbuzz layout for right to left and left to right text sha...
Definition: DtTextLayout.h:27
Structure that contains information about the layout of a line of text.
Definition: DtTextLayout.h:121
Dt2dPoint offset
Definition: DtTextLayout.h:113
HarfBuzzShaper myShaper
Definition: DtTextLayout.h:91
boost::shared_ptr< DtFont > DtFontSP
Definition: DtFontManager.h:20
A pen object with parameters on how to draw text.
Definition: DtBoundingBox.h:80
unsigned int myPointSize
Definition: DtTextLayout.h:96
bool myRightToLeftLayout
Definition: DtTextLayout.h:136
Definition: DtTextLayout.h:30
CharacterInformation(const CharacterInformation &orig)
Definition: DtTextLayout.h:107
voidpf uLong offset
Definition: ioapi.h:42
LineInformation(const LineInformation &orig)
Definition: DtTextLayout.h:124
A simple bounding box.
Definition: DtBoundingBox.h:101
Stucture that contains information about a particular character, color change or simple line/characte...
Definition: DtTextLayout.h:101

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)