Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(462)

Unified Diff: ui/gfx/render_text_harfbuzz.h

Issue 2541313002: RenderTextHarfBuzz: Add support for multi line text selection. (Closed)
Patch Set: Fix test. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/render_text.cc ('k') | ui/gfx/render_text_harfbuzz.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « ui/gfx/render_text.cc ('k') | ui/gfx/render_text_harfbuzz.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698