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

Side by Side Diff: ui/gfx/render_text_harfbuzz.cc

Issue 1953133002: [WIP: not for review] Reduce re-layout Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "ui/gfx/render_text_harfbuzz.h" 5 #include "ui/gfx/render_text_harfbuzz.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 9
10 #include "base/i18n/bidi_line_iterator.h" 10 #include "base/i18n/bidi_line_iterator.h"
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 std::unique_ptr<RenderText> RenderTextHarfBuzz::CreateInstanceOfSameType() 775 std::unique_ptr<RenderText> RenderTextHarfBuzz::CreateInstanceOfSameType()
776 const { 776 const {
777 return base::WrapUnique(new RenderTextHarfBuzz); 777 return base::WrapUnique(new RenderTextHarfBuzz);
778 } 778 }
779 779
780 bool RenderTextHarfBuzz::MultilineSupported() const { 780 bool RenderTextHarfBuzz::MultilineSupported() const {
781 return true; 781 return true;
782 } 782 }
783 783
784 const base::string16& RenderTextHarfBuzz::GetDisplayText() { 784 const base::string16& RenderTextHarfBuzz::GetDisplayText() {
785 // TODO(oshima): Consider supporting eliding multi-line text. 785 // TODO(krb): Consider other elision modes for multiline.
786 // This requires max_line support first. 786 if ((multiline() && (max_lines() == 0 || elide_behavior() != ELIDE_TAIL)) ||
787 if (multiline() || 787 elide_behavior() == NO_ELIDE || elide_behavior() == FADE_TAIL) {
788 elide_behavior() == NO_ELIDE ||
789 elide_behavior() == FADE_TAIL) {
790 // Call UpdateDisplayText to clear |display_text_| and |text_elided_| 788 // Call UpdateDisplayText to clear |display_text_| and |text_elided_|
791 // on the RenderText class. 789 // on the RenderText class.
792 UpdateDisplayText(0); 790 UpdateDisplayText(0);
793 update_display_text_ = false; 791 update_display_text_ = false;
794 display_run_list_.reset(); 792 display_run_list_.reset();
795 return layout_text(); 793 return layout_text();
796 } 794 }
797 795
798 EnsureLayoutRunList(); 796 EnsureLayoutRunList();
799 DCHECK(!update_display_text_); 797 DCHECK(!update_display_text_);
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
1564 UpdateDisplayText(multiline() ? 0 : layout_run_list_.width()); 1562 UpdateDisplayText(multiline() ? 0 : layout_run_list_.width());
1565 update_display_text_ = false; 1563 update_display_text_ = false;
1566 update_display_run_list_ = text_elided(); 1564 update_display_run_list_ = text_elided();
1567 } 1565 }
1568 } 1566 }
1569 1567
1570 base::i18n::BreakIterator* RenderTextHarfBuzz::GetGraphemeIterator() { 1568 base::i18n::BreakIterator* RenderTextHarfBuzz::GetGraphemeIterator() {
1571 if (update_grapheme_iterator_) { 1569 if (update_grapheme_iterator_) {
1572 update_grapheme_iterator_ = false; 1570 update_grapheme_iterator_ = false;
1573 grapheme_iterator_.reset(new base::i18n::BreakIterator( 1571 grapheme_iterator_.reset(new base::i18n::BreakIterator(
1574 GetDisplayText(), 1572 GetDisplayText(),
tapted 2016/05/11 00:16:26 So thinking about it some more - I think this is t
1575 base::i18n::BreakIterator::BREAK_CHARACTER)); 1573 base::i18n::BreakIterator::BREAK_CHARACTER));
1576 if (!grapheme_iterator_->Init()) 1574 if (!grapheme_iterator_->Init())
1577 grapheme_iterator_.reset(); 1575 grapheme_iterator_.reset();
1578 } 1576 }
1579 return grapheme_iterator_.get(); 1577 return grapheme_iterator_.get();
1580 } 1578 }
1581 1579
1582 internal::TextRunList* RenderTextHarfBuzz::GetRunList() { 1580 internal::TextRunList* RenderTextHarfBuzz::GetRunList() {
1583 DCHECK(!update_layout_run_list_); 1581 DCHECK(!update_layout_run_list_);
1584 DCHECK(!update_display_run_list_); 1582 DCHECK(!update_display_run_list_);
1585 return text_elided() ? display_run_list_.get() : &layout_run_list_; 1583 return text_elided() ? display_run_list_.get() : &layout_run_list_;
1586 } 1584 }
1587 1585
1588 const internal::TextRunList* RenderTextHarfBuzz::GetRunList() const { 1586 const internal::TextRunList* RenderTextHarfBuzz::GetRunList() const {
1589 return const_cast<RenderTextHarfBuzz*>(this)->GetRunList(); 1587 return const_cast<RenderTextHarfBuzz*>(this)->GetRunList();
1590 } 1588 }
1591 1589
1592 } // namespace gfx 1590 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698