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

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

Issue 103053014: Revert of Implement eliding/truncating at end in RenderText (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | « chrome/browser/ui/views/omnibox/omnibox_result_view.cc ('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>
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/strings/string16.h" 16 #include "base/strings/string16.h"
17 #include "skia/ext/refptr.h" 17 #include "skia/ext/refptr.h"
18 #include "third_party/skia/include/core/SkColor.h" 18 #include "third_party/skia/include/core/SkColor.h"
19 #include "third_party/skia/include/core/SkPaint.h" 19 #include "third_party/skia/include/core/SkPaint.h"
20 #include "third_party/skia/include/core/SkRect.h" 20 #include "third_party/skia/include/core/SkRect.h"
21 #include "ui/gfx/break_list.h" 21 #include "ui/gfx/break_list.h"
22 #include "ui/gfx/font_list.h" 22 #include "ui/gfx/font_list.h"
23 #include "ui/gfx/point.h" 23 #include "ui/gfx/point.h"
24 #include "ui/gfx/range/range.h" 24 #include "ui/gfx/range/range.h"
25 #include "ui/gfx/rect.h" 25 #include "ui/gfx/rect.h"
26 #include "ui/gfx/selection_model.h" 26 #include "ui/gfx/selection_model.h"
27 #include "ui/gfx/shadow_value.h" 27 #include "ui/gfx/shadow_value.h"
28 #include "ui/gfx/size_f.h" 28 #include "ui/gfx/size_f.h"
29 #include "ui/gfx/text_constants.h" 29 #include "ui/gfx/text_constants.h"
30 #include "ui/gfx/text_elider.h"
31 #include "ui/gfx/vector2d.h" 30 #include "ui/gfx/vector2d.h"
32 31
33 class SkCanvas; 32 class SkCanvas;
34 class SkDrawLooper; 33 class SkDrawLooper;
35 struct SkPoint; 34 struct SkPoint;
36 class SkShader; 35 class SkShader;
37 class SkTypeface; 36 class SkTypeface;
38 37
39 namespace gfx { 38 namespace gfx {
40 39
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 // Windows. Support other platforms. 220 // Windows. Support other platforms.
222 bool multiline() const { return multiline_; } 221 bool multiline() const { return multiline_; }
223 void SetMultiline(bool multiline); 222 void SetMultiline(bool multiline);
224 223
225 // Set the maximum length of the displayed layout text, not the actual text. 224 // Set the maximum length of the displayed layout text, not the actual text.
226 // A |length| of 0 forgoes a hard limit, but does not guarantee proper 225 // A |length| of 0 forgoes a hard limit, but does not guarantee proper
227 // functionality of very long strings. Applies to subsequent SetText calls. 226 // functionality of very long strings. Applies to subsequent SetText calls.
228 // WARNING: Only use this for system limits, it lacks complex text support. 227 // WARNING: Only use this for system limits, it lacks complex text support.
229 void set_truncate_length(size_t length) { truncate_length_ = length; } 228 void set_truncate_length(size_t length) { truncate_length_ = length; }
230 229
231 // Elides the text to fit in |display_rect| according to the specified
232 // |elide_behavior|. |ELIDE_IN_MIDDLE| is not supported.
233 // If both truncate and elide are specified, the shorter of the two will be
234 // applicable.
235 void SetElideBehavior(ElideBehavior elide_behavior);
236
237 const Rect& display_rect() const { return display_rect_; } 230 const Rect& display_rect() const { return display_rect_; }
238 void SetDisplayRect(const Rect& r); 231 void SetDisplayRect(const Rect& r);
239 232
240 void set_fade_head(bool fade_head) { fade_head_ = fade_head; } 233 void set_fade_head(bool fade_head) { fade_head_ = fade_head; }
241 bool fade_head() const { return fade_head_; } 234 bool fade_head() const { return fade_head_; }
242 void set_fade_tail(bool fade_tail) { fade_tail_ = fade_tail; } 235 void set_fade_tail(bool fade_tail) { fade_tail_ = fade_tail; }
243 bool fade_tail() const { return fade_tail_; } 236 bool fade_tail() const { return fade_tail_; }
244 237
245 bool background_is_transparent() const { return background_is_transparent_; } 238 bool background_is_transparent() const { return background_is_transparent_; }
246 void set_background_is_transparent(bool transparent) { 239 void set_background_is_transparent(bool transparent) {
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 size_t caret_pos, 528 size_t caret_pos,
536 LogicalCursorDirection caret_affinity); 529 LogicalCursorDirection caret_affinity);
537 530
538 private: 531 private:
539 friend class RenderTextTest; 532 friend class RenderTextTest;
540 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, DefaultStyle); 533 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, DefaultStyle);
541 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, SetColorAndStyle); 534 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, SetColorAndStyle);
542 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ApplyColorAndStyle); 535 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ApplyColorAndStyle);
543 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ObscuredText); 536 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ObscuredText);
544 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, RevealObscuredText); 537 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, RevealObscuredText);
545 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ElidedText);
546 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, ElidedObscuredText);
547 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedText); 538 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedText);
548 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedObscuredText); 539 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, TruncatedObscuredText);
549 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GraphemePositions); 540 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GraphemePositions);
550 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels); 541 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, EdgeSelectionModels);
551 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset); 542 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffset);
552 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL); 543 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, GetTextOffsetHorizontalDefaultInRTL);
553 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth); 544 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_MinWidth);
554 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth); 545 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_NormalWidth);
555 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth); 546 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_SufficientWidth);
556 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline); 547 FRIEND_TEST_ALL_PREFIXES(RenderTextTest, Multiline_Newline);
557 548
558 // Set the cursor to |position|, with the caret trailing the previous 549 // Set the cursor to |position|, with the caret trailing the previous
559 // grapheme, or if there is no previous grapheme, leading the cursor position. 550 // grapheme, or if there is no previous grapheme, leading the cursor position.
560 // If |select| is false, the selection start is moved to the same position. 551 // If |select| is false, the selection start is moved to the same position.
561 // If the |position| is not a cursorable position (not on grapheme boundary), 552 // If the |position| is not a cursorable position (not on grapheme boundary),
562 // it is a NO-OP. 553 // it is a NO-OP.
563 void MoveCursorTo(size_t position, bool select); 554 void MoveCursorTo(size_t position, bool select);
564 555
565 // Updates |layout_text_| if the text is obscured or truncated. 556 // Updates |layout_text_| if the text is obscured or truncated.
566 void UpdateLayoutText(); 557 void UpdateLayoutText();
567 558
568 // Elides |text| to fit in the |display_rect_| with given |elide_behavior_|.
569 // See ElideText in ui/gfx/text_elider.cc for reference.
570 base::string16 ElideText(const base::string16& text);
571
572 // Update the cached bounds and display offset to ensure that the current 559 // Update the cached bounds and display offset to ensure that the current
573 // cursor is within the visible display area. 560 // cursor is within the visible display area.
574 void UpdateCachedBoundsAndOffset(); 561 void UpdateCachedBoundsAndOffset();
575 562
576 // Draw the selection. 563 // Draw the selection.
577 void DrawSelection(Canvas* canvas); 564 void DrawSelection(Canvas* canvas);
578 565
579 // Logical UTF-16 string data to be drawn. 566 // Logical UTF-16 string data to be drawn.
580 base::string16 text_; 567 base::string16 text_;
581 568
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 bool composition_and_selection_styles_applied_; 621 bool composition_and_selection_styles_applied_;
635 622
636 // A flag to obscure actual text with asterisks for password fields. 623 // A flag to obscure actual text with asterisks for password fields.
637 bool obscured_; 624 bool obscured_;
638 // The index at which the char should be revealed in the obscured text. 625 // The index at which the char should be revealed in the obscured text.
639 int obscured_reveal_index_; 626 int obscured_reveal_index_;
640 627
641 // The maximum length of text to display, 0 forgoes a hard limit. 628 // The maximum length of text to display, 0 forgoes a hard limit.
642 size_t truncate_length_; 629 size_t truncate_length_;
643 630
644 // The behavior for eliding or truncating.
645 ElideBehavior elide_behavior_;
646
647 // The obscured and/or truncated text that will be displayed. 631 // The obscured and/or truncated text that will be displayed.
648 base::string16 layout_text_; 632 base::string16 layout_text_;
649 633
650 // Whether the text should be broken into multiple lines. Uses the width of 634 // Whether the text should be broken into multiple lines. Uses the width of
651 // |display_rect_| as the width cap. 635 // |display_rect_| as the width cap.
652 bool multiline_; 636 bool multiline_;
653 637
654 // Fade text head and/or tail, if text doesn't fit into |display_rect_|. 638 // Fade text head and/or tail, if text doesn't fit into |display_rect_|.
655 bool fade_head_; 639 bool fade_head_;
656 bool fade_tail_; 640 bool fade_tail_;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 // Lines computed by EnsureLayout. These should be invalidated with 673 // Lines computed by EnsureLayout. These should be invalidated with
690 // ResetLayout and on |display_rect_| changes. 674 // ResetLayout and on |display_rect_| changes.
691 std::vector<internal::Line> lines_; 675 std::vector<internal::Line> lines_;
692 676
693 DISALLOW_COPY_AND_ASSIGN(RenderText); 677 DISALLOW_COPY_AND_ASSIGN(RenderText);
694 }; 678 };
695 679
696 } // namespace gfx 680 } // namespace gfx
697 681
698 #endif // UI_GFX_RENDER_TEXT_H_ 682 #endif // UI_GFX_RENDER_TEXT_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/omnibox/omnibox_result_view.cc ('k') | ui/gfx/render_text.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698