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

Side by Side Diff: ui/gfx/render_text.h

Issue 10807082: Add RenderText DirectionalityMode enum and support; etc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments; revert Label and MessageBoxView changes. Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <cstring> 9 #include <cstring>
10 #include <string> 10 #include <string>
11 #include <utility> 11 #include <utility>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/gtest_prod_util.h" 14 #include "base/gtest_prod_util.h"
15 #include "base/i18n/rtl.h" 15 #include "base/i18n/rtl.h"
16 #include "base/string16.h" 16 #include "base/string16.h"
17 #include "third_party/skia/include/core/SkColor.h" 17 #include "third_party/skia/include/core/SkColor.h"
18 #include "third_party/skia/include/core/SkPaint.h" 18 #include "third_party/skia/include/core/SkPaint.h"
19 #include "ui/base/range/range.h" 19 #include "ui/base/range/range.h"
20 #include "ui/gfx/font_list.h" 20 #include "ui/gfx/font_list.h"
21 #include "ui/gfx/point.h" 21 #include "ui/gfx/point.h"
22 #include "ui/gfx/rect.h" 22 #include "ui/gfx/rect.h"
23 #include "ui/gfx/selection_model.h" 23 #include "ui/gfx/selection_model.h"
24 #include "ui/gfx/shadow_value.h" 24 #include "ui/gfx/shadow_value.h"
25 #include "ui/gfx/text_constants.h"
25 26
26 class SkCanvas; 27 class SkCanvas;
27 class SkDrawLooper; 28 class SkDrawLooper;
28 struct SkPoint; 29 struct SkPoint;
29 class SkShader; 30 class SkShader;
30 class SkTypeface; 31 class SkTypeface;
31 32
32 namespace gfx { 33 namespace gfx {
33 34
34 class Canvas; 35 class Canvas;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 // A gfx::Font::FontStyle flag to specify bold and italic styles. 84 // A gfx::Font::FontStyle flag to specify bold and italic styles.
84 int font_style; 85 int font_style;
85 bool strike; 86 bool strike;
86 bool diagonal_strike; 87 bool diagonal_strike;
87 bool underline; 88 bool underline;
88 ui::Range range; 89 ui::Range range;
89 }; 90 };
90 91
91 typedef std::vector<StyleRange> StyleRanges; 92 typedef std::vector<StyleRange> StyleRanges;
92 93
93 // TODO(msw): Distinguish between logical character stops and glyph stops?
94 // CHARACTER_BREAK cursor movements should stop at neighboring characters.
95 // WORD_BREAK cursor movements should stop at the nearest word boundaries.
96 // LINE_BREAK cursor movements should stop at the text ends as shown on screen.
97 enum BreakType {
98 CHARACTER_BREAK,
99 WORD_BREAK,
100 LINE_BREAK,
101 };
102
103 // Horizontal text alignment styles.
104 enum HorizontalAlignment {
105 ALIGN_LEFT,
106 ALIGN_CENTER,
107 ALIGN_RIGHT,
108 };
109
110 // RenderText represents an abstract model of styled text and its corresponding 94 // RenderText represents an abstract model of styled text and its corresponding
111 // visual layout. Support is built in for a cursor, a selection, simple styling, 95 // visual layout. Support is built in for a cursor, a selection, simple styling,
112 // complex scripts, and bi-directional text. Implementations provide mechanisms 96 // complex scripts, and bi-directional text. Implementations provide mechanisms
113 // for rendering and translation between logical and visual data. 97 // for rendering and translation between logical and visual data.
114 class UI_EXPORT RenderText { 98 class UI_EXPORT RenderText {
115 public: 99 public:
116 virtual ~RenderText(); 100 virtual ~RenderText();
117 101
118 // Creates a platform-specific RenderText instance. 102 // Creates a platform-specific RenderText instance.
119 static RenderText* CreateInstance(); 103 static RenderText* CreateInstance();
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 223
240 const ui::Range& GetCompositionRange() const; 224 const ui::Range& GetCompositionRange() const;
241 void SetCompositionRange(const ui::Range& composition_range); 225 void SetCompositionRange(const ui::Range& composition_range);
242 226
243 // Apply |style_range| to the internal style model. 227 // Apply |style_range| to the internal style model.
244 void ApplyStyleRange(const StyleRange& style_range); 228 void ApplyStyleRange(const StyleRange& style_range);
245 229
246 // Apply |default_style_| over the entire text range. 230 // Apply |default_style_| over the entire text range.
247 void ApplyDefaultStyle(); 231 void ApplyDefaultStyle();
248 232
249 // Returns the dominant direction of the current text. 233 // Set the text directionality mode and get the text direction yielded.
250 virtual base::i18n::TextDirection GetTextDirection() = 0; 234 void SetDirectionalityMode(DirectionalityMode mode);
235 base::i18n::TextDirection GetTextDirection();
251 236
252 // Returns the visual movement direction corresponding to the logical end 237 // Returns the visual movement direction corresponding to the logical end
253 // of the text, considering only the dominant direction returned by 238 // of the text, considering only the dominant direction returned by
254 // |GetTextDirection()|, not the direction of a particular run. 239 // |GetTextDirection()|, not the direction of a particular run.
255 VisualCursorDirection GetVisualDirectionOfLogicalEnd(); 240 VisualCursorDirection GetVisualDirectionOfLogicalEnd();
256 241
257 // Returns the size in pixels of the entire string. For the height, this will 242 // Returns the size in pixels of the entire string. For the height, this will
258 // return the maximum height among the different fonts in the text runs. 243 // return the maximum height among the different fonts in the text runs.
259 // Note that this returns the raw size of the string, which does not include 244 // Note that this returns the raw size of the string, which does not include
260 // the margin area of text shadows. 245 // the margin area of text shadows.
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 // Draw the selection and cursor. 417 // Draw the selection and cursor.
433 void DrawSelection(Canvas* canvas); 418 void DrawSelection(Canvas* canvas);
434 void DrawCursor(Canvas* canvas); 419 void DrawCursor(Canvas* canvas);
435 420
436 // Logical UTF-16 string data to be drawn. 421 // Logical UTF-16 string data to be drawn.
437 string16 text_; 422 string16 text_;
438 423
439 // Horizontal alignment of the text with respect to |display_rect_|. 424 // Horizontal alignment of the text with respect to |display_rect_|.
440 HorizontalAlignment horizontal_alignment_; 425 HorizontalAlignment horizontal_alignment_;
441 426
427 // The text directionality mode, defaults to DIRECTIONALITY_FROM_TEXT.
428 DirectionalityMode directionality_mode_;
429
430 // The cached text direction, potentially computed from the text or UI locale.
Alexei Svitkine (slow) 2012/07/31 23:33:29 Mention that it shouldn't be used directly but thr
msw 2012/08/01 17:30:10 Done.
431 base::i18n::TextDirection text_direction_;
432
442 // A list of fonts used to render |text_|. 433 // A list of fonts used to render |text_|.
443 FontList font_list_; 434 FontList font_list_;
444 435
445 // Logical selection range and visual cursor position. 436 // Logical selection range and visual cursor position.
446 SelectionModel selection_model_; 437 SelectionModel selection_model_;
447 438
448 // The cached cursor bounds; get these bounds with GetUpdatedCursorBounds. 439 // The cached cursor bounds; get these bounds with GetUpdatedCursorBounds.
449 Rect cursor_bounds_; 440 Rect cursor_bounds_;
450 441
451 // Specifies whether the cursor is enabled. If disabled, no space is reserved 442 // Specifies whether the cursor is enabled. If disabled, no space is reserved
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 499
509 // Text shadows to be drawn. 500 // Text shadows to be drawn.
510 ShadowValues text_shadows_; 501 ShadowValues text_shadows_;
511 502
512 DISALLOW_COPY_AND_ASSIGN(RenderText); 503 DISALLOW_COPY_AND_ASSIGN(RenderText);
513 }; 504 };
514 505
515 } // namespace gfx 506 } // namespace gfx
516 507
517 #endif // UI_GFX_RENDER_TEXT_H_ 508 #endif // UI_GFX_RENDER_TEXT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698