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

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

Issue 867003002: Cache gfx::RenderText instances in views::Label. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments addressed Created 5 years, 10 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 (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 #include "ui/gfx/render_text.h" 5 #include "ui/gfx/render_text.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <climits> 8 #include <climits>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 paint->setSubpixelText(params.subpixel_positioning); 395 paint->setSubpixelText(params.subpixel_positioning);
396 paint->setAutohinted(params.autohinter); 396 paint->setAutohinted(params.autohinter);
397 paint->setHinting(FontRenderParamsHintingToSkPaintHinting(params.hinting)); 397 paint->setHinting(FontRenderParamsHintingToSkPaintHinting(params.hinting));
398 } 398 }
399 399
400 } // namespace internal 400 } // namespace internal
401 401
402 RenderText::~RenderText() { 402 RenderText::~RenderText() {
403 } 403 }
404 404
405 // static
405 RenderText* RenderText::CreateInstance() { 406 RenderText* RenderText::CreateInstance() {
406 #if defined(OS_MACOSX) 407 #if defined(OS_MACOSX)
407 static const bool use_native = 408 static const bool use_native =
408 !base::CommandLine::ForCurrentProcess()->HasSwitch( 409 !base::CommandLine::ForCurrentProcess()->HasSwitch(
409 switches::kEnableHarfBuzzRenderText); 410 switches::kEnableHarfBuzzRenderText);
410 if (use_native) 411 if (use_native)
411 return new RenderTextMac; 412 return new RenderTextMac;
412 #endif // defined(OS_MACOSX) 413 #endif // defined(OS_MACOSX)
413 return new RenderTextHarfBuzz; 414 return new RenderTextHarfBuzz;
414 } 415 }
415 416
417 // static
416 RenderText* RenderText::CreateInstanceForEditing() { 418 RenderText* RenderText::CreateInstanceForEditing() {
417 return new RenderTextHarfBuzz; 419 return new RenderTextHarfBuzz;
418 } 420 }
419 421
420 void RenderText::SetText(const base::string16& text) { 422 void RenderText::SetText(const base::string16& text) {
421 DCHECK(!composition_range_.IsValid()); 423 DCHECK(!composition_range_.IsValid());
422 if (text_ == text) 424 if (text_ == text)
423 return; 425 return;
424 text_ = text; 426 text_ = text;
425 427
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1086 1088
1087 HorizontalAlignment RenderText::GetCurrentHorizontalAlignment() { 1089 HorizontalAlignment RenderText::GetCurrentHorizontalAlignment() {
1088 if (horizontal_alignment_ != ALIGN_TO_HEAD) 1090 if (horizontal_alignment_ != ALIGN_TO_HEAD)
1089 return horizontal_alignment_; 1091 return horizontal_alignment_;
1090 return GetDisplayTextDirection() == base::i18n::RIGHT_TO_LEFT ? 1092 return GetDisplayTextDirection() == base::i18n::RIGHT_TO_LEFT ?
1091 ALIGN_RIGHT : ALIGN_LEFT; 1093 ALIGN_RIGHT : ALIGN_LEFT;
1092 } 1094 }
1093 1095
1094 Vector2d RenderText::GetAlignmentOffset(size_t line_number) { 1096 Vector2d RenderText::GetAlignmentOffset(size_t line_number) {
1095 // TODO(ckocagil): Enable |lines_| usage on RenderTextMac. 1097 // TODO(ckocagil): Enable |lines_| usage on RenderTextMac.
1096 if (multiline_) 1098 if (MultilineSupported() && multiline_)
1097 DCHECK_LT(line_number, lines_.size()); 1099 DCHECK_LT(line_number, lines_.size());
1098 Vector2d offset; 1100 Vector2d offset;
1099 HorizontalAlignment horizontal_alignment = GetCurrentHorizontalAlignment(); 1101 HorizontalAlignment horizontal_alignment = GetCurrentHorizontalAlignment();
1100 if (horizontal_alignment != ALIGN_LEFT) { 1102 if (horizontal_alignment != ALIGN_LEFT) {
1101 const int width = multiline_ ? 1103 const int width = multiline_ ?
1102 std::ceil(lines_[line_number].size.width()) + 1104 std::ceil(lines_[line_number].size.width()) +
1103 (cursor_enabled_ ? 1 : 0) : 1105 (cursor_enabled_ ? 1 : 0) :
1104 GetContentWidth(); 1106 GetContentWidth();
1105 offset.set_x(display_rect().width() - width); 1107 offset.set_x(display_rect().width() - width);
1106 // Put any extra margin pixel on the left to match legacy behavior. 1108 // Put any extra margin pixel on the left to match legacy behavior.
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 1455
1454 SetDisplayOffset(display_offset_.x() + delta_x); 1456 SetDisplayOffset(display_offset_.x() + delta_x);
1455 } 1457 }
1456 1458
1457 void RenderText::DrawSelection(Canvas* canvas) { 1459 void RenderText::DrawSelection(Canvas* canvas) {
1458 for (const Rect& s : GetSubstringBounds(selection())) 1460 for (const Rect& s : GetSubstringBounds(selection()))
1459 canvas->FillRect(s, selection_background_focused_color_); 1461 canvas->FillRect(s, selection_background_focused_color_);
1460 } 1462 }
1461 1463
1462 } // namespace gfx 1464 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/render_text.h ('k') | ui/gfx/render_text_harfbuzz.h » ('j') | ui/views/controls/label.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698