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 "chrome/browser/ui/views/tabs/tab.h" | 5 #include "chrome/browser/ui/views/tabs/tab.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/defaults.h" | 10 #include "chrome/browser/defaults.h" |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 canvas->Restore(); | 558 canvas->Restore(); |
559 } | 559 } |
560 } | 560 } |
561 } | 561 } |
562 | 562 |
563 void Tab::PaintInactiveTabBackgroundWithTitleChange(gfx::Canvas* canvas) { | 563 void Tab::PaintInactiveTabBackgroundWithTitleChange(gfx::Canvas* canvas) { |
564 // Render the inactive tab background. We'll use this for clipping. | 564 // Render the inactive tab background. We'll use this for clipping. |
565 gfx::Canvas background_canvas(size(), canvas->scale_factor(), false); | 565 gfx::Canvas background_canvas(size(), canvas->scale_factor(), false); |
566 PaintInactiveTabBackground(&background_canvas); | 566 PaintInactiveTabBackground(&background_canvas); |
567 | 567 |
568 gfx::ImageSkia background_image(background_canvas.ExtractImageSkiaRep()); | 568 gfx::ImageSkia background_image(background_canvas.ExtractImageRep()); |
569 | 569 |
570 // Draw a radial gradient to hover_canvas. | 570 // Draw a radial gradient to hover_canvas. |
571 gfx::Canvas hover_canvas(size(), canvas->scale_factor(), false); | 571 gfx::Canvas hover_canvas(size(), canvas->scale_factor(), false); |
572 int radius = kMiniTitleChangeGradientRadius; | 572 int radius = kMiniTitleChangeGradientRadius; |
573 int x0 = width() + radius - kMiniTitleChangeInitialXOffset; | 573 int x0 = width() + radius - kMiniTitleChangeInitialXOffset; |
574 int x1 = radius; | 574 int x1 = radius; |
575 int x2 = -radius; | 575 int x2 = -radius; |
576 int x; | 576 int x; |
577 if (mini_title_animation_->current_part_index() == 0) { | 577 if (mini_title_animation_->current_part_index() == 0) { |
578 x = mini_title_animation_->CurrentValueBetween(x0, x1); | 578 x = mini_title_animation_->CurrentValueBetween(x0, x1); |
579 } else if (mini_title_animation_->current_part_index() == 1) { | 579 } else if (mini_title_animation_->current_part_index() == 1) { |
580 x = x1; | 580 x = x1; |
581 } else { | 581 } else { |
582 x = mini_title_animation_->CurrentValueBetween(x1, x2); | 582 x = mini_title_animation_->CurrentValueBetween(x1, x2); |
583 } | 583 } |
584 SkPoint center_point; | 584 SkPoint center_point; |
585 center_point.iset(x, 0); | 585 center_point.iset(x, 0); |
586 SkColor colors[2] = { kMiniTitleChangeGradientColor1, | 586 SkColor colors[2] = { kMiniTitleChangeGradientColor1, |
587 kMiniTitleChangeGradientColor2 }; | 587 kMiniTitleChangeGradientColor2 }; |
588 SkShader* shader = SkGradientShader::CreateRadial(center_point, | 588 SkShader* shader = SkGradientShader::CreateRadial(center_point, |
589 SkIntToScalar(radius), colors, NULL, 2, SkShader::kClamp_TileMode); | 589 SkIntToScalar(radius), colors, NULL, 2, SkShader::kClamp_TileMode); |
590 SkPaint paint; | 590 SkPaint paint; |
591 paint.setShader(shader); | 591 paint.setShader(shader); |
592 shader->unref(); | 592 shader->unref(); |
593 hover_canvas.DrawRect(gfx::Rect(x - radius, -radius, radius * 2, radius * 2), | 593 hover_canvas.DrawRect(gfx::Rect(x - radius, -radius, radius * 2, radius * 2), |
594 paint); | 594 paint); |
595 | 595 |
596 // Draw the radial gradient clipped to the background into hover_image. | 596 // Draw the radial gradient clipped to the background into hover_image. |
597 gfx::ImageSkia hover_image = gfx::ImageSkiaOperations::CreateMaskedImage( | 597 gfx::ImageSkia hover_image = gfx::ImageSkiaOperations::CreateMaskedImage( |
598 gfx::ImageSkia(hover_canvas.ExtractImageSkiaRep()), background_image); | 598 gfx::ImageSkia(hover_canvas.ExtractImageRep()), background_image); |
599 | 599 |
600 // Draw the tab background to the canvas. | 600 // Draw the tab background to the canvas. |
601 canvas->DrawImageInt(background_image, 0, 0); | 601 canvas->DrawImageInt(background_image, 0, 0); |
602 | 602 |
603 // And then the gradient on top of that. | 603 // And then the gradient on top of that. |
604 if (mini_title_animation_->current_part_index() == 2) { | 604 if (mini_title_animation_->current_part_index() == 2) { |
605 canvas->SaveLayerAlpha(mini_title_animation_->CurrentValueBetween(255, 0)); | 605 canvas->SaveLayerAlpha(mini_title_animation_->CurrentValueBetween(255, 0)); |
606 canvas->DrawImageInt(hover_image, 0, 0); | 606 canvas->DrawImageInt(hover_image, 0, 0); |
607 canvas->Restore(); | 607 canvas->Restore(); |
608 } else { | 608 } else { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 // rectangle. And again, don't draw over the toolbar. | 670 // rectangle. And again, don't draw over the toolbar. |
671 background_canvas.TileImageInt(*tab_bg, | 671 background_canvas.TileImageInt(*tab_bg, |
672 offset + tab_image->l_width, | 672 offset + tab_image->l_width, |
673 bg_offset_y + drop_shadow_height() + tab_image->y_offset, | 673 bg_offset_y + drop_shadow_height() + tab_image->y_offset, |
674 tab_image->l_width, | 674 tab_image->l_width, |
675 drop_shadow_height() + tab_image->y_offset, | 675 drop_shadow_height() + tab_image->y_offset, |
676 width() - tab_image->l_width - tab_image->r_width, | 676 width() - tab_image->l_width - tab_image->r_width, |
677 height() - drop_shadow_height() - kToolbarOverlap - tab_image->y_offset); | 677 height() - drop_shadow_height() - kToolbarOverlap - tab_image->y_offset); |
678 | 678 |
679 canvas->DrawImageInt( | 679 canvas->DrawImageInt( |
680 gfx::ImageSkia(background_canvas.ExtractImageSkiaRep()), 0, 0); | 680 gfx::ImageSkia(background_canvas.ExtractImageRep()), 0, 0); |
681 | 681 |
682 if (!GetThemeProvider()->HasCustomImage(tab_id) && | 682 if (!GetThemeProvider()->HasCustomImage(tab_id) && |
683 hover_controller().ShouldDraw()) { | 683 hover_controller().ShouldDraw()) { |
684 hover_controller().Draw(canvas, background_canvas.ExtractImageSkiaRep()); | 684 hover_controller().Draw(canvas, background_canvas.ExtractImageRep()); |
685 } | 685 } |
686 | 686 |
687 // Now draw the highlights/shadows around the tab edge. | 687 // Now draw the highlights/shadows around the tab edge. |
688 canvas->DrawImageInt(*tab_inactive_image->image_l, 0, 0); | 688 canvas->DrawImageInt(*tab_inactive_image->image_l, 0, 0); |
689 canvas->TileImageInt(*tab_inactive_image->image_c, | 689 canvas->TileImageInt(*tab_inactive_image->image_c, |
690 tab_inactive_image->l_width, 0, | 690 tab_inactive_image->l_width, 0, |
691 width() - tab_inactive_image->l_width - | 691 width() - tab_inactive_image->l_width - |
692 tab_inactive_image->r_width, | 692 tab_inactive_image->r_width, |
693 height()); | 693 height()); |
694 canvas->DrawImageInt(*tab_inactive_image->image_r, | 694 canvas->DrawImageInt(*tab_inactive_image->image_r, |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
815 rb.GetImageSkiaNamed(IDR_TAB_ACTIVE_RIGHT_SEARCH); | 815 rb.GetImageSkiaNamed(IDR_TAB_ACTIVE_RIGHT_SEARCH); |
816 tab_active_search_.l_width = tab_active_search_.image_l->width(); | 816 tab_active_search_.l_width = tab_active_search_.image_l->width(); |
817 tab_active_search_.r_width = tab_active_search_.image_r->width(); | 817 tab_active_search_.r_width = tab_active_search_.image_r->width(); |
818 | 818 |
819 tab_inactive_.image_l = rb.GetImageSkiaNamed(IDR_TAB_INACTIVE_LEFT); | 819 tab_inactive_.image_l = rb.GetImageSkiaNamed(IDR_TAB_INACTIVE_LEFT); |
820 tab_inactive_.image_c = rb.GetImageSkiaNamed(IDR_TAB_INACTIVE_CENTER); | 820 tab_inactive_.image_c = rb.GetImageSkiaNamed(IDR_TAB_INACTIVE_CENTER); |
821 tab_inactive_.image_r = rb.GetImageSkiaNamed(IDR_TAB_INACTIVE_RIGHT); | 821 tab_inactive_.image_r = rb.GetImageSkiaNamed(IDR_TAB_INACTIVE_RIGHT); |
822 tab_inactive_.l_width = tab_inactive_.image_l->width(); | 822 tab_inactive_.l_width = tab_inactive_.image_l->width(); |
823 tab_inactive_.r_width = tab_inactive_.image_r->width(); | 823 tab_inactive_.r_width = tab_inactive_.image_r->width(); |
824 } | 824 } |
OLD | NEW |