Chromium Code Reviews| 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 #include "ash/system/user/tray_user.h" | 5 #include "ash/system/user/tray_user.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <climits> | 8 #include <climits> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 448 | 448 |
| 449 void PublicAccountUserDetails::Layout() { | 449 void PublicAccountUserDetails::Layout() { |
| 450 lines_.clear(); | 450 lines_.clear(); |
| 451 const gfx::Rect contents_area = GetContentsBounds(); | 451 const gfx::Rect contents_area = GetContentsBounds(); |
| 452 if (contents_area.IsEmpty()) | 452 if (contents_area.IsEmpty()) |
| 453 return; | 453 return; |
| 454 | 454 |
| 455 // Word-wrap the label text. | 455 // Word-wrap the label text. |
| 456 const gfx::Font font; | 456 const gfx::Font font; |
| 457 std::vector<base::string16> lines; | 457 std::vector<base::string16> lines; |
| 458 gfx::ElideRectangleText(text_, font, contents_area.width(), | 458 gfx::ElideRectangleText(text_, |
| 459 contents_area.height(), gfx::ELIDE_LONG_WORDS, | 459 font, |
| 460 static_cast<float>(contents_area.width()), | |
|
msw
2013/09/27 21:54:48
Won't int->float implicit type conversion work her
jianli
2013/10/01 00:32:58
Reverted. Changed INT_MAX to FLT_MAX in the follow
| |
| 461 static_cast<float>(contents_area.height()), | |
| 462 gfx::ELIDE_LONG_WORDS, | |
| 460 &lines); | 463 &lines); |
| 461 // Loop through the lines, creating a renderer for each. | 464 // Loop through the lines, creating a renderer for each. |
| 462 gfx::Point position = contents_area.origin(); | 465 gfx::Point position = contents_area.origin(); |
| 463 gfx::Range display_name(gfx::Range::InvalidRange()); | 466 gfx::Range display_name(gfx::Range::InvalidRange()); |
| 464 for (std::vector<base::string16>::const_iterator it = lines.begin(); | 467 for (std::vector<base::string16>::const_iterator it = lines.begin(); |
| 465 it != lines.end(); ++it) { | 468 it != lines.end(); ++it) { |
| 466 gfx::RenderText* line = gfx::RenderText::CreateInstance(); | 469 gfx::RenderText* line = gfx::RenderText::CreateInstance(); |
| 467 line->SetDirectionalityMode(gfx::DIRECTIONALITY_FROM_UI); | 470 line->SetDirectionalityMode(gfx::DIRECTIONALITY_FROM_UI); |
| 468 line->SetText(*it); | 471 line->SetText(*it); |
| 469 const gfx::Size size(contents_area.width(), line->GetStringSize().height()); | 472 const gfx::Size size(contents_area.width(), line->GetStringSize().height()); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 548 // Do a binary search for the minimum width that ensures no more than three | 551 // Do a binary search for the minimum width that ensures no more than three |
| 549 // lines are needed. The lower bound is the minimum of the current bubble | 552 // lines are needed. The lower bound is the minimum of the current bubble |
| 550 // width and the width of the link (as no wrapping is permitted inside the | 553 // width and the width of the link (as no wrapping is permitted inside the |
| 551 // link). The upper bound is the maximum of the largest allowed bubble width | 554 // link). The upper bound is the maximum of the largest allowed bubble width |
| 552 // and the sum of the label text and link widths when put on a single line. | 555 // and the sum of the label text and link widths when put on a single line. |
| 553 std::vector<base::string16> lines; | 556 std::vector<base::string16> lines; |
| 554 while (min_width < max_width) { | 557 while (min_width < max_width) { |
| 555 lines.clear(); | 558 lines.clear(); |
| 556 const int width = (min_width + max_width) / 2; | 559 const int width = (min_width + max_width) / 2; |
| 557 const bool too_narrow = gfx::ElideRectangleText( | 560 const bool too_narrow = gfx::ElideRectangleText( |
| 558 text_, font, width, INT_MAX, gfx::TRUNCATE_LONG_WORDS, &lines) != 0; | 561 text_, font, static_cast<float>(width), static_cast<float>(INT_MAX), |
| 562 gfx::TRUNCATE_LONG_WORDS, &lines) != 0; | |
| 559 int line_count = lines.size(); | 563 int line_count = lines.size(); |
| 560 if (!too_narrow && line_count == 3 && | 564 if (!too_narrow && line_count == 3 && |
| 561 width - font.GetStringWidth(lines.back()) <= | 565 width - font.GetStringWidth(lines.back()) <= |
| 562 space_width + link_size.width()) { | 566 space_width + link_size.width()) { |
| 563 ++line_count; | 567 ++line_count; |
| 564 } | 568 } |
| 565 if (too_narrow || line_count > 3) | 569 if (too_narrow || line_count > 3) |
| 566 min_width = width + 1; | 570 min_width = width + 1; |
| 567 else | 571 else |
| 568 max_width = width; | 572 max_width = width; |
| 569 } | 573 } |
| 570 | 574 |
| 571 // Calculate the corresponding height and set the preferred size. | 575 // Calculate the corresponding height and set the preferred size. |
| 572 lines.clear(); | 576 lines.clear(); |
| 573 gfx::ElideRectangleText( | 577 gfx::ElideRectangleText( |
| 574 text_, font, min_width, INT_MAX, gfx::TRUNCATE_LONG_WORDS, &lines); | 578 text_, font, static_cast<float>(min_width), static_cast<float>(INT_MAX), |
| 579 gfx::TRUNCATE_LONG_WORDS, &lines); | |
| 575 int line_count = lines.size(); | 580 int line_count = lines.size(); |
| 576 if (min_width - font.GetStringWidth(lines.back()) <= | 581 if (min_width - font.GetStringWidth(lines.back()) <= |
| 577 space_width + link_size.width()) { | 582 space_width + link_size.width()) { |
| 578 ++line_count; | 583 ++line_count; |
| 579 } | 584 } |
| 580 const int line_height = font.GetHeight(); | 585 const int line_height = font.GetHeight(); |
| 581 const int link_extra_height = std::max( | 586 const int link_extra_height = std::max( |
| 582 link_size.height() - learn_more_->GetInsets().top() - line_height, 0); | 587 link_size.height() - learn_more_->GetInsets().top() - line_height, 0); |
| 583 preferred_size_ = gfx::Size( | 588 preferred_size_ = gfx::Size( |
| 584 min_width + insets.width(), | 589 min_width + insets.width(), |
| (...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1291 kUserIconLargeSize : kUserIconSize; | 1296 kUserIconLargeSize : kUserIconSize; |
| 1292 | 1297 |
| 1293 avatar_->SetImage( | 1298 avatar_->SetImage( |
| 1294 ash::Shell::GetInstance()->session_state_delegate()->GetUserImage( | 1299 ash::Shell::GetInstance()->session_state_delegate()->GetUserImage( |
| 1295 multiprofile_index_), | 1300 multiprofile_index_), |
| 1296 gfx::Size(icon_size, icon_size)); | 1301 gfx::Size(icon_size, icon_size)); |
| 1297 } | 1302 } |
| 1298 | 1303 |
| 1299 } // namespace internal | 1304 } // namespace internal |
| 1300 } // namespace ash | 1305 } // namespace ash |
| OLD | NEW |