Qt 4.8
Public Functions | Private Functions | Properties | Friends | List of all members
QGlyphRun Class Reference

The QGlyphRun class provides direct access to the internal glyphs in a font. More...

#include <qglyphrun.h>

Public Functions

void clear ()
 Clears all data in the QGlyphRun object. More...
 
QVector< quint32glyphIndexes () const
 Returns the glyph indexes for this QGlyphRun object. More...
 
bool operator!= (const QGlyphRun &other) const
 Compares other to this QGlyphRun object. More...
 
QGlyphRunoperator= (const QGlyphRun &other)
 Assigns other to this QGlyphRun object. More...
 
bool operator== (const QGlyphRun &other) const
 Compares other to this QGlyphRun object. More...
 
bool overline () const
 Returns true if this QGlyphRun should be painted with an overline decoration. More...
 
QVector< QPointFpositions () const
 Returns the position of the edge of the baseline for each glyph in this set of glyph indexes. More...
 
 QGlyphRun ()
 Constructs an empty QGlyphRun object. More...
 
 QGlyphRun (const QGlyphRun &other)
 Constructs a QGlyphRun object which is a copy of other. More...
 
QRawFont rawFont () const
 Returns the font selected for this QGlyphRun object. More...
 
void setGlyphIndexes (const QVector< quint32 > &glyphIndexes)
 Set the glyph indexes for this QGlyphRun object to glyphIndexes. More...
 
void setOverline (bool overline)
 Indicates that this QGlyphRun should be painted with an overline decoration if overline is true. More...
 
void setPositions (const QVector< QPointF > &positions)
 Sets the positions of the edge of the baseline for each glyph in this set of glyph indexes to positions. More...
 
void setRawData (const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)
 Sets the glyph indexes and positions of this QGlyphRun to use the first size elements in the arrays glyphIndexArray and glyphPositionArray. More...
 
void setRawFont (const QRawFont &rawFont)
 Sets the font specified by rawFont to be the font used to look up the glyph indexes. More...
 
void setStrikeOut (bool strikeOut)
 Indicates that this QGlyphRun should be painted with an strike out decoration if strikeOut is true. More...
 
void setUnderline (bool underline)
 Indicates that this QGlyphRun should be painted with an underline decoration if underline is true. More...
 
bool strikeOut () const
 Returns true if this QGlyphRun should be painted with a strike out decoration. More...
 
bool underline () const
 Returns true if this QGlyphRun should be painted with an underline decoration. More...
 
 ~QGlyphRun ()
 Destroys the QGlyphRun. More...
 

Private Functions

void detach ()
 
QGlyphRun operator+ (const QGlyphRun &other) const
 
QGlyphRunoperator+= (const QGlyphRun &other)
 

Properties

QExplicitlySharedDataPointer< QGlyphRunPrivated
 

Friends

class QGlyphRunPrivate
 
class QTextLine
 

Detailed Description

The QGlyphRun class provides direct access to the internal glyphs in a font.

Since
4.8

When Qt displays a string of text encoded in Unicode, it will first convert the Unicode points into a list of glyph indexes and a list of positions based on one or more fonts. The Unicode representation of the text and the QFont object will in this case serve as a convenient abstraction that hides the details of what actually takes place when displaying the text on-screen. For instance, by the time the text actually reaches the screen, it may be represented by a set of fonts in addition to the one specified by the user, e.g. in case the originally selected font did not support all the writing systems contained in the text.

Under certain circumstances, it can be useful as an application developer to have more low-level control over which glyphs in a specific font are drawn to the screen. This could for instance be the case in applications that use an external font engine and text shaper together with Qt. QGlyphRun provides an interface to the raw data needed to get text on the screen. It contains a list of glyph indexes, a position for each glyph and a font.

It is the user's responsibility to ensure that the selected font actually contains the provided glyph indexes.

QTextLayout::glyphRuns() or QTextFragment::glyphRuns() can be used to convert unicode encoded text into a list of QGlyphRun objects, and QPainter::drawGlyphRun() can be used to draw the glyphs.

Note
Please note that QRawFont is considered local to the thread in which it is constructed. This in turn means that a new QRawFont will have to be created and set on the QGlyphRun if it is moved to a different thread. If the QGlyphRun contains a reference to a QRawFont from a different thread than the current, it will not be possible to draw the glyphs using a QPainter, as the QRawFont is considered invalid and inaccessible in this case.

Definition at line 59 of file qglyphrun.h.

Constructors and Destructors

◆ QGlyphRun() [1/2]

QGlyphRun::QGlyphRun ( )

Constructs an empty QGlyphRun object.

Definition at line 94 of file qglyphrun.cpp.

