OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef UI_GFX_RENDER_TEXT_H_ | 5 #ifndef UI_GFX_RENDER_TEXT_H_ |
6 #define UI_GFX_RENDER_TEXT_H_ | 6 #define UI_GFX_RENDER_TEXT_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <vector> | 10 #include <vector> |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 // "abcFED|". | 83 // "abcFED|". |
84 // So, besides the logical selection start point and end point, we need extra | 84 // So, besides the logical selection start point and end point, we need extra |
85 // information to specify to which character and on which edge of the character | 85 // information to specify to which character and on which edge of the character |
86 // the visual cursor is bound to. For example, the visual cursor is bound to | 86 // the visual cursor is bound to. For example, the visual cursor is bound to |
87 // the trailing side of the 2nd character 'c' when pointing to right half of | 87 // the trailing side of the 2nd character 'c' when pointing to right half of |
88 // 'c'. And it is bound to the leading edge of the 3rd character 'D' when | 88 // 'c'. And it is bound to the leading edge of the 3rd character 'D' when |
89 // pointing to right of 'D'. | 89 // pointing to right of 'D'. |
90 class UI_EXPORT SelectionModel { | 90 class UI_EXPORT SelectionModel { |
91 public: | 91 public: |
92 enum CaretPlacement { | 92 enum CaretPlacement { |
93 // PREVIOUS_GRAPHEME_TRAILING means cursor is visually attached to the | |
94 // trailing edge of previous grapheme. | |
95 PREVIOUS_GRAPHEME_TRAILING, | |
96 LEADING, | 93 LEADING, |
97 TRAILING, | 94 TRAILING, |
98 }; | 95 }; |
99 | 96 |
100 SelectionModel(); | 97 SelectionModel(); |
101 explicit SelectionModel(size_t pos); | 98 explicit SelectionModel(size_t pos); |
| 99 SelectionModel(size_t start, size_t end); |
102 SelectionModel(size_t end, size_t pos, CaretPlacement status); | 100 SelectionModel(size_t end, size_t pos, CaretPlacement status); |
103 SelectionModel(size_t start, size_t end, size_t pos, CaretPlacement status); | 101 SelectionModel(size_t start, size_t end, size_t pos, CaretPlacement status); |
104 | 102 |
105 virtual ~SelectionModel(); | 103 virtual ~SelectionModel(); |
106 | 104 |
107 size_t selection_start() const { return selection_start_; } | 105 size_t selection_start() const { return selection_start_; } |
108 void set_selection_start(size_t pos) { selection_start_ = pos; } | 106 void set_selection_start(size_t pos) { selection_start_ = pos; } |
109 | 107 |
110 size_t selection_end() const { return selection_end_; } | 108 size_t selection_end() const { return selection_end_; } |
111 void set_selection_end(size_t pos) { selection_end_ = pos; } | 109 void set_selection_end(size_t pos) { selection_end_ = pos; } |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 const StyleRanges& style_ranges() const { return style_ranges_; } | 262 const StyleRanges& style_ranges() const { return style_ranges_; } |
265 | 263 |
266 // Get the selection model that visually neighbors |position| by |break_type|. | 264 // Get the selection model that visually neighbors |position| by |break_type|. |
267 // The returned value represents a cursor/caret position without a selection. | 265 // The returned value represents a cursor/caret position without a selection. |
268 virtual SelectionModel GetLeftSelectionModel(const SelectionModel& current, | 266 virtual SelectionModel GetLeftSelectionModel(const SelectionModel& current, |
269 BreakType break_type); | 267 BreakType break_type); |
270 virtual SelectionModel GetRightSelectionModel(const SelectionModel& current, | 268 virtual SelectionModel GetRightSelectionModel(const SelectionModel& current, |
271 BreakType break_type); | 269 BreakType break_type); |
272 | 270 |
273 // Get the logical index of the grapheme preceeding the argument |position|. | 271 // Get the logical index of the grapheme preceeding the argument |position|. |
274 virtual size_t GetIndexOfPreviousGrapheme(size_t position) const; | 272 virtual size_t GetIndexOfPreviousGrapheme(size_t position); |
275 | 273 |
276 // Apply composition style (underline) to composition range and selection | 274 // Apply composition style (underline) to composition range and selection |
277 // style (foreground) to selection range. | 275 // style (foreground) to selection range. |
278 void ApplyCompositionAndSelectionStyles(StyleRanges* style_ranges) const; | 276 void ApplyCompositionAndSelectionStyles(StyleRanges* style_ranges) const; |
279 | 277 |
280 private: | 278 private: |
281 friend class RenderTextTest; | 279 friend class RenderTextTest; |
282 | 280 |
283 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, DefaultStyle); | 281 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, DefaultStyle); |
284 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, CustomDefaultStyle); | 282 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, CustomDefaultStyle); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 Rect display_rect_; | 322 Rect display_rect_; |
325 // The offset for the text to be drawn, relative to the display area. | 323 // The offset for the text to be drawn, relative to the display area. |
326 Point display_offset_; | 324 Point display_offset_; |
327 | 325 |
328 DISALLOW_COPY_AND_ASSIGN(RenderText); | 326 DISALLOW_COPY_AND_ASSIGN(RenderText); |
329 }; | 327 }; |
330 | 328 |
331 } // namespace gfx | 329 } // namespace gfx |
332 | 330 |
333 #endif // UI_GFX_RENDER_TEXT_H_ | 331 #endif // UI_GFX_RENDER_TEXT_H_ |
OLD | NEW |