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

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

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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
« no previous file with comments | « ui/gfx/render_text_harfbuzz.h ('k') | ui/gfx/render_text_mac.h » ('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 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"
11 #include "base/i18n/break_iterator.h" 11 #include "base/i18n/break_iterator.h"
12 #include "base/i18n/char_iterator.h" 12 #include "base/i18n/char_iterator.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h"
14 #include "base/profiler/scoped_tracker.h" 15 #include "base/profiler/scoped_tracker.h"
15 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
16 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
17 #include "base/trace_event/trace_event.h" 18 #include "base/trace_event/trace_event.h"
18 #include "build/build_config.h" 19 #include "build/build_config.h"
19 #include "third_party/harfbuzz-ng/src/hb.h" 20 #include "third_party/harfbuzz-ng/src/hb.h"
20 #include "third_party/icu/source/common/unicode/ubidi.h" 21 #include "third_party/icu/source/common/unicode/ubidi.h"
21 #include "third_party/icu/source/common/unicode/utf16.h" 22 #include "third_party/icu/source/common/unicode/utf16.h"
22 #include "third_party/skia/include/core/SkColor.h" 23 #include "third_party/skia/include/core/SkColor.h"
23 #include "third_party/skia/include/core/SkTypeface.h" 24 #include "third_party/skia/include/core/SkTypeface.h"
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 update_layout_run_list_(false), 754 update_layout_run_list_(false),
754 update_display_run_list_(false), 755 update_display_run_list_(false),
755 update_grapheme_iterator_(false), 756 update_grapheme_iterator_(false),
756 update_display_text_(false), 757 update_display_text_(false),
757 glyph_width_for_test_(0u) { 758 glyph_width_for_test_(0u) {
758 set_truncate_length(kMaxTextLength); 759 set_truncate_length(kMaxTextLength);
759 } 760 }
760 761
761 RenderTextHarfBuzz::~RenderTextHarfBuzz() {} 762 RenderTextHarfBuzz::~RenderTextHarfBuzz() {}
762 763
763 scoped_ptr<RenderText> RenderTextHarfBuzz::CreateInstanceOfSameType() const { 764 std::unique_ptr<RenderText> RenderTextHarfBuzz::CreateInstanceOfSameType()
764 return make_scoped_ptr(new RenderTextHarfBuzz); 765 const {
766 return base::WrapUnique(new RenderTextHarfBuzz);
765 } 767 }
766 768
767 bool RenderTextHarfBuzz::MultilineSupported() const { 769 bool RenderTextHarfBuzz::MultilineSupported() const {
768 return true; 770 return true;
769 } 771 }
770 772
771 const base::string16& RenderTextHarfBuzz::GetDisplayText() { 773 const base::string16& RenderTextHarfBuzz::GetDisplayText() {
772 // TODO(oshima): Consider supporting eliding multi-line text. 774 // TODO(oshima): Consider supporting eliding multi-line text.
773 // This requires max_line support first. 775 // This requires max_line support first.
774 if (multiline() || 776 if (multiline() ||
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1082 } 1084 }
1083 update_display_run_list_ = false; 1085 update_display_run_list_ = false;
1084 1086
1085 std::vector<internal::Line> empty_lines; 1087 std::vector<internal::Line> empty_lines;
1086 set_lines(&empty_lines); 1088 set_lines(&empty_lines);
1087 } 1089 }
1088 1090
1089 if (lines().empty()) { 1091 if (lines().empty()) {
1090 // TODO(ckocagil): Remove ScopedTracker below once crbug.com/441028 is 1092 // TODO(ckocagil): Remove ScopedTracker below once crbug.com/441028 is
1091 // fixed. 1093 // fixed.
1092 scoped_ptr<tracked_objects::ScopedTracker> tracking_profile( 1094 std::unique_ptr<tracked_objects::ScopedTracker> tracking_profile(
1093 new tracked_objects::ScopedTracker( 1095 new tracked_objects::ScopedTracker(
1094 FROM_HERE_WITH_EXPLICIT_FUNCTION("441028 HarfBuzzLineBreaker"))); 1096 FROM_HERE_WITH_EXPLICIT_FUNCTION("441028 HarfBuzzLineBreaker")));
1095 1097
1096 internal::TextRunList* run_list = GetRunList(); 1098 internal::TextRunList* run_list = GetRunList();
1097 HarfBuzzLineBreaker line_breaker( 1099 HarfBuzzLineBreaker line_breaker(
1098 display_rect().width(), font_list().GetBaseline(), 1100 display_rect().width(), font_list().GetBaseline(),
1099 std::max(font_list().GetHeight(), min_line_height()), 1101 std::max(font_list().GetHeight(), min_line_height()),
1100 word_wrap_behavior(), GetDisplayText(), 1102 word_wrap_behavior(), GetDisplayText(),
1101 multiline() ? &GetLineBreaks() : nullptr, *run_list); 1103 multiline() ? &GetLineBreaks() : nullptr, *run_list);
1102 1104
(...skipping 25 matching lines...) Expand all
1128 const internal::Line& line = lines()[i]; 1130 const internal::Line& line = lines()[i];
1129 const Vector2d origin = GetLineOffset(i) + Vector2d(0, line.baseline); 1131 const Vector2d origin = GetLineOffset(i) + Vector2d(0, line.baseline);
1130 SkScalar preceding_segment_widths = 0; 1132 SkScalar preceding_segment_widths = 0;
1131 for (const internal::LineSegment& segment : line.segments) { 1133 for (const internal::LineSegment& segment : line.segments) {
1132 const internal::TextRunHarfBuzz& run = *run_list->runs()[segment.run]; 1134 const internal::TextRunHarfBuzz& run = *run_list->runs()[segment.run];
1133 renderer->SetTypeface(run.skia_face.get()); 1135 renderer->SetTypeface(run.skia_face.get());
1134 renderer->SetTextSize(SkIntToScalar(run.font_size)); 1136 renderer->SetTextSize(SkIntToScalar(run.font_size));
1135 renderer->SetFontRenderParams(run.render_params, 1137 renderer->SetFontRenderParams(run.render_params,
1136 subpixel_rendering_suppressed()); 1138 subpixel_rendering_suppressed());
1137 Range glyphs_range = run.CharRangeToGlyphRange(segment.char_range); 1139 Range glyphs_range = run.CharRangeToGlyphRange(segment.char_range);
1138 scoped_ptr<SkPoint[]> positions(new SkPoint[glyphs_range.length()]); 1140 std::unique_ptr<SkPoint[]> positions(new SkPoint[glyphs_range.length()]);
1139 SkScalar offset_x = preceding_segment_widths - 1141 SkScalar offset_x = preceding_segment_widths -
1140 ((glyphs_range.GetMin() != 0) 1142 ((glyphs_range.GetMin() != 0)
1141 ? run.positions[glyphs_range.GetMin()].x() 1143 ? run.positions[glyphs_range.GetMin()].x()
1142 : 0); 1144 : 0);
1143 for (size_t j = 0; j < glyphs_range.length(); ++j) { 1145 for (size_t j = 0; j < glyphs_range.length(); ++j) {
1144 positions[j] = run.positions[(glyphs_range.is_reversed()) ? 1146 positions[j] = run.positions[(glyphs_range.is_reversed()) ?
1145 (glyphs_range.start() - j) : 1147 (glyphs_range.start() - j) :
1146 (glyphs_range.start() + j)]; 1148 (glyphs_range.start() + j)];
1147 positions[j].offset(SkIntToScalar(origin.x()) + offset_x, 1149 positions[j].offset(SkIntToScalar(origin.x()) + offset_x,
1148 SkIntToScalar(origin.y() + run.baseline_offset)); 1150 SkIntToScalar(origin.y() + run.baseline_offset));
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 DCHECK(!update_layout_run_list_); 1569 DCHECK(!update_layout_run_list_);
1568 DCHECK(!update_display_run_list_); 1570 DCHECK(!update_display_run_list_);
1569 return text_elided() ? display_run_list_.get() : &layout_run_list_; 1571 return text_elided() ? display_run_list_.get() : &layout_run_list_;
1570 } 1572 }
1571 1573
1572 const internal::TextRunList* RenderTextHarfBuzz::GetRunList() const { 1574 const internal::TextRunList* RenderTextHarfBuzz::GetRunList() const {
1573 return const_cast<RenderTextHarfBuzz*>(this)->GetRunList(); 1575 return const_cast<RenderTextHarfBuzz*>(this)->GetRunList();
1574 } 1576 }
1575 1577
1576 } // namespace gfx 1578 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/render_text_harfbuzz.h ('k') | ui/gfx/render_text_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698