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

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: actual android fix 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
« no previous file with comments | « ui/gfx/gfx.gyp ('k') | ui/gfx/render_text.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 DiagonalStrike(Canvas* canvas, Point start, const SkPaint& paint); 87 DiagonalStrike(Canvas* canvas, Point start, const SkPaint& paint);
88 ~DiagonalStrike(); 88 ~DiagonalStrike();
89 89
90 void AddPiece(int length, SkColor color); 90 void AddPiece(int length, SkColor color);
91 void Draw(); 91 void Draw();
92 92
93 private: 93 private:
94 typedef std::pair<int, SkColor> Piece; 94 typedef std::pair<int, SkColor> Piece;
95 95
96 Canvas* canvas_; 96 Canvas* canvas_;
97 SkMatrix matrix_;
97 const Point start_; 98 const Point start_;
98 SkPaint paint_; 99 SkPaint paint_;
99 int total_length_; 100 int total_length_;
100 std::vector<Piece> pieces_; 101 std::vector<Piece> pieces_;
101 102
102 DISALLOW_COPY_AND_ASSIGN(DiagonalStrike); 103 DISALLOW_COPY_AND_ASSIGN(DiagonalStrike);
103 }; 104 };
104 105
105 Canvas* canvas_; 106 Canvas* canvas_;
106 SkCanvas* canvas_skia_; 107 SkCanvas* canvas_skia_;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 // heights. 170 // heights.
170 Size size; 171 Size size;
171 172
172 // Sum of preceding lines' heights. 173 // Sum of preceding lines' heights.
173 int preceding_heights; 174 int preceding_heights;
174 175
175 // Maximum baseline of all segments on this line. 176 // Maximum baseline of all segments on this line.
176 int baseline; 177 int baseline;
177 }; 178 };
178 179
180 // Creates an SkTypeface from a font |family| name and a |gfx::Font::FontStyle|.
181 skia::RefPtr<SkTypeface> CreateSkiaTypeface(const std::string& family,
182 int style);
183
179 } // namespace internal 184 } // namespace internal
180 185
181 // RenderText represents an abstract model of styled text and its corresponding 186 // 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, 187 // visual layout. Support is built in for a cursor, a selection, simple styling,
183 // complex scripts, and bi-directional text. Implementations provide mechanisms 188 // complex scripts, and bi-directional text. Implementations provide mechanisms
184 // for rendering and translation between logical and visual data. 189 // for rendering and translation between logical and visual data.
185 class GFX_EXPORT RenderText { 190 class GFX_EXPORT RenderText {
186 public: 191 public:
187 virtual ~RenderText(); 192 virtual ~RenderText();
188 193
189 // Creates a platform-specific RenderText instance. 194 // Creates a platform-specific or cross-platform RenderText instance.
190 static RenderText* CreateInstance(); 195 static RenderText* CreateInstance();
191 196
192 const base::string16& text() const { return text_; } 197 const base::string16& text() const { return text_; }
193 void SetText(const base::string16& text); 198 void SetText(const base::string16& text);
194 199
195 HorizontalAlignment horizontal_alignment() const { 200 HorizontalAlignment horizontal_alignment() const {
196 return horizontal_alignment_; 201 return horizontal_alignment_;
197 } 202 }
198 void SetHorizontalAlignment(HorizontalAlignment alignment); 203 void SetHorizontalAlignment(HorizontalAlignment alignment);
199 204
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedObscuredText); 567 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedObscuredText);
563 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GraphemePositions); 568 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GraphemePositions);
564 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels); 569 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels);
565 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset); 570 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset);
566 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL); 571 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL);
567 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth); 572 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth);
568 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth); 573 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth);
569 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth); 574 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth);
570 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline); 575 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline);
571 576
577 // Creates a platform-specific RenderText instance.
578 static RenderText* CreateNativeInstance();
579
572 // Set the cursor to |position|, with the caret trailing the previous 580 // Set the cursor to |position|, with the caret trailing the previous
573 // grapheme, or if there is no previous grapheme, leading the cursor position. 581 // 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. 582 // 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), 583 // If the |position| is not a cursorable position (not on grapheme boundary),
576 // it is a NO-OP. 584 // it is a NO-OP.
577 void MoveCursorTo(size_t position, bool select); 585 void MoveCursorTo(size_t position, bool select);
578 586
579 // Updates |layout_text_| if the text is obscured or truncated. 587 // Updates |layout_text_| if the text is obscured or truncated.
580 void UpdateLayoutText(); 588 void UpdateLayoutText();
581 589
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 // Lines computed by EnsureLayout. These should be invalidated with 711 // Lines computed by EnsureLayout. These should be invalidated with
704 // ResetLayout and on |display_rect_| changes. 712 // ResetLayout and on |display_rect_| changes.
705 std::vector<internal::Line> lines_; 713 std::vector<internal::Line> lines_;
706 714
707 DISALLOW_COPY_AND_ASSIGN(RenderText); 715 DISALLOW_COPY_AND_ASSIGN(RenderText);
708 }; 716 };
709 717
710 } // namespace gfx 718 } // namespace gfx
711 719
712 #endif // UI_GFX_RENDER_TEXT_H_ 720 #endif // UI_GFX_RENDER_TEXT_H_
OLDNEW
« no previous file with comments | « ui/gfx/gfx.gyp ('k') | ui/gfx/render_text.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698