OLD | NEW |
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 <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 public: | 204 public: |
205 virtual ~RenderText(); | 205 virtual ~RenderText(); |
206 | 206 |
207 // Creates a platform-specific or cross-platform RenderText instance. | 207 // Creates a platform-specific or cross-platform RenderText instance. |
208 static RenderText* CreateInstance(); | 208 static RenderText* CreateInstance(); |
209 static RenderText* CreateInstanceForEditing(); | 209 static RenderText* CreateInstanceForEditing(); |
210 | 210 |
211 // Creates another instance of the same concrete class. | 211 // Creates another instance of the same concrete class. |
212 virtual std::unique_ptr<RenderText> CreateInstanceOfSameType() const = 0; | 212 virtual std::unique_ptr<RenderText> CreateInstanceOfSameType() const = 0; |
213 | 213 |
| 214 // Like above but copies all style settings too. |
| 215 std::unique_ptr<RenderText> CreateInstanceOfSameStyle( |
| 216 const base::string16& text) const; |
| 217 |
214 const base::string16& text() const { return text_; } | 218 const base::string16& text() const { return text_; } |
215 void SetText(const base::string16& text); | 219 void SetText(const base::string16& text); |
216 void AppendText(const base::string16& text); | 220 void AppendText(const base::string16& text); |
217 | 221 |
218 HorizontalAlignment horizontal_alignment() const { | 222 HorizontalAlignment horizontal_alignment() const { |
219 return horizontal_alignment_; | 223 return horizontal_alignment_; |
220 } | 224 } |
221 void SetHorizontalAlignment(HorizontalAlignment alignment); | 225 void SetHorizontalAlignment(HorizontalAlignment alignment); |
222 | 226 |
223 const FontList& font_list() const { return font_list_; } | 227 const FontList& font_list() const { return font_list_; } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 // a UTF16 text index. If there is a previous revealed index, the previous one | 263 // a UTF16 text index. If there is a previous revealed index, the previous one |
260 // is cleared and only the last set index will be revealed. If |index| is -1 | 264 // is cleared and only the last set index will be revealed. If |index| is -1 |
261 // or out of range, no char will be revealed. The revealed index is also | 265 // or out of range, no char will be revealed. The revealed index is also |
262 // cleared when SetText or SetObscured is called. | 266 // cleared when SetText or SetObscured is called. |
263 void SetObscuredRevealIndex(int index); | 267 void SetObscuredRevealIndex(int index); |
264 | 268 |
265 // TODO(ckocagil): Multiline text rendering is not supported on Mac. | 269 // TODO(ckocagil): Multiline text rendering is not supported on Mac. |
266 bool multiline() const { return multiline_; } | 270 bool multiline() const { return multiline_; } |
267 void SetMultiline(bool multiline); | 271 void SetMultiline(bool multiline); |
268 | 272 |
| 273 // If multiline, a non-zero value will cap the number of lines rendered, |
| 274 // and elide the rest (currently only ELIDE_TAIL supported.) |
| 275 void SetMaxLines(size_t max_lines); |
| 276 size_t max_lines() const { return max_lines_; } |
| 277 size_t GetNumLines(); |
| 278 |
269 // TODO(mukai): ELIDE_LONG_WORDS is not supported. | 279 // TODO(mukai): ELIDE_LONG_WORDS is not supported. |
270 WordWrapBehavior word_wrap_behavior() const { return word_wrap_behavior_; } | 280 WordWrapBehavior word_wrap_behavior() const { return word_wrap_behavior_; } |
271 void SetWordWrapBehavior(WordWrapBehavior behavior); | 281 void SetWordWrapBehavior(WordWrapBehavior behavior); |
272 | 282 |
273 // Set whether newline characters should be replaced with newline symbols. | 283 // Set whether newline characters should be replaced with newline symbols. |
274 void SetReplaceNewlineCharsWithSymbols(bool replace); | 284 void SetReplaceNewlineCharsWithSymbols(bool replace); |
275 | 285 |
276 // Returns true if this instance supports multiline rendering. | 286 // Returns true if this instance supports multiline rendering. |
277 virtual bool MultilineSupported() const = 0; | 287 virtual bool MultilineSupported() const = 0; |
278 | 288 |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 // True if the text is elided given the current behavior and display area. | 781 // True if the text is elided given the current behavior and display area. |
772 bool text_elided_; | 782 bool text_elided_; |
773 | 783 |
774 // The minimum height a line should have. | 784 // The minimum height a line should have. |
775 int min_line_height_; | 785 int min_line_height_; |
776 | 786 |
777 // Whether the text should be broken into multiple lines. Uses the width of | 787 // Whether the text should be broken into multiple lines. Uses the width of |
778 // |display_rect_| as the width cap. | 788 // |display_rect_| as the width cap. |
779 bool multiline_; | 789 bool multiline_; |
780 | 790 |
| 791 // If multiple lines, the maximum number of lines to render, or 0. |
| 792 size_t max_lines_; |
| 793 |
781 // The wrap behavior when the text is broken into lines. Do nothing unless | 794 // The wrap behavior when the text is broken into lines. Do nothing unless |
782 // |multiline_| is set. The default value is IGNORE_LONG_WORDS. | 795 // |multiline_| is set. The default value is IGNORE_LONG_WORDS. |
783 WordWrapBehavior word_wrap_behavior_; | 796 WordWrapBehavior word_wrap_behavior_; |
784 | 797 |
785 // Whether newline characters should be replaced with newline symbols. | 798 // Whether newline characters should be replaced with newline symbols. |
786 bool replace_newline_chars_with_symbols_; | 799 bool replace_newline_chars_with_symbols_; |
787 | 800 |
788 // Set to true to suppress subpixel rendering due to non-font reasons (eg. | 801 // Set to true to suppress subpixel rendering due to non-font reasons (eg. |
789 // if the background is transparent). The default value is false. | 802 // if the background is transparent). The default value is false. |
790 bool subpixel_rendering_suppressed_; | 803 bool subpixel_rendering_suppressed_; |
(...skipping 29 matching lines...) Expand all Loading... |
820 // Lines computed by EnsureLayout. These should be invalidated upon | 833 // Lines computed by EnsureLayout. These should be invalidated upon |
821 // OnLayoutTextAttributeChanged and OnDisplayTextAttributeChanged calls. | 834 // OnLayoutTextAttributeChanged and OnDisplayTextAttributeChanged calls. |
822 std::vector<internal::Line> lines_; | 835 std::vector<internal::Line> lines_; |
823 | 836 |
824 DISALLOW_COPY_AND_ASSIGN(RenderText); | 837 DISALLOW_COPY_AND_ASSIGN(RenderText); |
825 }; | 838 }; |
826 | 839 |
827 } // namespace gfx | 840 } // namespace gfx |
828 | 841 |
829 #endif // UI_GFX_RENDER_TEXT_H_ | 842 #endif // UI_GFX_RENDER_TEXT_H_ |
OLD | NEW |