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

Side by Side Diff: chrome/browser/views/tabs/tab_renderer.cc

Issue 7344: Convert GetPreferredSize from:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <limits> 5 #include <limits>
6 6
7 #include "chrome/browser/views/tabs/tab_renderer.h" 7 #include "chrome/browser/views/tabs/tab_renderer.h"
8 8
9 #include "base/gfx/image_operations.h" 9 #include "base/gfx/image_operations.h"
10 #include "chrome/app/theme/theme_resources.h" 10 #include "chrome/app/theme/theme_resources.h"
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 pulse_animation_->Reset(); 323 pulse_animation_->Reset();
324 pulse_animation_->StartThrobbing(std::numeric_limits<int>::max()); 324 pulse_animation_->StartThrobbing(std::numeric_limits<int>::max());
325 } 325 }
326 326
327 void TabRenderer::StopPulse() { 327 void TabRenderer::StopPulse() {
328 if (pulse_animation_->IsAnimating()) 328 if (pulse_animation_->IsAnimating())
329 pulse_animation_->Stop(); 329 pulse_animation_->Stop();
330 } 330 }
331 331
332 // static 332 // static
333 gfx::Size TabRenderer::GetMinimumSize() { 333 gfx::Size TabRenderer::GetMinimumUnselectedSize() {
334 InitResources(); 334 InitResources();
335 335
336 gfx::Size minimum_size; 336 gfx::Size minimum_size;
337 minimum_size.set_width(kLeftPadding + kRightPadding); 337 minimum_size.set_width(kLeftPadding + kRightPadding);
338 // Since we use bitmap images, the real minimum height of the image is 338 // Since we use bitmap images, the real minimum height of the image is
339 // defined most accurately by the height of the end cap images. 339 // defined most accurately by the height of the end cap images.
340 minimum_size.set_height(tab_active_l->height()); 340 minimum_size.set_height(tab_active_l->height());
341 return minimum_size; 341 return minimum_size;
342 } 342 }
343 343
344 // static 344 // static
345 gfx::Size TabRenderer::GetMinimumSelectedSize() { 345 gfx::Size TabRenderer::GetMinimumSelectedSize() {
346 gfx::Size minimum_size = GetMinimumSize(); 346 gfx::Size minimum_size = GetMinimumUnselectedSize();
347 minimum_size.set_width(kLeftPadding + kFaviconSize + kRightPadding); 347 minimum_size.set_width(kLeftPadding + kFaviconSize + kRightPadding);
348 return minimum_size; 348 return minimum_size;
349 } 349 }
350 350
351 // static 351 // static
352 gfx::Size TabRenderer::GetStandardSize() { 352 gfx::Size TabRenderer::GetStandardSize() {
353 gfx::Size standard_size = GetMinimumSize(); 353 gfx::Size standard_size = GetMinimumUnselectedSize();
354 standard_size.set_width( 354 standard_size.set_width(
355 standard_size.width() + kFavIconTitleSpacing + kStandardTitleWidth); 355 standard_size.width() + kFavIconTitleSpacing + kStandardTitleWidth);
356 return standard_size; 356 return standard_size;
357 } 357 }
358 358
359 //////////////////////////////////////////////////////////////////////////////// 359 ////////////////////////////////////////////////////////////////////////////////
360 // TabRenderer, protected: 360 // TabRenderer, protected:
361 361
362 std::wstring TabRenderer::GetTitle() const { 362 std::wstring TabRenderer::GetTitle() const {
363 return data_.title; 363 return data_.title;
364 } 364 }
365 365
366 //////////////////////////////////////////////////////////////////////////////// 366 ////////////////////////////////////////////////////////////////////////////////
367 // TabRenderer, ChromeViews::View overrides: 367 // TabRenderer, ChromeViews::View overrides:
368 368
369 void TabRenderer::Paint(ChromeCanvas* canvas) { 369 void TabRenderer::Paint(ChromeCanvas* canvas) {
370 // Don't paint if we're narrower than we can render correctly. (This should 370 // Don't paint if we're narrower than we can render correctly. (This should
371 // only happen during animations). 371 // only happen during animations).
372 if (width() < GetMinimumSize().width()) 372 if (width() < GetMinimumUnselectedSize().width())
373 return; 373 return;
374 374
375 // See if the model changes whether the icons should be painted. 375 // See if the model changes whether the icons should be painted.
376 const bool show_icon = ShouldShowIcon(); 376 const bool show_icon = ShouldShowIcon();
377 const bool show_download_icon = data_.show_download_icon; 377 const bool show_download_icon = data_.show_download_icon;
378 const bool show_close_button = ShouldShowCloseBox(); 378 const bool show_close_button = ShouldShowCloseBox();
379 if (show_icon != showing_icon_ || 379 if (show_icon != showing_icon_ ||
380 show_download_icon != showing_download_icon_ || 380 show_download_icon != showing_download_icon_ ||
381 show_close_button != showing_close_button_) 381 show_close_button != showing_close_button_)
382 Layout(); 382 Layout();
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 close_button_->SetVisible(false); 485 close_button_->SetVisible(false);
486 } 486 }
487 487
488 // Size the Title text to fill the remaining space. 488 // Size the Title text to fill the remaining space.
489 int title_left = favicon_bounds_.right() + kFavIconTitleSpacing; 489 int title_left = favicon_bounds_.right() + kFavIconTitleSpacing;
490 int title_top = kTopPadding + (content_height - title_font_height) / 2; 490 int title_top = kTopPadding + (content_height - title_font_height) / 2;
491 491
492 // If the user has big fonts, the title will appear rendered too far down on 492 // If the user has big fonts, the title will appear rendered too far down on
493 // the y-axis if we use the regular top padding, so we need to adjust it so 493 // the y-axis if we use the regular top padding, so we need to adjust it so
494 // that the text appears centered. 494 // that the text appears centered.
495 gfx::Size minimum_size = GetMinimumSize(); 495 gfx::Size minimum_size = GetMinimumUnselectedSize();
496 int text_height = title_top + title_font_height + kBottomPadding; 496 int text_height = title_top + title_font_height + kBottomPadding;
497 if (text_height > minimum_size.height()) 497 if (text_height > minimum_size.height())
498 title_top -= (text_height - minimum_size.height()) / 2; 498 title_top -= (text_height - minimum_size.height()) / 2;
499 499
500 int title_width; 500 int title_width;
501 if (close_button_->IsVisible()) { 501 if (close_button_->IsVisible()) {
502 title_width = std::max(close_button_->x() - 502 title_width = std::max(close_button_->x() -
503 kTitleCloseButtonSpacing - title_left, 0); 503 kTitleCloseButtonSpacing - title_left, 0);
504 } else { 504 } else {
505 title_width = std::max(lb.Width() - title_left, 0); 505 title_width = std::max(lb.Width() - title_left, 0);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 dst_x = width() - kLeftPadding - image_size; 628 dst_x = width() - kLeftPadding - image_size;
629 } else { 629 } else {
630 dst_x = kLeftPadding; 630 dst_x = kLeftPadding;
631 } 631 }
632 canvas->DrawBitmapInt(*frames, image_offset, 0, image_size, 632 canvas->DrawBitmapInt(*frames, image_offset, 0, image_size,
633 image_size, dst_x, dst_y, image_size, image_size, 633 image_size, dst_x, dst_y, image_size, image_size,
634 false); 634 false);
635 } 635 }
636 636
637 int TabRenderer::IconCapacity() const { 637 int TabRenderer::IconCapacity() const {
638 if (height() < GetMinimumSize().height()) { 638 if (height() < GetMinimumUnselectedSize().height())
639 return 0; 639 return 0;
640 }
641 return (width() - kLeftPadding - kRightPadding) / kFaviconSize; 640 return (width() - kLeftPadding - kRightPadding) / kFaviconSize;
642 } 641 }
643 642
644 bool TabRenderer::ShouldShowIcon() const { 643 bool TabRenderer::ShouldShowIcon() const {
645 if (!data_.show_icon) { 644 if (!data_.show_icon) {
646 return false; 645 return false;
647 } else if (IsSelected()) { 646 } else if (IsSelected()) {
648 // The selected tab clips favicon before close button. 647 // The selected tab clips favicon before close button.
649 return IconCapacity() >= 2; 648 return IconCapacity() >= 2;
650 } 649 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 } 682 }
684 683
685 void TabRenderer::DisplayCrashedFavIcon() { 684 void TabRenderer::DisplayCrashedFavIcon() {
686 should_display_crashed_favicon_ = true; 685 should_display_crashed_favicon_ = true;
687 } 686 }
688 687
689 void TabRenderer::ResetCrashedFavIcon() { 688 void TabRenderer::ResetCrashedFavIcon() {
690 should_display_crashed_favicon_ = false; 689 should_display_crashed_favicon_ = false;
691 } 690 }
692 691
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698