cairomm
1.16.2
|
A ScaledFont is a font scaled to a particular size and device resolution. More...
#include <cairomm/scaledfont.h>
Public Types | |
typedef cairo_scaled_font_t | cobject |
The underlying C cairo object type. More... | |
Public Member Functions | |
cobject * | cobj () |
Provides acces to the underlying C cairo object. More... | |
const cobject * | cobj () const |
Provides acces to the underlying C cairo object. More... | |
ScaledFont (cobject *cobj, bool has_reference=false) | |
Create a C++ wrapper object from the C instance. More... | |
ScaledFont (const ScaledFont &)=delete | |
ScaledFont & | operator= (const ScaledFont &)=delete |
virtual | ~ScaledFont () |
void | get_extents (FontExtents & extents) const |
Gets the metrics for a ScaledFont. More... | |
void | get_text_extents (const std::string & utf8, TextExtents & extents) const |
Gets the extents for a string of text. More... | |
void | get_glyph_extents (const std::vector< Glyph > & glyphs, TextExtents & extents) |
Gets the extents for an array of glyphs. More... | |
RefPtr< FontFace > | get_font_face () const |
The FontFace with which this ScaledFont was created. More... | |
void | get_font_options (FontOptions & options) const |
Gets the FontOptions with which the ScaledFont was created. More... | |
void | get_font_matrix (Matrix & font_matrix) const |
Gets the font matrix with which the ScaledFont was created. More... | |
void | get_ctm (Matrix & ctm) const |
Gets the CTM with which the ScaledFont was created. More... | |
FontType | get_type () const |
Gets the type of scaled Font. More... | |
void | text_to_glyphs (double x, double y, const std::string & utf8, std::vector< Glyph > & glyphs, std::vector< TextCluster > & clusters, TextClusterFlags & cluster_flags) |
void | get_scale_matrix (Matrix & scale_matrix) const |
Stores the scale matrix of this scaled font into matrix. More... | |
Static Public Member Functions | |
static RefPtr< ScaledFont > | create (const RefPtr< FontFace > & font_face, const Matrix & font_matrix, const Matrix & ctm, const FontOptions & options=FontOptions()) |
Creates a ScaledFont object from a font face and matrices that describe the size of the font and the environment in which it will be used. More... | |
Protected Member Functions | |
ScaledFont (const RefPtr< FontFace > & font_face, const Matrix & font_matrix, const Matrix & ctm, const FontOptions & options=FontOptions()) | |
Protected Attributes | |
cobject * | m_cobject |
The underlying C cairo object that is wrapped by this ScaledFont. More... | |
A ScaledFont is a font scaled to a particular size and device resolution.
It is most useful for low-level font usage where a library or application wants to cache a reference to a scaled font to speed up the computation of metrics.
typedef cairo_scaled_font_t Cairo::ScaledFont::cobject |
The underlying C cairo object type.
|
explicit |
Create a C++ wrapper object from the C instance.
This C++ object should then be given to a RefPtr.
|
delete |
|
virtual |
|
protected |
|
inline |
Provides acces to the underlying C cairo object.
|
inline |
Provides acces to the underlying C cairo object.
|
static |
Creates a ScaledFont object from a font face and matrices that describe the size of the font and the environment in which it will be used.
font_face | A font face. |
font_matrix | font space to user space transformation matrix for the font. In the simplest case of a N point font, this matrix is just a scale by N, but it can also be used to shear the font or stretch it unequally along the two axes. See Context::set_font_matrix(). |
ctm | user to device transformation matrix with which the font will be used. |
options | options to use when getting metrics for the font and rendering with it. |
void Cairo::ScaledFont::get_ctm | ( | Matrix & | ctm | ) | const |
Gets the CTM with which the ScaledFont was created.
void Cairo::ScaledFont::get_extents | ( | FontExtents & | extents | ) | const |
Gets the metrics for a ScaledFont.
The FontFace with which this ScaledFont was created.
void Cairo::ScaledFont::get_font_matrix | ( | Matrix & | font_matrix | ) | const |
Gets the font matrix with which the ScaledFont was created.
void Cairo::ScaledFont::get_font_options | ( | FontOptions & | options | ) | const |
Gets the FontOptions with which the ScaledFont was created.
void Cairo::ScaledFont::get_glyph_extents | ( | const std::vector< Glyph > & | glyphs, |
TextExtents & | extents | ||
) |
Gets the extents for an array of glyphs.
The extents describe a user-space rectangle that encloses the "inked" portion of the glyphs, (as they would be drawn by Context::show_glyphs() if the cairo graphics state were set to the same font_face, font_matrix, ctm, and font_options as the ScaledFont object). Additionally, the x_advance and y_advance values indicate the amount by which the current point would be advanced by Context::show_glyphs().
Note that whitespace glyphs do not contribute to the size of the rectangle (extents.width and extents.height).
glyphs | A vector of glyphs to calculate the extents of. |
extents | Returns the extents for the array of glyphs. |
void Cairo::ScaledFont::get_scale_matrix | ( | Matrix & | scale_matrix | ) | const |
Stores the scale matrix of this scaled font into matrix.
The scale matrix is product of the font matrix and the ctm associated with the scaled font, and hence is the matrix mapping from font space to device space.
scale_matrix | return value for the matrix. |
void Cairo::ScaledFont::get_text_extents | ( | const std::string & | utf8, |
TextExtents & | extents | ||
) | const |
Gets the extents for a string of text.
The extents describe a user-space rectangle that encloses the "inked" portion of the text drawn at the origin (0,0) (as it would be drawn by Context::show_text() if the cairo graphics state were set to the same font_face, font_matrix, ctm, and font_options as the ScaledFont object). Additionally, the x_advance and y_advance values indicate the amount by which the current point would be advanced by Context::show_text().
Note that whitespace characters do not directly contribute to the size of the rectangle (extents.width and extents.height). They do contribute indirectly by changing the position of non-whitespace characters. In particular, trailing whitespace characters are likely to not affect the size of the rectangle, though they will affect the x_advance and y_advance values.
utf8 | a string of text, encoded in UTF-8. |
extents | Returns the extents of the given string. |
FontType Cairo::ScaledFont::get_type | ( | ) | const |
Gets the type of scaled Font.
|
delete |
void Cairo::ScaledFont::text_to_glyphs | ( | double | x, |
double | y, | ||
const std::string & | utf8, | ||
std::vector< Glyph > & | glyphs, | ||
std::vector< TextCluster > & | clusters, | ||
TextClusterFlags & | cluster_flags | ||
) |
x | X position to place first glyph. |
y | Y position to place first glyph. |
utf8 | a string of text encoded in UTF-8. |
glyphs | pointer to array of glyphs to fill. |
clusters | pointer to array of cluster mapping information to fill. @cluster_flags cluster mapping flags |
Converts UTF-8 text to an array of glyphs, with cluster mapping, that can be used to render later.
For details of how (clusters and cluster_flags map input UTF-8 text to the output glyphs see Context::show_text_glyphs().
The output values can be readily passed to Context::show_text_glyphs() Context::show_glyphs(), or related functions, assuming that the exact same scaled font is used for the operation.
|
protected |
The underlying C cairo object that is wrapped by this ScaledFont.