94  : d(new QGlyphRunPrivate)
95 {
96 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104

◆ QGlyphRun() [2/2]

QGlyphRun::QGlyphRun ( const QGlyphRun other)

Constructs a QGlyphRun object which is a copy of other.

Definition at line 101 of file qglyphrun.cpp.

102 {
103  d = other.d;
104 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104

◆ ~QGlyphRun()

QGlyphRun::~QGlyphRun ( )

Destroys the QGlyphRun.

Definition at line 109 of file qglyphrun.cpp.

110 {
111  // Required for QExplicitlySharedDataPointer
112 }

Functions

◆ clear()

void QGlyphRun::clear ( )

Clears all data in the QGlyphRun object.

Definition at line 255 of file qglyphrun.cpp.

256 {
257  detach();
258  d->rawFont = QRawFont();
259  d->strikeOut = false;
260  d->overline = false;
261  d->underline = false;
262 
265 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
void setPositions(const QVector< QPointF > &positions)
Sets the positions of the edge of the baseline for each glyph in this set of glyph indexes to positio...
Definition: qglyphrun.cpp:244
QRawFont rawFont
Definition: qglyphrun_p.h:98
void detach()
Definition: qglyphrun.cpp:117
The QRawFont class provides access to a single physical instance of a font.
Definition: qrawfont.h:63
void setGlyphIndexes(const QVector< quint32 > &glyphIndexes)
Set the glyph indexes for this QGlyphRun object to glyphIndexes.
Definition: qglyphrun.cpp:217

◆ detach()

void QGlyphRun::detach ( )
private
Warning
This function is not part of the public interface.

Definition at line 117 of file qglyphrun.cpp.

Referenced by clear(), setGlyphIndexes(), setOverline(), setPositions(), setRawData(), setRawFont(), setStrikeOut(), and setUnderline().

118 {
119  if (d->ref != 1)
120  d.detach();
121 }
QAtomicInt ref
Definition: qshareddata.h:59
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
void detach()
If the shared data object&#39;s reference count is greater than 1, this function creates a deep copy of t...
Definition: qshareddata.h:148

◆ glyphIndexes()

QVector< quint32 > QGlyphRun::glyphIndexes ( ) const

Returns the glyph indexes for this QGlyphRun object.

See also
setGlyphIndexes(), setPositions()

Definition at line 202 of file qglyphrun.cpp.

Referenced by QTextLine::glyphs(), and setGlyphIndexes().

203 {
204  if (d->glyphIndexes.constData() == d->glyphIndexData) {
205  return d->glyphIndexes;
206  } else {
208  qMemCopy(indexes.data(), d->glyphIndexData, d->glyphIndexDataSize * sizeof(quint32));
209  return indexes;
210  }
211 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
QVector< quint32 > glyphIndexes
Definition: qglyphrun_p.h:96
const quint32 * glyphIndexData
Definition: qglyphrun_p.h:104
void * qMemCopy(void *dest, const void *src, size_t n)
Definition: qglobal.cpp:2508
unsigned int quint32
Definition: qglobal.h:938
const T * constData() const
Returns a const pointer to the data stored in the vector.
Definition: qvector.h:154

◆ operator!=()

bool QGlyphRun::operator!= ( const QGlyphRun other) const
inline

Compares other to this QGlyphRun object.

Returns true if any of the list of glyph indexes, the list of positions or the font are different, otherwise returns false.

Definition at line 84 of file qglyphrun.h.

85  { return !operator==(other); }
bool operator==(const QGlyphRun &other) const
Compares other to this QGlyphRun object.
Definition: qglyphrun.cpp:136

◆ operator+()

QGlyphRun QGlyphRun::operator+ ( const QGlyphRun other) const
private

◆ operator+=()

QGlyphRun& QGlyphRun::operator+= ( const QGlyphRun other)
private

◆ operator=()

QGlyphRun & QGlyphRun::operator= ( const QGlyphRun other)

Assigns other to this QGlyphRun object.

Definition at line 126 of file qglyphrun.cpp.

127 {
128  d = other.d;
129  return *this;
130 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104

◆ operator==()

bool QGlyphRun::operator== ( const QGlyphRun other) const

Compares other to this QGlyphRun object.

Returns true if the list of glyph indexes, the list of positions and the font are all equal, otherwise returns false.

Definition at line 136 of file qglyphrun.cpp.

137 {
138  if (d == other.d)
139  return true;
140 
141  if ((d->glyphIndexDataSize != other.d->glyphIndexDataSize)
143  return false;
144  }
145 
146  if (d->glyphIndexData != other.d->glyphIndexData) {
147  for (int i = 0; i < d->glyphIndexDataSize; ++i) {
148  if (d->glyphIndexData[i] != other.d->glyphIndexData[i])
149  return false;
150  }
151  }
152  if (d->glyphPositionData != other.d->glyphPositionData) {
153  for (int i = 0; i < d->glyphPositionDataSize; ++i) {
154  if (d->glyphPositionData[i] != other.d->glyphPositionData[i])
155  return false;
156  }
157  }
158 
159  return (d->overline == other.d->overline
160  && d->underline == other.d->underline
161  && d->strikeOut == other.d->strikeOut
162  && d->rawFont == other.d->rawFont);
163 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
const quint32 * glyphIndexData
Definition: qglyphrun_p.h:104
QRawFont rawFont
Definition: qglyphrun_p.h:98
const QPointF * glyphPositionData
Definition: qglyphrun_p.h:107

◆ overline()

bool QGlyphRun::overline ( ) const

Returns true if this QGlyphRun should be painted with an overline decoration.

See also
setOverline()

Definition at line 292 of file qglyphrun.cpp.

Referenced by QPainter::drawGlyphRun(), and setOverline().

293 {
294  return d->overline;
295 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104

◆ positions()

QVector< QPointF > QGlyphRun::positions ( ) const

Returns the position of the edge of the baseline for each glyph in this set of glyph indexes.

Definition at line 228 of file qglyphrun.cpp.

Referenced by QTextLine::glyphs(), and setPositions().

229 {
231  return d->glyphPositions;
232  } else {
233  QVector<QPointF> glyphPositions(d->glyphPositionDataSize);
234  qMemCopy(glyphPositions.data(), d->glyphPositionData,
235  d->glyphPositionDataSize * sizeof(QPointF));
236  return glyphPositions;
237  }
238 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
const QPointF * glyphPositionData
Definition: qglyphrun_p.h:107
void * qMemCopy(void *dest, const void *src, size_t n)
Definition: qglobal.cpp:2508
QVector< QPointF > glyphPositions
Definition: qglyphrun_p.h:97
const T * constData() const
Returns a const pointer to the data stored in the vector.
Definition: qvector.h:154

◆ rawFont()

QRawFont QGlyphRun::rawFont ( ) const

Returns the font selected for this QGlyphRun object.

See also
setRawFont()

Definition at line 180 of file qglyphrun.cpp.

Referenced by QPainter::drawGlyphRun(), QRawFont::fromFont(), and setRawFont().

181 {
182  return d->rawFont;
183 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
QRawFont rawFont
Definition: qglyphrun_p.h:98

◆ setGlyphIndexes()

void QGlyphRun::setGlyphIndexes ( const QVector< quint32 > &  glyphIndexes)

Set the glyph indexes for this QGlyphRun object to glyphIndexes.

The glyph indexes must be valid for the selected font.

Definition at line 217 of file qglyphrun.cpp.

Referenced by clear(), QTextLine::glyphs(), and QPainterReplayer::process().

218 {
219  detach();
220  d->glyphIndexes = glyphIndexes; // Keep a reference to the QVector to avoid copying
221  d->glyphIndexData = glyphIndexes.constData();
222  d->glyphIndexDataSize = glyphIndexes.size();
223 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
QVector< quint32 > glyphIndexes
Definition: qglyphrun_p.h:96
const quint32 * glyphIndexData
Definition: qglyphrun_p.h:104
void detach()
Definition: qglyphrun.cpp:117
QVector< quint32 > glyphIndexes() const
Returns the glyph indexes for this QGlyphRun object.
Definition: qglyphrun.cpp:202
const T * constData() const
Returns a const pointer to the data stored in the vector.
Definition: qvector.h:154
int size() const
Returns the number of items in the vector.
Definition: qvector.h:137

◆ setOverline()

void QGlyphRun::setOverline ( bool  overline)

Indicates that this QGlyphRun should be painted with an overline decoration if overline is true.

Otherwise the QGlyphRun should be painted with no overline decoration.

See also
overline()

Definition at line 303 of file qglyphrun.cpp.

Referenced by QTextLine::glyphs().

304 {
305  if (d->overline == overline)
306  return;
307 
308  detach();
309  d->overline = overline;
310 }
bool overline() const
Returns true if this QGlyphRun should be painted with an overline decoration.
Definition: qglyphrun.cpp:292
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
void detach()
Definition: qglyphrun.cpp:117

◆ setPositions()

void QGlyphRun::setPositions ( const QVector< QPointF > &  positions)

Sets the positions of the edge of the baseline for each glyph in this set of glyph indexes to positions.

Definition at line 244 of file qglyphrun.cpp.

Referenced by clear(), QTextLine::glyphs(), and QPainterReplayer::process().

245 {
246  detach();
247  d->glyphPositions = positions; // Keep a reference to the vector to avoid copying
248  d->glyphPositionData = positions.constData();
249  d->glyphPositionDataSize = positions.size();
250 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
QVector< QPointF > positions() const
Returns the position of the edge of the baseline for each glyph in this set of glyph indexes...
Definition: qglyphrun.cpp:228
void detach()
Definition: qglyphrun.cpp:117
const QPointF * glyphPositionData
Definition: qglyphrun_p.h:107
QVector< QPointF > glyphPositions
Definition: qglyphrun_p.h:97
const T * constData() const
Returns a const pointer to the data stored in the vector.
Definition: qvector.h:154
int size() const
Returns the number of items in the vector.
Definition: qvector.h:137

◆ setRawData()

void QGlyphRun::setRawData ( const quint32 glyphIndexArray,
const QPointF glyphPositionArray,
int  size 
)

Sets the glyph indexes and positions of this QGlyphRun to use the first size elements in the arrays glyphIndexArray and glyphPositionArray.

The data is not copied. The caller must guarantee that the arrays are not deleted as long as this QGlyphRun and any copies of it exists.

See also
setGlyphIndexes(), setPositions()

Definition at line 275 of file qglyphrun.cpp.

277 {
278  detach();
279  d->glyphIndexes.clear();
281 
282  d->glyphIndexData = glyphIndexArray;
283  d->glyphPositionData = glyphPositionArray;
285 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
QVector< quint32 > glyphIndexes
Definition: qglyphrun_p.h:96
const quint32 * glyphIndexData
Definition: qglyphrun_p.h:104
void detach()
Definition: qglyphrun.cpp:117
void clear()
Removes all the elements from the vector and releases the memory used by the vector.
Definition: qvector.h:347
const QPointF * glyphPositionData
Definition: qglyphrun_p.h:107
QVector< QPointF > glyphPositions
Definition: qglyphrun_p.h:97

◆ setRawFont()

void QGlyphRun::setRawFont ( const QRawFont rawFont)

Sets the font specified by rawFont to be the font used to look up the glyph indexes.

See also
rawFont(), setGlyphIndexes()

Definition at line 191 of file qglyphrun.cpp.

Referenced by QTextLine::glyphs(), and QPainterReplayer::process().

192 {
193  detach();
194  d->rawFont = rawFont;
195 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
QRawFont rawFont
Definition: qglyphrun_p.h:98
void detach()
Definition: qglyphrun.cpp:117
QRawFont rawFont() const
Returns the font selected for this QGlyphRun object.
Definition: qglyphrun.cpp:180

◆ setStrikeOut()

void QGlyphRun::setStrikeOut ( bool  strikeOut)

Indicates that this QGlyphRun should be painted with an strike out decoration if strikeOut is true.

Otherwise the QGlyphRun should be painted with no strike out decoration.

See also
strikeOut()

Definition at line 353 of file qglyphrun.cpp.

Referenced by QTextLine::glyphs().

354 {
355  if (d->strikeOut == strikeOut)
356  return;
357 
358  detach();
359  d->strikeOut = strikeOut;
360 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
void detach()
Definition: qglyphrun.cpp:117
bool strikeOut() const
Returns true if this QGlyphRun should be painted with a strike out decoration.
Definition: qglyphrun.cpp:342

◆ setUnderline()

void QGlyphRun::setUnderline ( bool  underline)

Indicates that this QGlyphRun should be painted with an underline decoration if underline is true.

Otherwise the QGlyphRun should be painted with no underline decoration.

See also
underline()

Definition at line 328 of file qglyphrun.cpp.

Referenced by QTextLine::glyphs().

329 {
330  if (d->underline == underline)
331  return;
332 
333  detach();
334  d->underline = underline;
335 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104
void detach()
Definition: qglyphrun.cpp:117
bool underline() const
Returns true if this QGlyphRun should be painted with an underline decoration.
Definition: qglyphrun.cpp:317

◆ strikeOut()

bool QGlyphRun::strikeOut ( ) const

Returns true if this QGlyphRun should be painted with a strike out decoration.

See also
setStrikeOut()

Definition at line 342 of file qglyphrun.cpp.

Referenced by QPainter::drawGlyphRun(), and setStrikeOut().

343 {
344  return d->strikeOut;
345 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104

◆ underline()

bool QGlyphRun::underline ( ) const

Returns true if this QGlyphRun should be painted with an underline decoration.

See also
setUnderline()

Definition at line 317 of file qglyphrun.cpp.

Referenced by QPainter::drawGlyphRun(), and setUnderline().

318 {
319  return d->underline;
320 }
QExplicitlySharedDataPointer< QGlyphRunPrivate > d
Definition: qglyphrun.h:104

Friends and Related Functions

◆ QGlyphRunPrivate

friend class QGlyphRunPrivate
friend

Definition at line 97 of file qglyphrun.h.

◆ QTextLine

friend class QTextLine
friend

Definition at line 98 of file qglyphrun.h.

Properties

◆ d


The documentation for this class was generated from the following files: