Full document interface of text_layout and text_line.
This commit is contained in:
parent
2973e7a664
commit
6a7e0ec072
1 changed files with 29 additions and 0 deletions
|
@ -50,25 +50,40 @@ public:
|
||||||
|
|
||||||
typedef std::vector<glyph_info> glyph_vector;
|
typedef std::vector<glyph_info> glyph_vector;
|
||||||
typedef glyph_vector::const_iterator const_iterator;
|
typedef glyph_vector::const_iterator const_iterator;
|
||||||
|
/** Get glyph vector. */
|
||||||
glyph_vector const& get_glyphs() const { return glyphs_; }
|
glyph_vector const& get_glyphs() const { return glyphs_; }
|
||||||
|
/** Append glyph. */
|
||||||
void add_glyph(glyph_info const& glyph, double scale_factor_);
|
void add_glyph(glyph_info const& glyph, double scale_factor_);
|
||||||
|
|
||||||
|
/** Preallocate memory. */
|
||||||
void reserve(glyph_vector::size_type length);
|
void reserve(glyph_vector::size_type length);
|
||||||
|
/** Iterator to first glyph. */
|
||||||
const_iterator begin() const;
|
const_iterator begin() const;
|
||||||
|
/** Iterator beyond last glyph. */
|
||||||
const_iterator end() const;
|
const_iterator end() const;
|
||||||
|
|
||||||
|
/** Width of all glyphs including character spacing. */
|
||||||
double width() const { return width_; }
|
double width() const { return width_; }
|
||||||
|
/** Real line height. For first line: max_char_height(), for all others: line_height(). */
|
||||||
double height() const;
|
double height() const;
|
||||||
|
|
||||||
|
/** Height of the tallest glyph in this line. */
|
||||||
double max_char_height() const { return max_char_height_; }
|
double max_char_height() const { return max_char_height_; }
|
||||||
|
/** Called for each font/style to update the maximum height of this line. */
|
||||||
void update_max_char_height(double max_char_height);
|
void update_max_char_height(double max_char_height);
|
||||||
|
/** Line height including line spacing. */
|
||||||
double line_height() const { return line_height_; }
|
double line_height() const { return line_height_; }
|
||||||
|
|
||||||
|
/** Is this object is the first line of a multi-line text?
|
||||||
|
* Used to exclude linespacing from first line's height. */
|
||||||
void set_first_line(bool first_line);
|
void set_first_line(bool first_line);
|
||||||
|
|
||||||
|
/** Index of first UTF-16 char. */
|
||||||
unsigned get_first_char() const;
|
unsigned get_first_char() const;
|
||||||
|
/** Index of last UTF-16 char. */
|
||||||
unsigned get_last_char() const;
|
unsigned get_last_char() const;
|
||||||
|
|
||||||
|
/** Number of glyphs. */
|
||||||
unsigned size() const;
|
unsigned size() const;
|
||||||
private:
|
private:
|
||||||
glyph_vector glyphs_;
|
glyph_vector glyphs_;
|
||||||
|
@ -88,20 +103,34 @@ public:
|
||||||
typedef std::vector<text_line_ptr> line_vector;
|
typedef std::vector<text_line_ptr> line_vector;
|
||||||
typedef line_vector::const_iterator const_iterator;
|
typedef line_vector::const_iterator const_iterator;
|
||||||
text_layout(face_manager_freetype & font_manager, double scale_factor);
|
text_layout(face_manager_freetype & font_manager, double scale_factor);
|
||||||
|
|
||||||
|
/** Adds a new text part. Call this function repeatedly to build the complete text. */
|
||||||
void add_text(UnicodeString const& str, char_properties_ptr format);
|
void add_text(UnicodeString const& str, char_properties_ptr format);
|
||||||
|
|
||||||
|
/** Returns the complete text stored in this layout.*/
|
||||||
UnicodeString const& get_text() const;
|
UnicodeString const& get_text() const;
|
||||||
|
|
||||||
|
/** Processes the text into a list of glyphs, performing RTL/LTR handling, shaping and line breaking. */
|
||||||
void layout(double wrap_width, unsigned text_ratio, bool wrap_before);
|
void layout(double wrap_width, unsigned text_ratio, bool wrap_before);
|
||||||
|
|
||||||
|
/** Clear all data stored in this object. The object's state is the same as directly after construction. */
|
||||||
void clear();
|
void clear();
|
||||||
|
/** Height of all lines together (in pixels). */
|
||||||
double height() const;
|
double height() const;
|
||||||
|
/** Width of the longest line (in pixels). */
|
||||||
double width() const;
|
double width() const;
|
||||||
|
|
||||||
|
/** Return line iterator. */
|
||||||
const_iterator begin() const;
|
const_iterator begin() const;
|
||||||
|
/** Iterator pointing to the place after the last line. */
|
||||||
const_iterator end() const;
|
const_iterator end() const;
|
||||||
|
/** Number of lines.*/
|
||||||
unsigned size() const;
|
unsigned size() const;
|
||||||
|
|
||||||
|
/** Width of a certain glyph cluster (in pixels). */
|
||||||
double cluster_width(unsigned cluster) const;
|
double cluster_width(unsigned cluster) const;
|
||||||
|
|
||||||
|
/** Returns the number of glyphs so memory can be preallocated. */
|
||||||
unsigned glyphs_count() const;
|
unsigned glyphs_count() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in a new issue