| Index: chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc
|
| ===================================================================
|
| --- chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc (revision 82144)
|
| +++ chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc (working copy)
|
| @@ -26,6 +26,7 @@
|
| #include "ui/base/animation/throb_animation.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/gfx/canvas_skia.h"
|
| #include "ui/gfx/canvas_skia_paint.h"
|
| #include "ui/gfx/favicon_size.h"
|
| #include "ui/gfx/platform_font_gtk.h"
|
| @@ -377,11 +378,12 @@
|
| event->area.y = y() + favicon_bounds_.y();
|
| event->area.width = favicon_bounds_.width();
|
| event->area.height = favicon_bounds_.height();
|
| - gfx::CanvasSkiaPaint canvas(event, false);
|
| + gfx::CanvasSkiaPaint canvas_paint(event, false);
|
| + gfx::CanvasSkia* canvas = canvas_paint.AsCanvas()->AsCanvasSkia();
|
|
|
| // The actual paint methods expect 0, 0 to be the tab top left (see
|
| // PaintTab).
|
| - canvas.TranslateInt(x(), y());
|
| + canvas->TranslateInt(x(), y());
|
|
|
| // Paint the background behind the favicon.
|
| int theme_id;
|
| @@ -398,7 +400,7 @@
|
| offset_y = background_offset_y_;
|
| }
|
| SkBitmap* tab_bg = theme_service_->GetBitmapNamed(theme_id);
|
| - canvas.TileImageInt(*tab_bg,
|
| + canvas->TileImageInt(*tab_bg,
|
| x() + favicon_bounds_.x(), offset_y + favicon_bounds_.y(),
|
| favicon_bounds_.x(), favicon_bounds_.y(),
|
| favicon_bounds_.width(), favicon_bounds_.height());
|
| @@ -409,20 +411,22 @@
|
| SkRect bounds;
|
| bounds.set(favicon_bounds_.x(), favicon_bounds_.y(),
|
| favicon_bounds_.right(), favicon_bounds_.bottom());
|
| - canvas.saveLayerAlpha(&bounds, static_cast<int>(throb_value * 0xff),
|
| - SkCanvas::kARGB_ClipLayer_SaveFlag);
|
| - canvas.drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode);
|
| + canvas->skia_canvas()->saveLayerAlpha(&bounds,
|
| + static_cast<int>(throb_value * 0xff),
|
| + SkCanvas::kARGB_ClipLayer_SaveFlag);
|
| + canvas->skia_canvas()->drawARGB(
|
| + 0, 255, 255, 255, SkXfermode::kClear_Mode);
|
| SkBitmap* active_bg = theme_service_->GetBitmapNamed(IDR_THEME_TOOLBAR);
|
| - canvas.TileImageInt(*active_bg,
|
| + canvas->TileImageInt(*active_bg,
|
| x() + favicon_bounds_.x(), favicon_bounds_.y(),
|
| favicon_bounds_.x(), favicon_bounds_.y(),
|
| favicon_bounds_.width(), favicon_bounds_.height());
|
| - canvas.restore();
|
| + canvas->Restore();
|
| }
|
| }
|
|
|
| // Now paint the icon.
|
| - PaintIcon(&canvas);
|
| + PaintIcon(canvas);
|
| }
|
|
|
| bool TabRendererGtk::ShouldShowIcon() const {
|
| @@ -643,15 +647,17 @@
|
| }
|
|
|
| SkBitmap TabRendererGtk::PaintBitmap() {
|
| - gfx::CanvasSkia canvas(width(), height(), false);
|
| + gfx::CanvasSkia canvas;
|
| + canvas.Init(width(), height(), false);
|
| Paint(&canvas);
|
| return canvas.ExtractBitmap();
|
| }
|
|
|
| cairo_surface_t* TabRendererGtk::PaintToSurface() {
|
| - gfx::CanvasSkia canvas(width(), height(), false);
|
| + gfx::CanvasSkia canvas;
|
| + canvas.Init(width(), height(), false);
|
| Paint(&canvas);
|
| - return cairo_surface_reference(cairo_get_target(canvas.beginPlatformPaint()));
|
| + return cairo_surface_reference(cairo_get_target(canvas.BeginPlatformPaint()));
|
| }
|
|
|
| void TabRendererGtk::SchedulePaint() {
|
| @@ -791,19 +797,20 @@
|
| }
|
|
|
| void TabRendererGtk::PaintTab(GdkEventExpose* event) {
|
| - gfx::CanvasSkiaPaint canvas(event, false);
|
| - if (canvas.is_empty())
|
| + gfx::CanvasSkiaPaint canvas_paint(event, false);
|
| + if (canvas_paint.IsValid())
|
| return;
|
|
|
| + gfx::Canvas* canvas = canvas_paint.AsCanvas();
|
| // The tab is rendered into a windowless widget whose offset is at the
|
| // coordinate event->area. Translate by these offsets so we can render at
|
| // (0,0) to match Windows' rendering metrics.
|
| - canvas.TranslateInt(event->area.x, event->area.y);
|
| + canvas->TranslateInt(event->area.x, event->area.y);
|
|
|
| // Save the original x offset so we can position background images properly.
|
| background_offset_x_ = event->area.x;
|
|
|
| - Paint(&canvas);
|
| + Paint(canvas);
|
| }
|
|
|
| void TabRendererGtk::PaintTitle(gfx::Canvas* canvas) {
|
| @@ -883,8 +890,8 @@
|
| if (throb_value > 0) {
|
| canvas->SaveLayerAlpha(static_cast<int>(throb_value * 0xff),
|
| gfx::Rect(width(), height()));
|
| - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255,
|
| - SkXfermode::kClear_Mode);
|
| + canvas->AsCanvasSkia()->skia_canvas()->drawARGB(
|
| + 0, 255, 255, 255, SkXfermode::kClear_Mode);
|
| PaintActiveTabBackground(canvas);
|
| canvas->Restore();
|
| }
|
|
|