OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/gtk/tabs/tab_renderer_gtk.h" | 5 #include "chrome/browser/gtk/tabs/tab_renderer_gtk.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 } | 612 } |
613 | 613 |
614 if (!mini() || width() > kMiniTabRendererAsNormalTabWidth) | 614 if (!mini() || width() > kMiniTabRendererAsNormalTabWidth) |
615 PaintTitle(canvas); | 615 PaintTitle(canvas); |
616 | 616 |
617 if (show_icon) | 617 if (show_icon) |
618 PaintIcon(canvas); | 618 PaintIcon(canvas); |
619 } | 619 } |
620 | 620 |
621 SkBitmap TabRendererGtk::PaintBitmap() { | 621 SkBitmap TabRendererGtk::PaintBitmap() { |
622 gfx::Canvas canvas(width(), height(), false); | 622 gfx::CanvasSkia canvas(width(), height(), false); |
623 Paint(&canvas); | 623 Paint(&canvas); |
624 return canvas.ExtractBitmap(); | 624 return canvas.ExtractBitmap(); |
625 } | 625 } |
626 | 626 |
627 cairo_surface_t* TabRendererGtk::PaintToSurface() { | 627 cairo_surface_t* TabRendererGtk::PaintToSurface() { |
628 gfx::Canvas canvas(width(), height(), false); | 628 gfx::CanvasSkia canvas(width(), height(), false); |
629 Paint(&canvas); | 629 Paint(&canvas); |
630 return cairo_surface_reference(cairo_get_target(canvas.beginPlatformPaint())); | 630 return cairo_surface_reference(cairo_get_target(canvas.beginPlatformPaint())); |
631 } | 631 } |
632 | 632 |
633 void TabRendererGtk::SchedulePaint() { | 633 void TabRendererGtk::SchedulePaint() { |
634 gtk_widget_queue_draw(tab_.get()); | 634 gtk_widget_queue_draw(tab_.get()); |
635 } | 635 } |
636 | 636 |
637 gfx::Rect TabRendererGtk::GetLocalBounds() { | 637 gfx::Rect TabRendererGtk::GetLocalBounds() { |
638 return gfx::Rect(0, 0, bounds_.width(), bounds_.height()); | 638 return gfx::Rect(0, 0, bounds_.width(), bounds_.height()); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 : unselected_title_color_; | 797 : unselected_title_color_; |
798 canvas->DrawStringInt(UTF16ToWideHack(title), *title_font_, title_color, | 798 canvas->DrawStringInt(UTF16ToWideHack(title), *title_font_, title_color, |
799 title_bounds_.x(), title_bounds_.y(), | 799 title_bounds_.x(), title_bounds_.y(), |
800 title_bounds_.width(), title_bounds_.height()); | 800 title_bounds_.width(), title_bounds_.height()); |
801 } | 801 } |
802 | 802 |
803 void TabRendererGtk::PaintIcon(gfx::Canvas* canvas) { | 803 void TabRendererGtk::PaintIcon(gfx::Canvas* canvas) { |
804 if (loading_animation_.animation_state() != ANIMATION_NONE) { | 804 if (loading_animation_.animation_state() != ANIMATION_NONE) { |
805 PaintLoadingAnimation(canvas); | 805 PaintLoadingAnimation(canvas); |
806 } else { | 806 } else { |
807 canvas->save(); | 807 canvas->AsCanvasSkia()->save(); |
808 canvas->ClipRectInt(0, 0, width(), height() - kFavIconTitleSpacing); | 808 canvas->ClipRectInt(0, 0, width(), height() - kFavIconTitleSpacing); |
809 if (should_display_crashed_favicon_) { | 809 if (should_display_crashed_favicon_) { |
810 canvas->DrawBitmapInt(*crashed_fav_icon, 0, 0, | 810 canvas->DrawBitmapInt(*crashed_fav_icon, 0, 0, |
811 crashed_fav_icon->width(), | 811 crashed_fav_icon->width(), |
812 crashed_fav_icon->height(), | 812 crashed_fav_icon->height(), |
813 favicon_bounds_.x(), | 813 favicon_bounds_.x(), |
814 favicon_bounds_.y() + fav_icon_hiding_offset_, | 814 favicon_bounds_.y() + fav_icon_hiding_offset_, |
815 kFavIconSize, kFavIconSize, | 815 kFavIconSize, kFavIconSize, |
816 true); | 816 true); |
817 } else { | 817 } else { |
818 if (!data_.favicon.isNull()) { | 818 if (!data_.favicon.isNull()) { |
819 if (data_.is_default_favicon && theme_provider_->UseGtkTheme()) { | 819 if (data_.is_default_favicon && theme_provider_->UseGtkTheme()) { |
820 GdkPixbuf* favicon = GtkThemeProvider::GetDefaultFavicon(true); | 820 GdkPixbuf* favicon = GtkThemeProvider::GetDefaultFavicon(true); |
821 canvas->DrawGdkPixbuf(favicon, favicon_bounds_.x(), | 821 canvas->AsCanvasSkia()->DrawGdkPixbuf( |
822 favicon_bounds_.y() + fav_icon_hiding_offset_); | 822 favicon, favicon_bounds_.x(), |
| 823 favicon_bounds_.y() + fav_icon_hiding_offset_); |
823 } else { | 824 } else { |
824 // TODO(pkasting): Use code in tab_icon_view.cc:PaintIcon() (or switch | 825 // TODO(pkasting): Use code in tab_icon_view.cc:PaintIcon() (or switch |
825 // to using that class to render the favicon). | 826 // to using that class to render the favicon). |
826 canvas->DrawBitmapInt(data_.favicon, 0, 0, | 827 canvas->DrawBitmapInt(data_.favicon, 0, 0, |
827 data_.favicon.width(), | 828 data_.favicon.width(), |
828 data_.favicon.height(), | 829 data_.favicon.height(), |
829 favicon_bounds_.x(), | 830 favicon_bounds_.x(), |
830 favicon_bounds_.y() + fav_icon_hiding_offset_, | 831 favicon_bounds_.y() + fav_icon_hiding_offset_, |
831 kFavIconSize, kFavIconSize, | 832 kFavIconSize, kFavIconSize, |
832 true); | 833 true); |
833 } | 834 } |
834 } | 835 } |
835 } | 836 } |
836 canvas->restore(); | 837 canvas->AsCanvasSkia()->restore(); |
837 } | 838 } |
838 } | 839 } |
839 | 840 |
840 void TabRendererGtk::PaintTabBackground(gfx::Canvas* canvas) { | 841 void TabRendererGtk::PaintTabBackground(gfx::Canvas* canvas) { |
841 if (IsSelected()) { | 842 if (IsSelected()) { |
842 PaintActiveTabBackground(canvas); | 843 PaintActiveTabBackground(canvas); |
843 } else { | 844 } else { |
844 PaintInactiveTabBackground(canvas); | 845 PaintInactiveTabBackground(canvas); |
845 | 846 |
846 double throb_value = GetThrobValue(); | 847 double throb_value = GetThrobValue(); |
847 if (throb_value > 0) { | 848 if (throb_value > 0) { |
848 SkRect bounds; | 849 SkRect bounds; |
849 bounds.set(0, 0, SkIntToScalar(width()), SkIntToScalar(height())); | 850 bounds.set(0, 0, SkIntToScalar(width()), SkIntToScalar(height())); |
850 canvas->saveLayerAlpha(&bounds, static_cast<int>(throb_value * 0xff), | 851 canvas->AsCanvasSkia()->saveLayerAlpha( |
851 SkCanvas::kARGB_ClipLayer_SaveFlag); | 852 &bounds, static_cast<int>(throb_value * 0xff), |
852 canvas->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); | 853 SkCanvas::kARGB_ClipLayer_SaveFlag); |
| 854 canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, |
| 855 SkXfermode::kClear_Mode); |
853 PaintActiveTabBackground(canvas); | 856 PaintActiveTabBackground(canvas); |
854 canvas->restore(); | 857 canvas->AsCanvasSkia()->restore(); |
855 } | 858 } |
856 } | 859 } |
857 } | 860 } |
858 | 861 |
859 void TabRendererGtk::PaintInactiveTabBackground(gfx::Canvas* canvas) { | 862 void TabRendererGtk::PaintInactiveTabBackground(gfx::Canvas* canvas) { |
860 bool is_otr = data_.off_the_record; | 863 bool is_otr = data_.off_the_record; |
861 | 864 |
862 // The tab image needs to be lined up with the background image | 865 // The tab image needs to be lined up with the background image |
863 // so that it feels partially transparent. | 866 // so that it feels partially transparent. |
864 int offset_x = background_offset_x_; | 867 int offset_x = background_offset_x_; |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1059 // Force the font size to 9pt, which matches Windows' default font size | 1062 // Force the font size to 9pt, which matches Windows' default font size |
1060 // (taken from the system). | 1063 // (taken from the system). |
1061 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); | 1064 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); |
1062 title_font_ = new gfx::Font(gfx::Font::CreateFont(base_font.FontName(), 9)); | 1065 title_font_ = new gfx::Font(gfx::Font::CreateFont(base_font.FontName(), 9)); |
1063 title_font_height_ = title_font_->height(); | 1066 title_font_height_ = title_font_->height(); |
1064 | 1067 |
1065 crashed_fav_icon = rb.GetBitmapNamed(IDR_SAD_FAVICON); | 1068 crashed_fav_icon = rb.GetBitmapNamed(IDR_SAD_FAVICON); |
1066 | 1069 |
1067 initialized_ = true; | 1070 initialized_ = true; |
1068 } | 1071 } |
OLD | NEW |