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

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

Issue 152473008: More or less implement RenderTextHarfBuzz (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge 252563003 Created 6 years, 7 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>
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // Draw underline and strike-through text decorations. 72 // Draw underline and strike-through text decorations.
73 // Based on |SkCanvas::DrawTextDecorations()| and constants from: 73 // Based on |SkCanvas::DrawTextDecorations()| and constants from:
74 // third_party/skia/src/core/SkTextFormatParams.h 74 // third_party/skia/src/core/SkTextFormatParams.h
75 void DrawDecorations(int x, int y, int width, bool underline, bool strike, 75 void DrawDecorations(int x, int y, int width, bool underline, bool strike,
76 bool diagonal_strike); 76 bool diagonal_strike);
77 // Finishes any ongoing diagonal strike run. 77 // Finishes any ongoing diagonal strike run.
78 void EndDiagonalStrike(); 78 void EndDiagonalStrike();
79 void DrawUnderline(int x, int y, int width); 79 void DrawUnderline(int x, int y, int width);
80 void DrawStrike(int x, int y, int width) const; 80 void DrawStrike(int x, int y, int width) const;
81 81
82 SkPaint paint() const { return paint_; }
Alexei Svitkine (slow) 2014/05/12 15:58:31 Is this used somewhere?
ckocagil 2014/05/13 15:03:48 Not anymore, removed.
83
82 private: 84 private:
83 // Helper class to draw a diagonal line with multiple pieces of different 85 // Helper class to draw a diagonal line with multiple pieces of different
84 // lengths and colors; to support text selection appearances. 86 // lengths and colors; to support text selection appearances.
85 class DiagonalStrike { 87 class DiagonalStrike {
86 public: 88 public:
87 DiagonalStrike(Canvas* canvas, Point start, const SkPaint& paint); 89 DiagonalStrike(Canvas* canvas, Point start, const SkPaint& paint);
88 ~DiagonalStrike(); 90 ~DiagonalStrike();
89 91
90 void AddPiece(int length, SkColor color); 92 void AddPiece(int length, SkColor color);
91 void Draw(); 93 void Draw();
92 94
93 private: 95 private:
94 typedef std::pair<int, SkColor> Piece; 96 typedef std::pair<int, SkColor> Piece;
95 97
96 Canvas* canvas_; 98 Canvas* canvas_;
99 SkMatrix matrix_;
97 const Point start_; 100 const Point start_;
98 SkPaint paint_; 101 SkPaint paint_;
99 int total_length_; 102 int total_length_;
100 std::vector<Piece> pieces_; 103 std::vector<Piece> pieces_;
101 104
102 DISALLOW_COPY_AND_ASSIGN(DiagonalStrike); 105 DISALLOW_COPY_AND_ASSIGN(DiagonalStrike);
103 }; 106 };
104 107
105 Canvas* canvas_; 108 Canvas* canvas_;
106 SkCanvas* canvas_skia_; 109 SkCanvas* canvas_skia_;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 // heights. 172 // heights.
170 Size size; 173 Size size;
171 174
172 // Sum of preceding lines' heights. 175 // Sum of preceding lines' heights.
173 int preceding_heights; 176 int preceding_heights;
174 177
175 // Maximum baseline of all segments on this line. 178 // Maximum baseline of all segments on this line.
176 int baseline; 179 int baseline;
177 }; 180 };
178 181
182 // Creates an SkTypeface from a font |family| name and a |gfx::Font::FontStyle|.
183 skia::RefPtr<SkTypeface> CreateSkiaTypeface(const std::string& family,
184 int style);
185
179 } // namespace internal 186 } // namespace internal
180 187
181 // RenderText represents an abstract model of styled text and its corresponding 188 // RenderText represents an abstract model of styled text and its corresponding
182 // visual layout. Support is built in for a cursor, a selection, simple styling, 189 // visual layout. Support is built in for a cursor, a selection, simple styling,
183 // complex scripts, and bi-directional text. Implementations provide mechanisms 190 // complex scripts, and bi-directional text. Implementations provide mechanisms
184 // for rendering and translation between logical and visual data. 191 // for rendering and translation between logical and visual data.
185 class GFX_EXPORT RenderText { 192 class GFX_EXPORT RenderText {
186 public: 193 public:
187 virtual ~RenderText(); 194 virtual ~RenderText();
188 195
189 // Creates a platform-specific RenderText instance. 196 // Creates a platform-specific or cross-platform RenderText instance.
190 static RenderText* CreateInstance(); 197 static RenderText* CreateInstance();
191 198
192 const base::string16& text() const { return text_; } 199 const base::string16& text() const { return text_; }
193 void SetText(const base::string16& text); 200 void SetText(const base::string16& text);
194 201
195 HorizontalAlignment horizontal_alignment() const { 202 HorizontalAlignment horizontal_alignment() const {
196 return horizontal_alignment_; 203 return horizontal_alignment_;
197 } 204 }
198 void SetHorizontalAlignment(HorizontalAlignment alignment); 205 void SetHorizontalAlignment(HorizontalAlignment alignment);
199 206
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedObscuredText); 569 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedObscuredText);
563 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GraphemePositions); 570 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GraphemePositions);
564 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels); 571 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels);
565 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset); 572 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset);
566 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL); 573 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL);
567 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth); 574 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth);
568 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth); 575 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth);
569 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth); 576 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth);
570 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline); 577 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline);
571 578
579 // Creates a platform-specific RenderText instance.
580 static RenderText* CreateNativeInstance();
581
572 // Set the cursor to |position|, with the caret trailing the previous 582 // Set the cursor to |position|, with the caret trailing the previous
573 // grapheme, or if there is no previous grapheme, leading the cursor position. 583 // grapheme, or if there is no previous grapheme, leading the cursor position.
574 // If |select| is false, the selection start is moved to the same position. 584 // If |select| is false, the selection start is moved to the same position.
575 // If the |position| is not a cursorable position (not on grapheme boundary), 585 // If the |position| is not a cursorable position (not on grapheme boundary),
576 // it is a NO-OP. 586 // it is a NO-OP.
577 void MoveCursorTo(size_t position, bool select); 587 void MoveCursorTo(size_t position, bool select);
578 588
579 // Updates |layout_text_| if the text is obscured or truncated. 589 // Updates |layout_text_| if the text is obscured or truncated.
580 void UpdateLayoutText(); 590 void UpdateLayoutText();
581 591
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 // Lines computed by EnsureLayout. These should be invalidated with 713 // Lines computed by EnsureLayout. These should be invalidated with
704 // ResetLayout and on |display_rect_| changes. 714 // ResetLayout and on |display_rect_| changes.
705 std::vector<internal::Line> lines_; 715 std::vector<internal::Line> lines_;
706 716
707 DISALLOW_COPY_AND_ASSIGN(RenderText); 717 DISALLOW_COPY_AND_ASSIGN(RenderText);
708 }; 718 };
709 719
710 } // namespace gfx 720 } // namespace gfx
711 721
712 #endif // UI_GFX_RENDER_TEXT_H_ 722 #endif // UI_GFX_RENDER_TEXT_H_
OLDNEW
« no previous file with comments | « ui/gfx/gfx.gyp ('k') | ui/gfx/render_text.cc » ('j') | ui/gfx/render_text.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698