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

Unified Diff: ui/gfx/render_text.h

Issue 7458014: Implement Uniscribe RenderText for Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Seek parity with RenderTextLinux, nix tentative word breaking, address comments. Created 9 years, 4 months 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 | « no previous file | ui/gfx/render_text.cc » ('j') | ui/gfx/render_text_win.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/render_text.h
diff --git a/ui/gfx/render_text.h b/ui/gfx/render_text.h
index cc4f4e5f66c280b195058a20f29297a5217229a9..e13d8e40cbeea29b0331752a402a3c4087a92daf 100644
--- a/ui/gfx/render_text.h
+++ b/ui/gfx/render_text.h
@@ -154,13 +154,12 @@ class UI_EXPORT RenderText {
virtual void SetText(const string16& text);
const SelectionModel& selection_model() const { return selection_model_; }
- void SetSelectionModel(const SelectionModel& sel);
bool cursor_visible() const { return cursor_visible_; }
void set_cursor_visible(bool visible) { cursor_visible_ = visible; }
bool insert_mode() const { return insert_mode_; }
- void toggle_insert_mode() { insert_mode_ = !insert_mode_; }
+ void ToggleInsertMode();
bool focused() const { return focused_; }
void set_focused(bool focused) { focused_ = focused; }
@@ -176,7 +175,7 @@ class UI_EXPORT RenderText {
// edits take place, and doesn't necessarily correspond to
// SelectionModel::caret_pos.
size_t GetCursorPosition() const;
- void SetCursorPosition(const size_t position);
+ void SetCursorPosition(size_t position);
void SetCaretPlacement(SelectionModel::CaretPlacement placement) {
selection_model_.set_caret_placement(placement);
@@ -184,16 +183,18 @@ class UI_EXPORT RenderText {
// Moves the cursor left or right. Cursor movement is visual, meaning that
// left and right are relative to screen, not the directionality of the text.
- // If |select| is false, the selection range is emptied at the new position.
+ // If |select| is false, the selection start is moved to the same position.
void MoveCursorLeft(BreakType break_type, bool select);
void MoveCursorRight(BreakType break_type, bool select);
// Set the selection_model_ to the value of |selection|.
+ // The selection model components are modified if invalid.
// Returns true if the cursor position or selection range changed.
- bool MoveCursorTo(const SelectionModel& selection);
+ bool MoveCursorTo(const SelectionModel& selection_model);
// Move the cursor to the position associated with the clicked point.
- // If |select| is false, the selection range is emptied at the new position.
+ // If |select| is false, the selection start is moved to the same position.
+ // Returns true if the cursor position or selection range changed.
bool MoveCursorTo(const Point& point, bool select);
size_t GetSelectionStart() const {
@@ -236,13 +237,6 @@ class UI_EXPORT RenderText {
// Gets the SelectionModel from a visual point in local coordinates.
virtual SelectionModel FindCursorPosition(const Point& point);
- // Get the visual bounds containing the logical substring within |from| to
- // |to|. These bounds could be visually discontinuous if the substring is
- // split by a LTR/RTL level change. These bounds are in local coordinates, but
- // may be outside the visible region if the text is longer than the textfield.
- // Subsequent text, cursor, or bounds changes may invalidate returned values.
- virtual std::vector<Rect> GetSubstringBounds(size_t from, size_t to);
-
// Get the visual bounds of a cursor at |selection|. These bounds typically
// represent a vertical line, but if |insert_mode| is true they contain the
// bounds of the associated glyph. These bounds are in local coordinates, but
@@ -274,13 +268,31 @@ class UI_EXPORT RenderText {
virtual SelectionModel GetRightSelectionModel(const SelectionModel& current,
BreakType break_type);
+ // Get the SelectionModels corresponding to visual text ends.
+ // The returned value represents a cursor/caret position without a selection.
+ virtual SelectionModel LeftEndSelectionModel();
+ virtual SelectionModel RightEndSelectionModel();
+
// Get the logical index of the grapheme preceeding the argument |position|.
virtual size_t GetIndexOfPreviousGrapheme(size_t position);
+ // Get the visual bounds containing the logical substring within |from| to
+ // |to|. These bounds could be visually discontinuous if the substring is
+ // split by a LTR/RTL level change. These bounds are in local coordinates, but
+ // may be outside the visible region if the text is longer than the textfield.
+ // Subsequent text, cursor, or bounds changes may invalidate returned values.
+ // TODO(msw) Re-evaluate this function's necessity and signature.
+ virtual std::vector<Rect> GetSubstringBounds(size_t from, size_t to);
+
// Apply composition style (underline) to composition range and selection
// style (foreground) to selection range.
void ApplyCompositionAndSelectionStyles(StyleRanges* style_ranges) const;
+ // Convert points from the text space to the view space and back.
+ // Handles the display area, display offset, and the application LTR/RTL mode.
+ Point ToTextPoint(const Point& point);
+ Point ToViewPoint(const Point& point);
+
private:
friend class RenderTextTest;
@@ -289,8 +301,13 @@ class UI_EXPORT RenderText {
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ApplyStyleRange);
FRIEND_TEST_ALL_PREFIXES(RenderTextTest, StyleRangesAdjust);
- // Clear out |style_ranges_|.
- void ClearStyleRanges();
+ // Sets the selection model, the argument is assumed to be valid.
+ void SetSelectionModel(const SelectionModel& selection_model);
+
+ // Set the cursor to |position|, with the caret trailing the previous
+ // grapheme, or if there is no previous grapheme, leading the cursor position.
+ // If |select| is false, the selection start is moved to the same position.
+ void MoveCursorTo(size_t position, bool select);
bool IsPositionAtWordSelectionBoundary(size_t pos);
@@ -328,9 +345,8 @@ class UI_EXPORT RenderText {
// Get this point with GetUpdatedDisplayOffset (or risk using a stale value).
Point display_offset_;
- // The cached bounds and offset are invalidated by operations such as
- // SetCursorPosition, SetSelectionModel, Font related style change, and other
- // operations that adjust the visible text bounds.
+ // The cached bounds and offset are invalidated by changes to the cursor,
+ // selection, font, and other operations that adjust the visible text bounds.
bool cached_bounds_and_offset_valid_;
DISALLOW_COPY_AND_ASSIGN(RenderText);
« no previous file with comments | « no previous file | ui/gfx/render_text.cc » ('j') | ui/gfx/render_text_win.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698