Index: ui/gfx/render_text_harfbuzz.h |
diff --git a/ui/gfx/render_text_harfbuzz.h b/ui/gfx/render_text_harfbuzz.h |
index d3495255547ec684033a34122ad4be3b34259f86..fd345d29217332148f6511e973637c33c8b8d9a1 100644 |
--- a/ui/gfx/render_text_harfbuzz.h |
+++ b/ui/gfx/render_text_harfbuzz.h |
@@ -53,10 +53,13 @@ struct GFX_EXPORT TextRunHarfBuzz { |
void GetClusterAt(size_t pos, Range* chars, Range* glyphs) const; |
// Returns the grapheme bounds at |text_index|. Handles multi-grapheme glyphs. |
- RangeF GetGraphemeBounds(RenderTextHarfBuzz* render_text, size_t text_index); |
+ RangeF GetGraphemeBounds(RenderTextHarfBuzz* render_text, |
+ size_t text_index) const; |
- // Returns whether the given shaped run contains any missing glyphs. |
- bool HasMissingGlyphs() const; |
+ // Returns the width of the given |char_range| handling grapheme boundaries |
+ // within glyphs. |
+ float GetGraphemeWidthForCharRange(RenderTextHarfBuzz* render_text, |
+ const Range& char_range) const; |
// Returns the glyph width for the given character range. |char_range| is in |
// text-space (0 corresponds to |GetDisplayText()[0]|). |
@@ -193,7 +196,20 @@ class GFX_EXPORT RenderTextHarfBuzz : public RenderText { |
// Return the run index that contains the argument; or the length of the |
// |runs_| vector if argument exceeds the text length or width. |
size_t GetRunContainingCaret(const SelectionModel& caret); |
- size_t GetRunContainingXCoord(float x, float* offset) const; |
+ |
+ // Returns the line index for the given argument. |text_y| is relative to |
+ // the text bounds. Returns -1 if |text_y| is above the text and |
+ // lines().size() if |text_y| is below it. |
+ int GetLineContainingYCoord(float text_y); |
+ |
+ // Returns the line segment index for the |line|, |text_x| pair. |text_x| is |
+ // relative to text in the given line. Returns -1 if |text_x| is to the left |
+ // of text in the line and |line|.segments.size() if it's to the right. |
+ // |offset_relative_segment| will contain the offset of |text_x| relative to |
+ // the start of the segment it is contained in. |
+ int GetLineSegmentContainingXCoord(const internal::Line& line, |
+ float text_x, |
+ float* offset_relative_segment); |
// Given a |run|, returns the SelectionModel that contains the logical first |
// or last caret position inside (not at a boundary of) the run. |