diff options
90 files changed, 388 insertions, 311 deletions
diff --git a/chrome/browser/chromeos/frame/bubble_frame_view.cc b/chrome/browser/chromeos/frame/bubble_frame_view.cc index e864b80..9b77a43 100644 --- a/chrome/browser/chromeos/frame/bubble_frame_view.cc +++ b/chrome/browser/chromeos/frame/bubble_frame_view.cc @@ -215,7 +215,7 @@ void BubbleFrameView::OnPaint(gfx::Canvas* canvas) { rect.set(SkIntToScalar(bounds.x()), SkIntToScalar(bounds.y()), SkIntToScalar(bounds.right()), SkIntToScalar(bounds.bottom())); path.addRect(rect); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } void BubbleFrameView::ButtonPressed(views::Button* sender, diff --git a/chrome/browser/chromeos/frame/panel_controller.cc b/chrome/browser/chromeos/frame/panel_controller.cc index a81beff..9f9731e 100644 --- a/chrome/browser/chromeos/frame/panel_controller.cc +++ b/chrome/browser/chromeos/frame/panel_controller.cc @@ -131,7 +131,7 @@ class TitleBackgroundPainter : public views::Painter { paint.setShader(s); // Need to unref shader, otherwise never deleted. s->unref(); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } PanelController* panel_controller_; diff --git a/chrome/browser/chromeos/login/helper.cc b/chrome/browser/chromeos/login/helper.cc index f561899..4333af3 100644 --- a/chrome/browser/chromeos/login/helper.cc +++ b/chrome/browser/chromeos/login/helper.cc @@ -62,7 +62,7 @@ class BackgroundPainter : public views::Painter { NULL); paint.setShader(s); s->unref(); - canvas->AsCanvasSkia()->drawRect(rect, paint); + canvas->GetSkCanvas()->drawRect(rect, paint); } private: diff --git a/chrome/browser/chromeos/login/rounded_rect_painter.cc b/chrome/browser/chromeos/login/rounded_rect_painter.cc index 883f1a7..cb2d4b7 100644 --- a/chrome/browser/chromeos/login/rounded_rect_painter.cc +++ b/chrome/browser/chromeos/login/rounded_rect_painter.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -53,7 +53,7 @@ static void DrawRoundedRect( } else { paint.setColor(top_color); } - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); if (stroke_color != 0) { // Expand rect by 0.5px so resulting stroke will take the whole pixel. @@ -66,7 +66,7 @@ static void DrawRoundedRect( paint.setStyle(SkPaint::kStroke_Style); paint.setStrokeWidth(SkIntToScalar(SK_Scalar1)); paint.setColor(stroke_color); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( rect, SkIntToScalar(corner_radius), SkIntToScalar(corner_radius), paint); @@ -91,7 +91,7 @@ static void DrawRoundedRectShadow( rect.set( SkIntToScalar(x + shadow / 2), SkIntToScalar(y + shadow / 2), SkIntToScalar(x + w - shadow / 2), SkIntToScalar(y + h - shadow / 2)); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( rect, SkIntToScalar(corner_radius), SkIntToScalar(corner_radius), paint); @@ -112,7 +112,7 @@ static void DrawRectWithBorder(int w, if (padding > 0) { SkPaint paint; paint.setColor(padding_color); - canvas->AsCanvasSkia()->drawRectCoords( + canvas->GetSkCanvas()->drawRectCoords( SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(w), SkIntToScalar(h), paint); } @@ -207,12 +207,12 @@ class RoundedBackground : public views::Background { paint.setStyle(SkPaint::kFill_Style); paint.setFlags(SkPaint::kAntiAlias_Flag); paint.setColor(get_color()); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); // Redraw boundary region with correspoinding color. paint.setStyle(SkPaint::kStroke_Style); paint.setStrokeWidth(SkIntToScalar(stroke_width_)); paint.setColor(stroke_color_); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } private: diff --git a/chrome/browser/chromeos/login/rounded_view.h b/chrome/browser/chromeos/login/rounded_view.h index c1080d7..3be2f91 100644 --- a/chrome/browser/chromeos/login/rounded_view.h +++ b/chrome/browser/chromeos/login/rounded_view.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -61,7 +61,7 @@ template <typename C> void RoundedView<C>::Paint(gfx::Canvas* canvas) { // Setup clip region. canvas->Save(); - canvas->AsCanvasSkia()->clipPath(GetClipPath()); + canvas->GetSkCanvas()->clipPath(GetClipPath()); // Do original painting. C::Paint(canvas); canvas->Restore(); @@ -112,7 +112,7 @@ void RoundedView<C>::DrawFrame(gfx::Canvas* canvas) { view_rect.fTop -= kOriginShift; view_rect.inset(rounded_view::kStrokeWidth, rounded_view::kStrokeWidth); paint.setColor(rounded_view::kInnerFrameColor); - canvas->AsCanvasSkia()-> + canvas->GetSkCanvas()-> drawRoundRect(view_rect, rounded_view::kCornerRadius - rounded_view::kStrokeWidth, rounded_view::kCornerRadius - rounded_view::kStrokeWidth, @@ -124,7 +124,7 @@ void RoundedView<C>::DrawFrame(gfx::Canvas* canvas) { view_rect.offset(rounded_view::kStrokeWidth - kDelta, rounded_view::kStrokeWidth - kDelta); paint.setColor(rounded_view::kOuterFrameColor); - canvas->AsCanvasSkia()->drawRoundRect(view_rect, rounded_view::kCornerRadius, + canvas->GetSkCanvas()->drawRoundRect(view_rect, rounded_view::kCornerRadius, rounded_view::kCornerRadius, paint); } diff --git a/chrome/browser/chromeos/login/user_view.cc b/chrome/browser/chromeos/login/user_view.cc index 8cca3fe..20d6313 100644 --- a/chrome/browser/chromeos/login/user_view.cc +++ b/chrome/browser/chromeos/login/user_view.cc @@ -52,7 +52,7 @@ class SignoutBackgroundPainter : public views::Painter { paint.setStyle(SkPaint::kFill_Style); paint.setFlags(SkPaint::kAntiAlias_Flag); paint.setColor(kSignoutBackgroundColor); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } }; diff --git a/chrome/browser/chromeos/login/username_view.cc b/chrome/browser/chromeos/login/username_view.cc index 34f657e..c2aa423 100644 --- a/chrome/browser/chromeos/login/username_view.cc +++ b/chrome/browser/chromeos/login/username_view.cc @@ -63,7 +63,7 @@ void UsernameView::PaintUsername(const gfx::Rect& bounds) { margin_width_ = bounds.height() * kMarginRatio; gfx::CanvasSkia canvas(bounds.width(), bounds.height(), false); // Draw transparent background. - canvas.drawColor(0); + canvas.sk_canvas()->drawColor(0); // Calculate needed space. int flags = gfx::Canvas::TEXT_ALIGN_LEFT | @@ -108,7 +108,7 @@ void UsernameView::PaintUsername(const gfx::Rect& bounds) { SkPaint paint; paint.setShader(composite_shader)->unref(); - canvas.drawPaint(paint); + canvas.sk_canvas()->drawPaint(paint); } // Draw the text. @@ -124,7 +124,7 @@ void UsernameView::PaintUsername(const gfx::Rect& bounds) { if (use_fading_for_text) { // Fade out only the text in the end. Use regular background. - canvas.drawColor(kLabelBackgoundColor, SkXfermode::kSrc_Mode); + canvas.sk_canvas()->drawColor(kLabelBackgoundColor, SkXfermode::kSrc_Mode); SkShader* image_shader = SkShader::CreateBitmapShader( *text_image_, SkShader::kRepeat_TileMode, @@ -137,7 +137,7 @@ void UsernameView::PaintUsername(const gfx::Rect& bounds) { SkPaint paint; paint.setShader(composite_shader)->unref(); - canvas.drawPaint(paint); + canvas.sk_canvas()->drawPaint(paint); text_image_.reset(new SkBitmap(canvas.ExtractBitmap())); } } diff --git a/chrome/browser/download/download_util.cc b/chrome/browser/download/download_util.cc index 1674371..f0db7f2 100644 --- a/chrome/browser/download/download_util.cc +++ b/chrome/browser/download/download_util.cc @@ -261,7 +261,7 @@ void PaintDownloadProgress(gfx::Canvas* canvas, foreground_paint.setShader(shader); foreground_paint.setAntiAlias(true); shader->unref(); - canvas->AsCanvasSkia()->drawPath(path, foreground_paint); + canvas->GetSkCanvas()->drawPath(path, foreground_paint); return; } @@ -301,7 +301,7 @@ void PaintDownloadComplete(gfx::Canvas* canvas, PI/2) / 2 + 0.5; canvas->SaveLayerAlpha(static_cast<int>(255.0 * opacity), complete_bounds); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); canvas->DrawBitmapInt(*complete, complete_bounds.x(), complete_bounds.y()); canvas->Restore(); } @@ -337,7 +337,7 @@ void PaintDownloadInterrupted(gfx::Canvas* canvas, 0.5; canvas->SaveLayerAlpha(static_cast<int>(255.0 * opacity), complete_bounds); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); canvas->DrawBitmapInt(*complete, complete_bounds.x(), complete_bounds.y()); canvas->Restore(); } diff --git a/chrome/browser/tab_contents/thumbnail_generator_unittest.cc b/chrome/browser/tab_contents/thumbnail_generator_unittest.cc index f7a4780..1eb46b8 100644 --- a/chrome/browser/tab_contents/thumbnail_generator_unittest.cc +++ b/chrome/browser/tab_contents/thumbnail_generator_unittest.cc @@ -221,7 +221,8 @@ TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_SingleColor) { // Fill all pixesl in black. canvas.FillRectInt(kBlack, 0, 0, kSize.width(), kSize.height()); - SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); + SkBitmap bitmap = + skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); // The thumbnail should deserve the highest boring score. EXPECT_DOUBLE_EQ(1.0, ThumbnailGenerator::CalculateBoringScore(&bitmap)); } @@ -237,7 +238,8 @@ TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) { // Fill the left half pixels in white. canvas.FillRectInt(kWhite, 0, 0, kSize.width() / 2, kSize.height()); - SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); + SkBitmap bitmap = + skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); ASSERT_EQ(kSize.width(), bitmap.width()); ASSERT_EQ(kSize.height(), bitmap.height()); // The thumbnail should be less boring because two colors are used. @@ -247,7 +249,8 @@ TEST_F(ThumbnailGeneratorSimpleTest, CalculateBoringScore_TwoColors) { TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) { // The input bitmap is vertically long. gfx::CanvasSkia canvas(40, 90, true); - const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); + SkBitmap bitmap = + skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); // The desired size is square. ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; @@ -263,7 +266,8 @@ TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_TallerThanWide) { TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) { // The input bitmap is horizontally long. gfx::CanvasSkia canvas(90, 40, true); - const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); + SkBitmap bitmap = + skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); // The desired size is square. ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; @@ -279,7 +283,8 @@ TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_WiderThanTall) { TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) { // The input bitmap is square. gfx::CanvasSkia canvas(40, 40, true); - const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); + SkBitmap bitmap = + skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); // The desired size is square. ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; @@ -295,7 +300,8 @@ TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NotClipped) { TEST_F(ThumbnailGeneratorSimpleTest, GetClippedBitmap_NonSquareOutput) { // The input bitmap is square. gfx::CanvasSkia canvas(40, 40, true); - const SkBitmap bitmap = skia::GetTopDevice(canvas)->accessBitmap(false); + SkBitmap bitmap = + skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); // The desired size is horizontally long. ThumbnailGenerator::ClipResult clip_result = ThumbnailGenerator::kNotClipped; diff --git a/chrome/browser/ui/gtk/infobars/infobar_container_gtk.cc b/chrome/browser/ui/gtk/infobars/infobar_container_gtk.cc index e42a03d..422db16 100644 --- a/chrome/browser/ui/gtk/infobars/infobar_container_gtk.cc +++ b/chrome/browser/ui/gtk/infobars/infobar_container_gtk.cc @@ -178,7 +178,7 @@ void InfoBarContainerGtk::PaintArrowOn(GtkWidget* widget, paint.setShader(gradient_shader); gradient_shader->unref(); - gfx::CanvasSkiaPaint canvas(expose, false); + skia::PlatformCanvasPaint canvas(expose, false); canvas.drawPath(path, paint); paint.setShader(NULL); diff --git a/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc b/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc index ef9b27e..1d416dc 100644 --- a/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc +++ b/chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc @@ -419,15 +419,16 @@ void TabRendererGtk::PaintFaviconArea(GdkEventExpose* event) { 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.sk_canvas()->saveLayerAlpha( + &bounds, static_cast<int>(throb_value * 0xff), + SkCanvas::kARGB_ClipLayer_SaveFlag); + canvas.sk_canvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); SkBitmap* active_bg = theme_service_->GetBitmapNamed(IDR_THEME_TOOLBAR); 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.sk_canvas()->restore(); } } @@ -655,7 +656,7 @@ cairo_surface_t* TabRendererGtk::PaintToSurface() { gfx::CanvasSkia canvas(width(), height(), false); Paint(&canvas); return cairo_surface_reference(cairo_get_target( - skia::BeginPlatformPaint(&canvas))); + skia::BeginPlatformPaint(canvas.sk_canvas()))); } void TabRendererGtk::SchedulePaint() { @@ -887,8 +888,8 @@ void TabRendererGtk::PaintTabBackground(gfx::Canvas* canvas) { 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->GetSkCanvas()->drawARGB(0, 255, 255, 255, + SkXfermode::kClear_Mode); PaintActiveTabBackground(canvas); canvas->Restore(); } diff --git a/chrome/browser/ui/views/aura/aura_init.cc b/chrome/browser/ui/views/aura/aura_init.cc index ce8064a..d5cf9df 100644 --- a/chrome/browser/ui/views/aura/aura_init.cc +++ b/chrome/browser/ui/views/aura/aura_init.cc @@ -48,7 +48,7 @@ class DemoWindowDelegate : public aura::WindowDelegate { virtual void OnCaptureLost() OVERRIDE { } virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { - canvas->AsCanvasSkia()->drawColor(color_, SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(color_, SkXfermode::kSrc_Mode); } virtual void OnWindowDestroying() OVERRIDE { } diff --git a/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc b/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc index 35bb187..5b7238a 100644 --- a/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc +++ b/chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.cc @@ -520,7 +520,7 @@ void AutocompletePopupContentsView::OnMouseExited( // AutocompletePopupContentsView, protected: void AutocompletePopupContentsView::PaintResultViews(gfx::CanvasSkia* canvas) { - canvas->drawColor(AutocompleteResultView::GetColor( + canvas->sk_canvas()->drawColor(AutocompleteResultView::GetColor( AutocompleteResultView::NORMAL, AutocompleteResultView::BACKGROUND)); View::PaintChildren(canvas); } @@ -570,7 +570,7 @@ void AutocompletePopupContentsView::OnPaint(gfx::Canvas* canvas) { paint.setAntiAlias(true); SkShader* shader = SkShader::CreateBitmapShader( - contents_canvas.getDevice()->accessBitmap(false), + contents_canvas.sk_canvas()->getDevice()->accessBitmap(false), SkShader::kClamp_TileMode, SkShader::kClamp_TileMode); paint.setShader(shader); @@ -578,7 +578,7 @@ void AutocompletePopupContentsView::OnPaint(gfx::Canvas* canvas) { gfx::Path path; MakeContentsPath(&path, GetContentsBounds()); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); // Now we paint the border, so it will be alpha-blended atop the contents. // This looks slightly better in the corners than drawing the contents atop @@ -644,7 +644,7 @@ void AutocompletePopupContentsView::MakeCanvasTransparent( // Allow the window blur effect to show through the popup background. SkAlpha alpha = GetThemeProvider()->ShouldUseNativeFrame() ? kGlassPopupAlpha : kOpaquePopupAlpha; - canvas->AsCanvasSkia()->drawColor(SkColorSetA( + canvas->GetSkCanvas()->drawColor(SkColorSetA( AutocompleteResultView::GetColor(AutocompleteResultView::NORMAL, AutocompleteResultView::BACKGROUND), alpha), SkXfermode::kDstIn_Mode); } diff --git a/chrome/browser/ui/views/autocomplete/autocomplete_result_view.cc b/chrome/browser/ui/views/autocomplete/autocomplete_result_view.cc index 01d0997..55d3e5b 100644 --- a/chrome/browser/ui/views/autocomplete/autocomplete_result_view.cc +++ b/chrome/browser/ui/views/autocomplete/autocomplete_result_view.cc @@ -522,7 +522,7 @@ void AutocompleteResultView::Layout() { void AutocompleteResultView::OnPaint(gfx::Canvas* canvas) { const ResultViewState state = GetState(); if (state != NORMAL) - canvas->AsCanvasSkia()->drawColor(GetColor(state, BACKGROUND)); + canvas->GetSkCanvas()->drawColor(GetColor(state, BACKGROUND)); // Paint the icon. canvas->DrawBitmapInt(*GetIcon(), GetMirroredXForRect(icon_bounds_), diff --git a/chrome/browser/ui/views/create_application_shortcut_view.cc b/chrome/browser/ui/views/create_application_shortcut_view.cc index 9c6c252..cc345a0 100644 --- a/chrome/browser/ui/views/create_application_shortcut_view.cc +++ b/chrome/browser/ui/views/create_application_shortcut_view.cc @@ -176,7 +176,7 @@ void AppInfoView::OnPaint(gfx::Canvas* canvas) { border_paint.setAntiAlias(true); border_paint.setARGB(0xFF, 0xC8, 0xC8, 0xC8); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( border_rect, SkIntToScalar(2), SkIntToScalar(2), border_paint); SkRect inner_rect = { @@ -189,7 +189,7 @@ void AppInfoView::OnPaint(gfx::Canvas* canvas) { SkPaint inner_paint; inner_paint.setAntiAlias(true); inner_paint.setARGB(0xFF, 0xF8, 0xF8, 0xF8); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( inner_rect, SkDoubleToScalar(1.5), SkDoubleToScalar(1.5), inner_paint); } diff --git a/chrome/browser/ui/views/detachable_toolbar_view.cc b/chrome/browser/ui/views/detachable_toolbar_view.cc index 04aa0d5..60c09e0 100644 --- a/chrome/browser/ui/views/detachable_toolbar_view.cc +++ b/chrome/browser/ui/views/detachable_toolbar_view.cc @@ -70,7 +70,7 @@ void DetachableToolbarView::PaintContentAreaBackground( paint.setAntiAlias(true); paint.setColor(theme_provider->GetColor(ThemeService::COLOR_TOOLBAR)); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( rect, SkDoubleToScalar(roundness), SkDoubleToScalar(roundness), paint); } @@ -85,7 +85,7 @@ void DetachableToolbarView::PaintContentAreaBorder( border_paint.setAlpha(96); border_paint.setAntiAlias(true); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( rect, SkDoubleToScalar(roundness), SkDoubleToScalar(roundness), border_paint); } @@ -106,7 +106,7 @@ void DetachableToolbarView::PaintVerticalDivider( SkIntToScalar(vertical_padding + 1), SkIntToScalar(x + 1), SkIntToScalar(height / 2) }; - canvas->AsCanvasSkia()->drawRect(rc, paint); + canvas->GetSkCanvas()->drawRect(rc, paint); // Draw the lower half of the divider. SkPaint paint_down; @@ -116,5 +116,5 @@ void DetachableToolbarView::PaintVerticalDivider( SkIntToScalar(height / 2), SkIntToScalar(x + 1), SkIntToScalar(height - vertical_padding) }; - canvas->AsCanvasSkia()->drawRect(rc_down, paint_down); + canvas->GetSkCanvas()->drawRect(rc_down, paint_down); } diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc index 33951dd..b7ffde5 100644 --- a/chrome/browser/ui/views/download/download_item_view.cc +++ b/chrome/browser/ui/views/download/download_item_view.cc @@ -773,7 +773,7 @@ void DownloadItemView::OnPaint(gfx::Canvas* canvas) { if (body_hover_animation_->GetCurrentValue() > 0) { canvas->SaveLayerAlpha( static_cast<int>(body_hover_animation_->GetCurrentValue() * 255)); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); int x = kLeftPadding; PaintBitmaps(canvas, @@ -807,8 +807,8 @@ void DownloadItemView::OnPaint(gfx::Canvas* canvas) { if (drop_hover_animation_->GetCurrentValue() > 0) { canvas->SaveLayerAlpha( static_cast<int>(drop_hover_animation_->GetCurrentValue() * 255)); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, - SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, + SkXfermode::kClear_Mode); PaintBitmaps(canvas, drop_down_image_set->top, drop_down_image_set->center, diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc index 100b5fa..14e1d47 100644 --- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc +++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc @@ -802,7 +802,7 @@ void OpaqueBrowserFrameView::PaintToolbarBackground(gfx::Canvas* canvas) { canvas->SaveLayerAlpha( 255, gfx::Rect(x - kClientEdgeThickness, y, w + kClientEdgeThickness * 3, h)); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); SkColor theme_toolbar_color = tp->GetColor(ThemeService::COLOR_TOOLBAR); diff --git a/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc b/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc index 2716050..06051ddc6 100644 --- a/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc +++ b/chrome/browser/ui/views/fullscreen_exit_bubble_views.cc @@ -96,7 +96,7 @@ void FullscreenExitBubbleViews::FullscreenExitView::OnPaint( paint.setStyle(SkPaint::kFill_Style); paint.setFlags(SkPaint::kAntiAlias_Flag); paint.setColor(SK_ColorBLACK); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } // FullscreenExitBubbleViews --------------------------------------------------- diff --git a/chrome/browser/ui/views/infobars/infobar_background.cc b/chrome/browser/ui/views/infobars/infobar_background.cc index e28e1ac..5822faa 100644 --- a/chrome/browser/ui/views/infobars/infobar_background.cc +++ b/chrome/browser/ui/views/infobars/infobar_background.cc @@ -39,7 +39,7 @@ void InfoBarBackground::Paint(gfx::Canvas* canvas, views::View* view) const { gradient_shader->unref(); InfoBarView* infobar = static_cast<InfoBarView*>(view); - gfx::CanvasSkia* canvas_skia = canvas->AsCanvasSkia(); + SkCanvas* canvas_skia = canvas->GetSkCanvas(); canvas_skia->drawPath(infobar->fill_path(), paint); paint.setShader(NULL); diff --git a/chrome/browser/ui/views/infobars/translate_infobar_base.cc b/chrome/browser/ui/views/infobars/translate_infobar_base.cc index c47ea3c..0e5b896 100644 --- a/chrome/browser/ui/views/infobars/translate_infobar_base.cc +++ b/chrome/browser/ui/views/infobars/translate_infobar_base.cc @@ -130,7 +130,7 @@ void TranslateInfoBarBase::FadeBackground(gfx::Canvas* canvas, // Draw the background into an offscreen buffer with alpha value per animation // value, then blend it back into the current canvas. canvas->SaveLayerAlpha(static_cast<int>(animation_value * 255)); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); background.Paint(canvas, this); canvas->Restore(); } diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc index 4eca62a..11c1835 100644 --- a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc +++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc @@ -202,15 +202,15 @@ void ContentSettingImageView::OnPaintBackground(gfx::Canvas* canvas) { SkSafeUnref(paint.getShader()); SkRect color_rect; color_rect.iset(0, 0, width() - 1, height() - 1); - canvas->AsCanvasSkia()->drawRoundRect(color_rect, kBoxCornerRadius, - kBoxCornerRadius, paint); + canvas->GetSkCanvas()->drawRoundRect(color_rect, kBoxCornerRadius, + kBoxCornerRadius, paint); SkPaint outer_paint; outer_paint.setStyle(SkPaint::kStroke_Style); outer_paint.setColor(kBorderColor); color_rect.inset(SkIntToScalar(kEdgeThickness), SkIntToScalar(kEdgeThickness)); - canvas->AsCanvasSkia()->drawRoundRect(color_rect, kBoxCornerRadius, - kBoxCornerRadius, outer_paint); + canvas->GetSkCanvas()->drawRoundRect(color_rect, kBoxCornerRadius, + kBoxCornerRadius, outer_paint); } void ContentSettingImageView::BubbleClosing(Bubble* bubble, diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index 66fefaa..9eba4ae 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc @@ -744,8 +744,8 @@ void LocationBarView::OnPaint(gfx::Canvas* canvas) { const SkScalar radius(SkIntToScalar( views::BubbleBorder::GetCornerRadius())); bounds.Inset(kNormalHorizontalEdgeThickness, 0); - canvas->AsCanvasSkia()->drawRoundRect(gfx::RectToSkRect(bounds), radius, - radius, paint); + canvas->GetSkCanvas()->drawRoundRect(gfx::RectToSkRect(bounds), radius, + radius, paint); } else { canvas->FillRectInt(color, bounds.x(), bounds.y(), bounds.width(), bounds.height()); diff --git a/chrome/browser/ui/views/notifications/balloon_view.cc b/chrome/browser/ui/views/notifications/balloon_view.cc index 62f3f31..d9ee107 100644 --- a/chrome/browser/ui/views/notifications/balloon_view.cc +++ b/chrome/browser/ui/views/notifications/balloon_view.cc @@ -476,7 +476,7 @@ void BalloonViewImpl::OnPaint(gfx::Canvas* canvas) { SkPaint paint; paint.setAntiAlias(true); paint.setColor(kControlBarBackgroundColor); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); // Draw a 1-pixel gray line between the content and the menu bar. int line_width = GetTotalWidth() - kLeftMargin - kRightMargin; diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc index e5503dc..3f3777b 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc @@ -2275,7 +2275,8 @@ void OmniboxViewWin::DrawSlashForInsecureScheme(HDC hdc, // it to fully transparent so any antialiasing will look nice when painted // atop the edit. gfx::CanvasSkia canvas(scheme_rect.Width(), scheme_rect.Height(), false); - canvas.getDevice()->accessBitmap(true).eraseARGB(0, 0, 0, 0); + SkCanvas* sk_canvas = canvas.sk_canvas(); + sk_canvas->getDevice()->accessBitmap(true).eraseARGB(0, 0, 0, 0); // Calculate the start and end of the stroke, which are just the lower left // and upper right corners of the canvas, inset by the radius of the endcap @@ -2299,26 +2300,26 @@ void OmniboxViewWin::DrawSlashForInsecureScheme(HDC hdc, SkIntToScalar(scheme_rect.Height()) }; // Draw the unselected portion of the stroke. - canvas.save(); + sk_canvas->save(); if (selection_rect.isEmpty() || - canvas.clipRect(selection_rect, SkRegion::kDifference_Op)) { + sk_canvas->clipRect(selection_rect, SkRegion::kDifference_Op)) { paint.setColor(LocationBarView::GetColor(security_level_, LocationBarView::SECURITY_TEXT)); - canvas.drawLine(start_point.fX, start_point.fY, - end_point.fX, end_point.fY, paint); + sk_canvas->drawLine(start_point.fX, start_point.fY, + end_point.fX, end_point.fY, paint); } - canvas.restore(); + sk_canvas->restore(); // Draw the selected portion of the stroke. - if (!selection_rect.isEmpty() && canvas.clipRect(selection_rect)) { + if (!selection_rect.isEmpty() && sk_canvas->clipRect(selection_rect)) { paint.setColor(LocationBarView::GetColor(security_level_, LocationBarView::SELECTED_TEXT)); - canvas.drawLine(start_point.fX, start_point.fY, - end_point.fX, end_point.fY, paint); + sk_canvas->drawLine(start_point.fX, start_point.fY, + end_point.fX, end_point.fY, paint); } // Now copy what we drew to the target HDC. - skia::DrawToNativeContext(&canvas, hdc, + skia::DrawToNativeContext(sk_canvas, hdc, scheme_rect.left + canvas_paint_clip_rect.left - canvas_clip_rect.left, std::max(scheme_rect.top, client_rect.top) + canvas_paint_clip_rect.top - canvas_clip_rect.top, &canvas_paint_clip_rect); diff --git a/chrome/browser/ui/views/status_bubble_views.cc b/chrome/browser/ui/views/status_bubble_views.cc index 3ed7dc2..6940c8f 100644 --- a/chrome/browser/ui/views/status_bubble_views.cc +++ b/chrome/browser/ui/views/status_bubble_views.cc @@ -412,7 +412,7 @@ void StatusBubbleViews::StatusView::OnPaint(gfx::Canvas* canvas) { SkPaint shadow_paint; shadow_paint.setFlags(SkPaint::kAntiAlias_Flag); shadow_paint.setColor(kShadowColor); - canvas->AsCanvasSkia()->drawPath(shadow_path, shadow_paint); + canvas->GetSkCanvas()->drawPath(shadow_path, shadow_paint); // Draw the bubble. rect.set(SkIntToScalar(kShadowThickness), @@ -421,7 +421,7 @@ void StatusBubbleViews::StatusView::OnPaint(gfx::Canvas* canvas) { SkIntToScalar(height - kShadowThickness)); SkPath path; path.addRoundRect(rect, rad, SkPath::kCW_Direction); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); // Draw highlight text and then the text body. In order to make sure the text // is aligned to the right on RTL UIs, we mirror the text bounds if the diff --git a/chrome/browser/ui/views/tabs/dragged_tab_controller.cc b/chrome/browser/ui/views/tabs/dragged_tab_controller.cc index 00d9a5c..96352684 100644 --- a/chrome/browser/ui/views/tabs/dragged_tab_controller.cc +++ b/chrome/browser/ui/views/tabs/dragged_tab_controller.cc @@ -84,7 +84,7 @@ class DockView : public views::View { SkPaint paint; paint.setColor(SkColorSetRGB(108, 108, 108)); paint.setStyle(SkPaint::kFill_Style); - canvas->AsCanvasSkia()->drawRoundRect( + canvas->GetSkCanvas()->drawRoundRect( outer_rect, SkIntToScalar(kRoundedRectRadius), SkIntToScalar(kRoundedRectRadius), paint); diff --git a/chrome/browser/ui/views/tabs/dragged_tab_view.cc b/chrome/browser/ui/views/tabs/dragged_tab_view.cc index 4958632..995a061 100644 --- a/chrome/browser/ui/views/tabs/dragged_tab_view.cc +++ b/chrome/browser/ui/views/tabs/dragged_tab_view.cc @@ -137,7 +137,7 @@ void DraggedTabView::PaintDetachedView(gfx::Canvas* canvas) { gfx::Size ps = GetPreferredSize(); gfx::CanvasSkia scale_canvas(ps.width(), ps.height(), false); SkBitmap& bitmap_device = const_cast<SkBitmap&>( - skia::GetTopDevice(scale_canvas)->accessBitmap(true)); + skia::GetTopDevice(*scale_canvas.sk_canvas())->accessBitmap(true)); bitmap_device.eraseARGB(0, 0, 0, 0); int tab_height = renderer_bounds_.back().height(); @@ -178,7 +178,7 @@ void DraggedTabView::PaintDetachedView(gfx::Canvas* canvas) { rc.fTop = 0; rc.fRight = SkIntToScalar(ps.width()); rc.fBottom = SkIntToScalar(ps.height()); - canvas->AsCanvasSkia()->drawRect(rc, paint); + canvas->GetSkCanvas()->drawRect(rc, paint); } void DraggedTabView::PaintFocusRect(gfx::Canvas* canvas) { diff --git a/chrome/browser/ui/views/tabs/native_view_photobooth_win.cc b/chrome/browser/ui/views/tabs/native_view_photobooth_win.cc index c545d44..550acb8 100644 --- a/chrome/browser/ui/views/tabs/native_view_photobooth_win.cc +++ b/chrome/browser/ui/views/tabs/native_view_photobooth_win.cc @@ -110,7 +110,7 @@ void NativeViewPhotoboothWin::PaintScreenshotIntoCanvas( SRCCOPY); // Windows screws up the alpha channel on all text it draws, and so we need // to call makeOpaque _after_ the blit to correct for this. - skia::MakeOpaque(canvas->AsCanvasSkia(), target_bounds.x(), + skia::MakeOpaque(canvas->GetSkCanvas(), target_bounds.x(), target_bounds.y(), target_bounds.width(), target_bounds.height()); ReleaseDC(current_hwnd_, source_dc); diff --git a/chrome/browser/ui/views/tabs/side_tab.cc b/chrome/browser/ui/views/tabs/side_tab.cc index dd1213a..335d8a9 100644 --- a/chrome/browser/ui/views/tabs/side_tab.cc +++ b/chrome/browser/ui/views/tabs/side_tab.cc @@ -85,10 +85,10 @@ void SideTab::OnPaint(gfx::Canvas* canvas) { paint.setAntiAlias(true); SkRect border_rect = { SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(width()), SkIntToScalar(height()) }; - canvas->AsCanvasSkia()->drawRoundRect(border_rect, - SkIntToScalar(kRoundRectRadius), - SkIntToScalar(kRoundRectRadius), - paint); + canvas->GetSkCanvas()->drawRoundRect(border_rect, + SkIntToScalar(kRoundRectRadius), + SkIntToScalar(kRoundRectRadius), + paint); } if (ShouldShowIcon()) diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc index 5bd6fef..4ab41fe 100644 --- a/chrome/browser/ui/views/tabs/tab.cc +++ b/chrome/browser/ui/views/tabs/tab.cc @@ -359,8 +359,8 @@ void Tab::PaintTabBackground(gfx::Canvas* canvas) { 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->GetSkCanvas()->drawARGB(0, 255, 255, 255, + SkXfermode::kClear_Mode); PaintActiveTabBackground(canvas); canvas->Restore(); } diff --git a/chrome/browser/ui/views/theme_helpers.cc b/chrome/browser/ui/views/theme_helpers.cc index 1708049..e81d875 100644 --- a/chrome/browser/ui/views/theme_helpers.cc +++ b/chrome/browser/ui/views/theme_helpers.cc @@ -31,7 +31,7 @@ void GetRebarGradientColors(int width, int x1, int x2, // On Windows XP+, if using a Theme, we can ask the theme to render the // gradient for us. if (!theme.IsThemeNull()) { - skia::ScopedPlatformPaint scoped_platform_paint(&canvas); + skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas()); HDC dc = scoped_platform_paint.GetPlatformSurface(); RECT rect = { 0, 0, width, 1 }; theme.DrawThemeBackground(dc, 0, 0, &rect, NULL); @@ -56,14 +56,15 @@ void GetRebarGradientColors(int width, int x1, int x2, // the gradient. gradient_shader->unref(); paint.setStyle(SkPaint::kFill_Style); - canvas.drawRectCoords(SkIntToScalar(0), SkIntToScalar(0), - SkIntToScalar(width), SkIntToScalar(1), paint); + canvas.sk_canvas()->drawRectCoords( + SkIntToScalar(0), SkIntToScalar(0), + SkIntToScalar(width), SkIntToScalar(1), paint); } // Extract the color values from the selected pixels // The | in the following operations forces the alpha to 0xFF. This is // needed as windows sets the alpha to 0 when it renders. - SkDevice* device = skia::GetTopDevice(canvas); + SkDevice* device = skia::GetTopDevice(*canvas.sk_canvas()); const SkBitmap& bitmap = device->accessBitmap(false); SkAutoLockPixels lock(bitmap); diff --git a/chrome/browser/ui/views/theme_install_bubble_view.cc b/chrome/browser/ui/views/theme_install_bubble_view.cc index 67c26f7..79c52e3 100644 --- a/chrome/browser/ui/views/theme_install_bubble_view.cc +++ b/chrome/browser/ui/views/theme_install_bubble_view.cc @@ -129,7 +129,7 @@ void ThemeInstallBubbleView::OnPaint(gfx::Canvas* canvas) { SkIntToScalar(height())); SkPath path; path.addRoundRect(rect, rad, SkPath::kCW_Direction); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); int text_width = views::Label::font().GetStringWidth(text_); gfx::Rect body_bounds(kTextHorizPadding / 2, 0, text_width, height()); diff --git a/chrome/common/badge_util.cc b/chrome/common/badge_util.cc index 4649726..3175de8 100644 --- a/chrome/common/badge_util.cc +++ b/chrome/common/badge_util.cc @@ -92,7 +92,8 @@ SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon, // add 'font_size - 1' to the height. SkScalar x = (badge_width - text_width)/2; SkScalar y = (icon.height() - font_size)/2 + font_size - 1; - canvas->drawText(badge_text.c_str(), badge_text.size(), x, y, *paint); + canvas->sk_canvas()->drawText( + badge_text.c_str(), badge_text.size(), x, y, *paint); // Return the generated image. return canvas->ExtractBitmap(); diff --git a/chrome/common/extensions/extension_action.cc b/chrome/common/extensions/extension_action.cc index d9afab8..284da0e 100644 --- a/chrome/common/extensions/extension_action.cc +++ b/chrome/common/extensions/extension_action.cc @@ -159,8 +159,8 @@ void ExtensionAction::PaintBadge(gfx::Canvas* canvas, rect_paint.setStyle(SkPaint::kFill_Style); rect_paint.setAntiAlias(true); rect_paint.setColor(background_color); - canvas->AsCanvasSkia()->drawRoundRect(rect, SkIntToScalar(2), - SkIntToScalar(2), rect_paint); + canvas->GetSkCanvas()->drawRoundRect(rect, SkIntToScalar(2), + SkIntToScalar(2), rect_paint); // Overlay the gradient. It is stretchy, so we do this in three parts. ResourceBundle& resource_bundle = ResourceBundle::GetSharedInstance(); @@ -171,24 +171,24 @@ void ExtensionAction::PaintBadge(gfx::Canvas* canvas, SkBitmap* gradient_center = resource_bundle.GetBitmapNamed( IDR_BROWSER_ACTION_BADGE_CENTER); - canvas->AsCanvasSkia()->drawBitmap(*gradient_left, rect.fLeft, rect.fTop); + canvas->GetSkCanvas()->drawBitmap(*gradient_left, rect.fLeft, rect.fTop); canvas->TileImageInt(*gradient_center, SkScalarFloor(rect.fLeft) + gradient_left->width(), SkScalarFloor(rect.fTop), SkScalarFloor(rect.width()) - gradient_left->width() - gradient_right->width(), SkScalarFloor(rect.height())); - canvas->AsCanvasSkia()->drawBitmap(*gradient_right, + canvas->GetSkCanvas()->drawBitmap(*gradient_right, rect.fRight - SkIntToScalar(gradient_right->width()), rect.fTop); // Finally, draw the text centered within the badge. We set a clip in case the // text was too large. rect.fLeft += kPadding; rect.fRight -= kPadding; - canvas->AsCanvasSkia()->clipRect(rect); - canvas->AsCanvasSkia()->drawText(text.c_str(), text.size(), - rect.fLeft + (rect.width() - text_width) / 2, - rect.fTop + kTextSize + kTopTextPadding, - *text_paint); + canvas->GetSkCanvas()->clipRect(rect); + canvas->GetSkCanvas()->drawText(text.c_str(), text.size(), + rect.fLeft + (rect.width() - text_width) / 2, + rect.fTop + kTextSize + kTopTextPadding, + *text_paint); canvas->Restore(); } diff --git a/content/browser/renderer_host/backing_store_skia.cc b/content/browser/renderer_host/backing_store_skia.cc index 56dfc86..1c04363 100644 --- a/content/browser/renderer_host/backing_store_skia.cc +++ b/content/browser/renderer_host/backing_store_skia.cc @@ -31,7 +31,7 @@ BackingStoreSkia::~BackingStoreSkia() { void BackingStoreSkia::SkiaShowRect(const gfx::Point& point, gfx::Canvas* canvas) { - canvas->AsCanvasSkia()->drawBitmap(bitmap_, + canvas->GetSkCanvas()->drawBitmap(bitmap_, SkIntToScalar(point.x()), SkIntToScalar(point.y())); } diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index 6b9397c..4f74039 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc @@ -431,7 +431,8 @@ TEST_F(RenderWidgetHostTest, Background) { canvas.FillRectInt(SK_ColorWHITE, 2, 0, 2, 2); canvas.FillRectInt(SK_ColorWHITE, 0, 2, 2, 2); canvas.FillRectInt(SK_ColorBLACK, 2, 2, 2, 2); - const SkBitmap& background = canvas.getDevice()->accessBitmap(false); + const SkBitmap& background = + canvas.sk_canvas()->getDevice()->accessBitmap(false); // Set the background and make sure we get back a copy. view->SetBackground(background); diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc index 15beefb..ff9d53f 100644 --- a/content/browser/renderer_host/render_widget_host_view_win.cc +++ b/content/browser/renderer_host/render_widget_host_view_win.cc @@ -162,7 +162,7 @@ void DrawDeemphasized(const SkColor& color, HDC paint_dc) { gfx::CanvasSkia canvas(paint_rect.width(), paint_rect.height(), true); { - skia::ScopedPlatformPaint scoped_platform_paint(&canvas); + skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas()); HDC dc = scoped_platform_paint.GetPlatformSurface(); BitBlt(dc, 0, @@ -175,7 +175,7 @@ void DrawDeemphasized(const SkColor& color, SRCCOPY); } canvas.FillRectInt(color, 0, 0, paint_rect.width(), paint_rect.height()); - skia::DrawToNativeContext(&canvas, paint_dc, paint_rect.x(), + skia::DrawToNativeContext(canvas.sk_canvas(), paint_dc, paint_rect.x(), paint_rect.y(), NULL); } @@ -966,8 +966,8 @@ void RenderWidgetHostViewWin::DrawBackground(const RECT& dirty_rect, dc_rect.right - dc_rect.left, dc_rect.bottom - dc_rect.top); - skia::DrawToNativeContext(&canvas, *dc, dirty_rect.left, dirty_rect.top, - NULL); + skia::DrawToNativeContext(canvas.sk_canvas(), *dc, dirty_rect.left, + dirty_rect.top, NULL); } else { HBRUSH white_brush = reinterpret_cast<HBRUSH>(GetStockObject(WHITE_BRUSH)); dc->FillRect(&dirty_rect, white_brush); diff --git a/skia/ext/canvas_paint_common.h b/skia/ext/canvas_paint_common.h new file mode 100644 index 0000000..6eed3f4 --- /dev/null +++ b/skia/ext/canvas_paint_common.h @@ -0,0 +1,18 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SKIA_EXT_CANVAS_PAINT_COMMON_H_ +#define SKIA_EXT_CANVAS_PAINT_COMMON_H_ +#pragma once + +namespace skia { +class PlatformCanvas; + +template<class T> inline PlatformCanvas* GetPlatformCanvas(T* t) { + return t; +} + +} // namespace skia + +#endif // SKIA_EXT_CANVAS_PAINT_COMMON_H_ diff --git a/skia/ext/canvas_paint_gtk.h b/skia/ext/canvas_paint_gtk.h index fca12ca..ade49af 100644 --- a/skia/ext/canvas_paint_gtk.h +++ b/skia/ext/canvas_paint_gtk.h @@ -8,6 +8,7 @@ #pragma once #include "base/logging.h" +#include "skia/ext/canvas_paint_common.h" #include "skia/ext/platform_canvas.h" #include <gdk/gdk.h> @@ -39,7 +40,7 @@ class CanvasPaintT : public T { virtual ~CanvasPaintT() { if (!is_empty()) { - T::restoreToCount(1); + GetPlatformCanvas(this)->restoreToCount(1); // Blit the dirty rect to the window. CHECK(window_); @@ -83,16 +84,17 @@ class CanvasPaintT : public T { private: void init(bool opaque) { GdkRectangle bounds = rectangle(); - if (!T::initialize(bounds.width, bounds.height, opaque, NULL)) { + PlatformCanvas* canvas = GetPlatformCanvas(this); + if (!canvas->initialize(bounds.width, bounds.height, opaque, NULL)) { // Cause a deliberate crash; CHECK(false); } // Need to translate so that the dirty region appears at the origin of the // surface. - T::translate(-SkIntToScalar(bounds.x), -SkIntToScalar(bounds.y)); + canvas->translate(-SkIntToScalar(bounds.x), -SkIntToScalar(bounds.y)); - context_ = BeginPlatformPaint(this); + context_ = BeginPlatformPaint(canvas); } cairo_t* context_; diff --git a/skia/ext/canvas_paint_mac.h b/skia/ext/canvas_paint_mac.h index c4f45b2..d679116 100644 --- a/skia/ext/canvas_paint_mac.h +++ b/skia/ext/canvas_paint_mac.h @@ -1,5 +1,5 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -7,6 +7,7 @@ #define SKIA_EXT_CANVAS_PAINT_MAC_H_ #pragma once +#include "skia/ext/canvas_paint_common.h" #include "skia/ext/platform_canvas.h" #import <Cocoa/Cocoa.h> @@ -36,7 +37,7 @@ class CanvasPaintT : public T { virtual ~CanvasPaintT() { if (!is_empty()) { - T::restoreToCount(1); + GetPlatformCanvas(this)->restoreToCount(1); // Blit the dirty rect to the current context. CGImageRef image = CGBitmapContextCreateImage(context_); @@ -81,18 +82,20 @@ class CanvasPaintT : public T { private: void init(bool opaque) { - if (!T::initialize(rectangle_.size.width, rectangle_.size.height, - opaque, NULL)) { + PlatformCanvas* canvas = GetPlatformCanvas(this); + if (!canvas->initialize(rectangle_.size.width, + rectangle_.size.height, + opaque, NULL)) { // Cause a deliberate crash; *(volatile char*) 0 = 0; } // Need to translate so that the dirty region appears at the origin of the // surface. - T::translate(-SkDoubleToScalar(rectangle_.origin.x), - -SkDoubleToScalar(rectangle_.origin.y)); + canvas->translate(-SkDoubleToScalar(rectangle_.origin.x), + -SkDoubleToScalar(rectangle_.origin.y)); - context_ = GetBitmapContext(GetTopDevice(*this)); + context_ = GetBitmapContext(GetTopDevice(*canvas)); } CGContext* context_; diff --git a/skia/ext/canvas_paint_wayland.h b/skia/ext/canvas_paint_wayland.h index 2afdb01..eca3665 100644 --- a/skia/ext/canvas_paint_wayland.h +++ b/skia/ext/canvas_paint_wayland.h @@ -7,6 +7,7 @@ #pragma once #include "base/logging.h" +#include "skia/ext/canvas_paint_common.h" #include "skia/ext/platform_canvas.h" namespace skia { @@ -39,7 +40,8 @@ class CanvasPaintT : public T { virtual ~CanvasPaintT() { if (!is_empty()) { - T::restoreToCount(1); + PlatformCanvas* canvas = GetPlatformCanvas(this); + canvas->restoreToCount(1); // Blit the dirty rect to the window. CHECK(cairo_window_surface_); @@ -79,16 +81,17 @@ class CanvasPaintT : public T { private: void init(bool opaque) { - if (!T::initialize(region_->width, region_->height, opaque, NULL)) { + PlatformCanvas* canvas = GetPlatformCanvas(this); + if (!canvas->initialize(region_->width, region_->height, opaque, NULL)) { // Cause a deliberate crash; CHECK(false); } // Need to translate so that the dirty region appears at the origin of the // surface. - T::translate(-SkIntToScalar(region_->x), -SkIntToScalar(region_->y)); + canvas->translate(-SkIntToScalar(region_->x), -SkIntToScalar(region_->y)); - context_ = BeginPlatformPaint(this); + context_ = BeginPlatformPaint(canvas); } cairo_t* context_; diff --git a/skia/ext/canvas_paint_win.h b/skia/ext/canvas_paint_win.h index 5fe22fc..9610025 100644 --- a/skia/ext/canvas_paint_win.h +++ b/skia/ext/canvas_paint_win.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -6,6 +6,7 @@ #define SKIA_EXT_CANVAS_PAINT_WIN_H_ #pragma once +#include "skia/ext/canvas_paint_common.h" #include "skia/ext/platform_canvas.h" namespace skia { @@ -60,9 +61,10 @@ class CanvasPaintT : public T { virtual ~CanvasPaintT() { if (!isEmpty()) { - restoreToCount(1); + PlatformCanvas* canvas = GetPlatformCanvas(this); + canvas->restoreToCount(1); // Commit the drawing to the screen - skia::DrawToNativeContext(this, paint_dc_, ps_.rcPaint.left, + skia::DrawToNativeContext(canvas, paint_dc_, ps_.rcPaint.left, ps_.rcPaint.top, NULL); } if (for_paint_) @@ -100,21 +102,22 @@ class CanvasPaintT : public T { } void init(bool opaque) { + PlatformCanvas* canvas = GetPlatformCanvas(this); // FIXME(brettw) for ClearType, we probably want to expand the bounds of // painting by one pixel so that the boundaries will be correct (ClearType // text can depend on the adjacent pixel). Then we would paint just the // inset pixels to the screen. const int width = ps_.rcPaint.right - ps_.rcPaint.left; const int height = ps_.rcPaint.bottom - ps_.rcPaint.top; - if (!initialize(width, height, opaque, NULL)) { + if (!canvas->initialize(width, height, opaque, NULL)) { // Cause a deliberate crash; *(char*) 0 = 0; } // This will bring the canvas into the screen coordinate system for the // dirty rect - translate(SkIntToScalar(-ps_.rcPaint.left), - SkIntToScalar(-ps_.rcPaint.top)); + canvas->translate(SkIntToScalar(-ps_.rcPaint.left), + SkIntToScalar(-ps_.rcPaint.top)); } // If true, this canvas was created for a BeginPaint. diff --git a/skia/ext/canvas_paint_x.h b/skia/ext/canvas_paint_x.h index a9f51d2..e8e3c68 100644 --- a/skia/ext/canvas_paint_x.h +++ b/skia/ext/canvas_paint_x.h @@ -7,6 +7,7 @@ #pragma once #include "base/logging.h" +#include "skia/ext/canvas_paint_common.h" #include "skia/ext/platform_canvas.h" #include <cairo/cairo.h> @@ -41,7 +42,8 @@ class CanvasPaintT : public T { virtual ~CanvasPaintT() { if (!is_empty()) { - T::restoreToCount(1); + PlatformCanvas* canvas = GetPlatformCanvas(this); + canvas->restoreToCount(1); // Blit the dirty rect to the window. CHECK(cairo_window_surface_); @@ -81,16 +83,18 @@ class CanvasPaintT : public T { private: void init(bool opaque) { - if (!T::initialize(region_->width, region_->height, opaque, NULL)) { + PlatformCanvas* canvas = GetPlatformCanvas(this); + if (!canvas->initialize(region_->width, region_->height, opaque, NULL)) { // Cause a deliberate crash; CHECK(false); } // Need to translate so that the dirty region appears at the origin of the // surface. - T::translate(-SkDoubleToScalar(region_->x), -SkDoubleToScalar(region_->y)); + canvas->translate(-SkDoubleToScalar(region_->x), + -SkDoubleToScalar(region_->y)); - context_ = BeginPlatformPaint(this); + context_ = BeginPlatformPaint(canvas); } cairo_t* context_; diff --git a/ui/aura/demo/demo_main.cc b/ui/aura/demo/demo_main.cc index acd7a78..9bdff64 100644 --- a/ui/aura/demo/demo_main.cc +++ b/ui/aura/demo/demo_main.cc @@ -51,7 +51,7 @@ class DemoWindowDelegate : public aura::WindowDelegate { virtual void OnLostActive() OVERRIDE {} virtual void OnCaptureLost() OVERRIDE {} virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { - canvas->AsCanvasSkia()->drawColor(color_, SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(color_, SkXfermode::kSrc_Mode); } virtual void OnWindowDestroying() OVERRIDE {} virtual void OnWindowDestroyed() OVERRIDE {} diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc index d1c0ac5..600751d 100644 --- a/ui/aura/window_unittest.cc +++ b/ui/aura/window_unittest.cc @@ -162,7 +162,7 @@ class TestWindowDelegate : public WindowDelegateImpl { delete this; } virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { - canvas->AsCanvasSkia()->drawColor(color_, SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(color_, SkXfermode::kSrc_Mode); } private: diff --git a/ui/base/clipboard/clipboard_gtk.cc b/ui/base/clipboard/clipboard_gtk.cc index 46c3b165..439390b 100644 --- a/ui/base/clipboard/clipboard_gtk.cc +++ b/ui/base/clipboard/clipboard_gtk.cc @@ -391,7 +391,7 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const { gdk_pixbuf_get_height(pixbuf.get()), false); { - skia::ScopedPlatformPaint scoped_platform_paint(&canvas); + skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas()); cairo_t* context = scoped_platform_paint.GetPlatformSurface(); gdk_cairo_set_source_pixbuf(context, pixbuf.get(), 0.0, 0.0); cairo_paint(context); diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm index 0437e6a..fc5fbbc 100644 --- a/ui/base/clipboard/clipboard_mac.mm +++ b/ui/base/clipboard/clipboard_mac.mm @@ -258,7 +258,7 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const { gfx::CanvasSkia canvas(width, height, false); { - skia::ScopedPlatformPaint scoped_platform_paint(&canvas); + skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas()); CGContextRef gc = scoped_platform_paint.GetPlatformSurface(); NSGraphicsContext* cocoa_gc = [NSGraphicsContext graphicsContextWithGraphicsPort:gc flipped:NO]; diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc index b86b36c..2191494 100644 --- a/ui/base/clipboard/clipboard_win.cc +++ b/ui/base/clipboard/clipboard_win.cc @@ -490,7 +490,7 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const { gfx::CanvasSkia canvas(bitmap->bmiHeader.biWidth, bitmap->bmiHeader.biHeight, false); { - skia::ScopedPlatformPaint scoped_platform_paint(&canvas); + skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas()); HDC dc = scoped_platform_paint.GetPlatformSurface(); ::SetDIBitsToDevice(dc, 0, 0, bitmap->bmiHeader.biWidth, bitmap->bmiHeader.biHeight, 0, 0, 0, @@ -505,7 +505,8 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const { // we assume the alpha channel contains garbage and force the bitmap to be // opaque as well. Note that this heuristic will fail on a transparent bitmap // containing only black pixels... - const SkBitmap& device_bitmap = canvas.getDevice()->accessBitmap(true); + const SkBitmap& device_bitmap = + canvas.sk_canvas()->getDevice()->accessBitmap(true); { SkAutoLockPixels lock(device_bitmap); bool has_invalid_alpha_channel = bitmap->bmiHeader.biBitCount < 32 || diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc index e787aab..2ac1718 100644 --- a/ui/gfx/canvas.cc +++ b/ui/gfx/canvas.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -14,4 +14,12 @@ const CanvasSkia* Canvas::AsCanvasSkia() const { return NULL; } +SkCanvas* Canvas::GetSkCanvas() { + return NULL; +} + +const SkCanvas* Canvas::GetSkCanvas() const { + return NULL; +} + } // namespace gfx; diff --git a/ui/gfx/canvas.h b/ui/gfx/canvas.h index 5fa067e..38ad3ac 100644 --- a/ui/gfx/canvas.h +++ b/ui/gfx/canvas.h @@ -15,6 +15,8 @@ #include "ui/base/ui_export.h" #include "ui/gfx/native_widget_types.h" +class SkCanvas; + namespace ui { class Transform; @@ -233,6 +235,8 @@ class UI_EXPORT Canvas { // A quick and dirty way to obtain the underlying SkCanvas. virtual CanvasSkia* AsCanvasSkia(); virtual const CanvasSkia* AsCanvasSkia() const; + virtual SkCanvas* GetSkCanvas(); + virtual const SkCanvas* GetSkCanvas() const; }; class UI_EXPORT CanvasPaint { diff --git a/ui/gfx/canvas_skia.cc b/ui/gfx/canvas_skia.cc index 9083d1d..c93dd09 100644 --- a/ui/gfx/canvas_skia.cc +++ b/ui/gfx/canvas_skia.cc @@ -47,6 +47,25 @@ namespace gfx { //////////////////////////////////////////////////////////////////////////////// // CanvasSkia, public: +CanvasSkia::CanvasSkia(int width, int height, bool is_opaque) + : owned_canvas_(new skia::PlatformCanvas(width, height, is_opaque)), + canvas_(owned_canvas_.get()) { +} + +CanvasSkia::CanvasSkia() + : owned_canvas_(new skia::PlatformCanvas()), + canvas_(owned_canvas_.get()) { +} + +CanvasSkia::CanvasSkia(SkCanvas* canvas) + : owned_canvas_(), + canvas_(canvas) { + DCHECK(canvas); +} + +CanvasSkia::~CanvasSkia() { +} + // static int CanvasSkia::DefaultCanvasTextAlignment() { if (!base::i18n::IsRTL()) @@ -55,7 +74,7 @@ int CanvasSkia::DefaultCanvasTextAlignment() { } SkBitmap CanvasSkia::ExtractBitmap() const { - const SkBitmap& device_bitmap = getDevice()->accessBitmap(false); + const SkBitmap& device_bitmap = canvas_->getDevice()->accessBitmap(false); // Make a bitmap to return, and a canvas to draw into it. We don't just want // to call extractSubset or the copy constructor, since we want an actual copy @@ -69,11 +88,11 @@ SkBitmap CanvasSkia::ExtractBitmap() const { // CanvasSkia, Canvas implementation: void CanvasSkia::Save() { - save(); + canvas_->save(); } void CanvasSkia::SaveLayerAlpha(uint8 alpha) { - saveLayerAlpha(NULL, alpha); + canvas_->saveLayerAlpha(NULL, alpha); } @@ -83,26 +102,26 @@ void CanvasSkia::SaveLayerAlpha(uint8 alpha, const gfx::Rect& layer_bounds) { SkIntToScalar(layer_bounds.y()), SkIntToScalar(layer_bounds.right()), SkIntToScalar(layer_bounds.bottom())); - saveLayerAlpha(&bounds, alpha); + canvas_->saveLayerAlpha(&bounds, alpha); } void CanvasSkia::Restore() { - restore(); + canvas_->restore(); } bool CanvasSkia::ClipRectInt(int x, int y, int w, int h) { SkRect new_clip; new_clip.set(SkIntToScalar(x), SkIntToScalar(y), SkIntToScalar(x + w), SkIntToScalar(y + h)); - return clipRect(new_clip); + return canvas_->clipRect(new_clip); } void CanvasSkia::TranslateInt(int x, int y) { - translate(SkIntToScalar(x), SkIntToScalar(y)); + canvas_->translate(SkIntToScalar(x), SkIntToScalar(y)); } void CanvasSkia::ScaleInt(int x, int y) { - scale(SkIntToScalar(x), SkIntToScalar(y)); + canvas_->scale(SkIntToScalar(x), SkIntToScalar(y)); } void CanvasSkia::FillRectInt(const SkColor& color, int x, int y, int w, int h) { @@ -149,7 +168,7 @@ void CanvasSkia::DrawRectInt(const SkColor& color, void CanvasSkia::DrawRectInt(int x, int y, int w, int h, const SkPaint& paint) { SkIRect rc = { x, y, x + w, y + h }; - drawIRect(rc, paint); + canvas_->drawIRect(rc, paint); } void CanvasSkia::DrawLineInt(const SkColor& color, @@ -158,8 +177,8 @@ void CanvasSkia::DrawLineInt(const SkColor& color, SkPaint paint; paint.setColor(color); paint.setStrokeWidth(SkIntToScalar(1)); - drawLine(SkIntToScalar(x1), SkIntToScalar(y1), SkIntToScalar(x2), - SkIntToScalar(y2), paint); + canvas_->drawLine(SkIntToScalar(x1), SkIntToScalar(y1), SkIntToScalar(x2), + SkIntToScalar(y2), paint); } void CanvasSkia::DrawFocusRect(int x, int y, int width, int height) { @@ -207,13 +226,13 @@ void CanvasSkia::DrawFocusRect(int x, int y, int width, int height) { } void CanvasSkia::DrawBitmapInt(const SkBitmap& bitmap, int x, int y) { - drawBitmap(bitmap, SkIntToScalar(x), SkIntToScalar(y)); + canvas_->drawBitmap(bitmap, SkIntToScalar(x), SkIntToScalar(y)); } void CanvasSkia::DrawBitmapInt(const SkBitmap& bitmap, int x, int y, const SkPaint& paint) { - drawBitmap(bitmap, SkIntToScalar(x), SkIntToScalar(y), &paint); + canvas_->drawBitmap(bitmap, SkIntToScalar(x), SkIntToScalar(y), &paint); } void CanvasSkia::DrawBitmapInt(const SkBitmap& bitmap, @@ -249,7 +268,7 @@ void CanvasSkia::DrawBitmapInt(const SkBitmap& bitmap, // Workaround for apparent bug in Skia that causes image to occasionally // shift. SkIRect src_rect = { src_x, src_y, src_x + src_w, src_y + src_h }; - drawBitmapRect(bitmap, &src_rect, dest_rect, &paint); + canvas_->drawBitmapRect(bitmap, &src_rect, dest_rect, &paint); return; } @@ -275,7 +294,7 @@ void CanvasSkia::DrawBitmapInt(const SkBitmap& bitmap, shader->unref(); // The rect will be filled by the bitmap. - drawRect(dest_rect, p); + canvas_->drawRect(dest_rect, p); } void CanvasSkia::DrawStringInt(const string16& text, @@ -316,24 +335,25 @@ void CanvasSkia::TileImageInt(const SkBitmap& bitmap, // CreateBitmapShader returns a Shader with a reference count of one, we // need to unref after paint takes ownership of the shader. shader->unref(); - save(); - translate(SkIntToScalar(dest_x - src_x), SkIntToScalar(dest_y - src_y)); + canvas_->save(); + canvas_->translate(SkIntToScalar(dest_x - src_x), + SkIntToScalar(dest_y - src_y)); ClipRectInt(src_x, src_y, w, h); - drawPaint(paint); - restore(); + canvas_->drawPaint(paint); + canvas_->restore(); } gfx::NativeDrawingContext CanvasSkia::BeginPlatformPaint() { - return skia::BeginPlatformPaint(this); + return skia::BeginPlatformPaint(canvas_); } void CanvasSkia::EndPlatformPaint() { - skia::EndPlatformPaint(this); + skia::EndPlatformPaint(canvas_); } #if !defined(OS_MACOSX) void CanvasSkia::Transform(const ui::Transform& transform) { - concat(transform.matrix()); + canvas_->concat(transform.matrix()); } #endif @@ -345,12 +365,20 @@ const CanvasSkia* CanvasSkia::AsCanvasSkia() const { return this; } +SkCanvas* CanvasSkia::GetSkCanvas() { + return canvas_; +} + +const SkCanvas* CanvasSkia::GetSkCanvas() const { + return canvas_; +} + //////////////////////////////////////////////////////////////////////////////// // CanvasSkia, private: bool CanvasSkia::IntersectsClipRectInt(int x, int y, int w, int h) { SkRect clip; - return getClipBounds(&clip) && + return canvas_->getClipBounds(&clip) && clip.intersect(SkIntToScalar(x), SkIntToScalar(y), SkIntToScalar(x + w), SkIntToScalar(y + h)); } diff --git a/ui/gfx/canvas_skia.h b/ui/gfx/canvas_skia.h index e7ec18b..b315af9 100644 --- a/ui/gfx/canvas_skia.h +++ b/ui/gfx/canvas_skia.h @@ -7,6 +7,7 @@ #pragma once #include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" #include "base/string16.h" #include "skia/ext/platform_canvas.h" #include "ui/gfx/canvas.h" @@ -34,7 +35,7 @@ class Canvas; // source and destination colors are combined. Unless otherwise specified, // the variant that does not take a SkXfermode::Mode uses a transfer mode // of kSrcOver_Mode. -class UI_EXPORT CanvasSkia : public skia::PlatformCanvas, public Canvas { +class UI_EXPORT CanvasSkia : public Canvas { public: enum TruncateFadeMode { TruncateFadeTail, @@ -47,6 +48,7 @@ class UI_EXPORT CanvasSkia : public skia::PlatformCanvas, public Canvas { CanvasSkia(); CanvasSkia(int width, int height, bool is_opaque); + explicit CanvasSkia(SkCanvas* canvas); virtual ~CanvasSkia(); @@ -163,6 +165,10 @@ class UI_EXPORT CanvasSkia : public skia::PlatformCanvas, public Canvas { virtual ui::TextureID GetTextureID(); virtual CanvasSkia* AsCanvasSkia(); virtual const CanvasSkia* AsCanvasSkia() const; + virtual SkCanvas* GetSkCanvas(); + virtual const SkCanvas* GetSkCanvas() const; + SkCanvas* sk_canvas() const { return canvas_; } + skia::PlatformCanvas* platform_canvas() const { return owned_canvas_.get(); } private: // Test whether the provided rectangle intersects the current clip rect. @@ -179,6 +185,8 @@ class UI_EXPORT CanvasSkia : public skia::PlatformCanvas, public Canvas { int flags); #endif + scoped_ptr<skia::PlatformCanvas> owned_canvas_; + SkCanvas* canvas_; DISALLOW_COPY_AND_ASSIGN(CanvasSkia); }; diff --git a/ui/gfx/canvas_skia_linux.cc b/ui/gfx/canvas_skia_linux.cc index 882b381..8101dfa 100644 --- a/ui/gfx/canvas_skia_linux.cc +++ b/ui/gfx/canvas_skia_linux.cc @@ -93,7 +93,7 @@ DrawStringContext::DrawStringContext(gfx::CanvasSkia* canvas, text_direction_(base::i18n::GetFirstStrongCharacterDirection(text)) { DCHECK(!bounds_.IsEmpty()); - cr_ = skia::BeginPlatformPaint(canvas_); + cr_ = skia::BeginPlatformPaint(canvas_->sk_canvas()); layout_ = pango_cairo_create_layout(cr_); gfx::SetupPangoLayout( @@ -120,7 +120,7 @@ DrawStringContext::DrawStringContext(gfx::CanvasSkia* canvas, DrawStringContext::~DrawStringContext() { cairo_restore(cr_); - skia::EndPlatformPaint(canvas_); + skia::EndPlatformPaint(canvas_->sk_canvas()); g_object_unref(layout_); // NOTE: BeginPlatformPaint returned its surface, we shouldn't destroy it. } @@ -176,7 +176,7 @@ void DrawStringContext::DrawWithHalo(const SkColor& text_color, 0, 0, bounds_.width() + 2, bounds_.height() + 2); { - skia::ScopedPlatformPaint scoped_platform_paint(&text_canvas); + skia::ScopedPlatformPaint scoped_platform_paint(text_canvas.sk_canvas()); cairo_t* text_cr = scoped_platform_paint.GetPlatformSurface(); // TODO: The current approach (stroking the text path to generate the halo @@ -216,7 +216,7 @@ void DrawStringContext::DrawWithHalo(const SkColor& text_color, } const SkBitmap& text_bitmap = const_cast<SkBitmap&>( - skia::GetTopDevice(text_canvas)->accessBitmap(false)); + skia::GetTopDevice(*text_canvas.sk_canvas())->accessBitmap(false)); canvas_->DrawBitmapInt(text_bitmap, text_x_ - 1, text_y_ - 1); } @@ -237,16 +237,6 @@ void DrawStringContext::DrawUnderline(cairo_t* cr, double extra_edge_width) { namespace gfx { -CanvasSkia::CanvasSkia(int width, int height, bool is_opaque) - : skia::PlatformCanvas(width, height, is_opaque) { -} - -CanvasSkia::CanvasSkia() : skia::PlatformCanvas() { -} - -CanvasSkia::~CanvasSkia() { -} - // static void CanvasSkia::SizeStringInt(const string16& text, const gfx::Font& font, @@ -338,7 +328,7 @@ void CanvasSkia::DrawGdkPixbuf(GdkPixbuf* pixbuf, int x, int y) { return; } - skia::ScopedPlatformPaint scoped_platform_paint(this); + skia::ScopedPlatformPaint scoped_platform_paint(canvas_); cairo_t* cr = scoped_platform_paint.GetPlatformSurface(); gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y); cairo_paint(cr); diff --git a/ui/gfx/canvas_skia_mac.mm b/ui/gfx/canvas_skia_mac.mm index 6d40d0c..a20f92a 100644 --- a/ui/gfx/canvas_skia_mac.mm +++ b/ui/gfx/canvas_skia_mac.mm @@ -15,16 +15,6 @@ namespace gfx { -CanvasSkia::CanvasSkia(int width, int height, bool is_opaque) - : skia::PlatformCanvas(width, height, is_opaque) { -} - -CanvasSkia::CanvasSkia() : skia::PlatformCanvas() { -} - -CanvasSkia::~CanvasSkia() { -} - // static void CanvasSkia::SizeStringInt(const string16& text, const gfx::Font& font, @@ -48,7 +38,7 @@ void CanvasSkia::DrawStringInt(const string16& text, if (!IntersectsClipRectInt(x, y, w, h)) return; - skia::ScopedPlatformPaint scoped_platform_paint(this); + skia::ScopedPlatformPaint scoped_platform_paint(canvas_); CGContextRef context = scoped_platform_paint.GetPlatformSurface(); CGContextSaveGState(context); diff --git a/ui/gfx/canvas_skia_paint.h b/ui/gfx/canvas_skia_paint.h index 1d67b37..9d1ce8a 100644 --- a/ui/gfx/canvas_skia_paint.h +++ b/ui/gfx/canvas_skia_paint.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,6 +12,17 @@ // Define a gfx::CanvasSkiaPaint type that wraps our gfx::Canvas like the // skia::PlatformCanvasPaint wraps PlatformCanvas. +namespace skia { + +template<> inline +PlatformCanvas* GetPlatformCanvas(skia::CanvasPaintT<gfx::CanvasSkia>* canvas) { + PlatformCanvas* platform_canvas = canvas->platform_canvas(); + DCHECK(platform_canvas); + return platform_canvas; +} + +} // namespace skia + namespace gfx { typedef skia::CanvasPaintT<CanvasSkia> CanvasSkiaPaint; diff --git a/ui/gfx/canvas_skia_win.cc b/ui/gfx/canvas_skia_win.cc index e71fefd..07c08d5 100644 --- a/ui/gfx/canvas_skia_win.cc +++ b/ui/gfx/canvas_skia_win.cc @@ -281,16 +281,6 @@ void DivideRect(const gfx::Rect& rect, namespace gfx { -CanvasSkia::CanvasSkia(int width, int height, bool is_opaque) - : skia::PlatformCanvas(width, height, is_opaque) { -} - -CanvasSkia::CanvasSkia() : skia::PlatformCanvas() { -} - -CanvasSkia::~CanvasSkia() { -} - // static void CanvasSkia::SizeStringInt(const string16& text, const gfx::Font& font, @@ -336,7 +326,7 @@ void CanvasSkia::DrawStringInt(const string16& text, int x, int y, int w, int h, int flags) { SkRect fclip; - if (!getClipBounds(&fclip)) + if (!canvas_->getClipBounds(&fclip)) return; RECT text_bounds = { x, y, x + w, y + h }; SkIRect clip; @@ -354,7 +344,7 @@ void CanvasSkia::DrawStringInt(const string16& text, HDC dc; HFONT old_font; { - skia::ScopedPlatformPaint scoped_platform_paint(this); + skia::ScopedPlatformPaint scoped_platform_paint(canvas_); dc = scoped_platform_paint.GetPlatformSurface(); SetBkMode(dc, TRANSPARENT); old_font = (HFONT)SelectObject(dc, font); @@ -373,7 +363,7 @@ void CanvasSkia::DrawStringInt(const string16& text, // Windows will have cleared the alpha channel of the text we drew. Assume // we're drawing to an opaque surface, or at least the text rect area is // opaque. - skia::MakeOpaque(this, clip.fLeft, clip.fTop, clip.width(), + skia::MakeOpaque(canvas_, clip.fLeft, clip.fTop, clip.width(), clip.height()); } @@ -438,11 +428,11 @@ void CanvasSkia::DrawStringWithHalo(const string16& text, // opaque. We have to do this first since pixelShouldGetHalo will check for // 0 to see if a pixel has been modified to transparent, and black text that // Windows draw will look transparent to it! - skia::MakeOpaque(&text_canvas, 0, 0, w + 2, h + 2); + skia::MakeOpaque(text_canvas.sk_canvas(), 0, 0, w + 2, h + 2); uint32_t halo_premul = SkPreMultiplyColor(halo_color); SkBitmap& text_bitmap = const_cast<SkBitmap&>( - skia::GetTopDevice(text_canvas)->accessBitmap(true)); + skia::GetTopDevice(*text_canvas.sk_canvas())->accessBitmap(true)); for (int cur_y = 0; cur_y < h + 2; cur_y++) { uint32_t* text_row = text_bitmap.getAddr32(0, cur_y); for (int cur_x = 0; cur_x < w + 2; cur_x++) { @@ -541,7 +531,7 @@ void CanvasSkia::DrawFadeTruncatingString( // Move the origin to |display_rect.origin()|. This simplifies all the // drawing so that both the source and destination can be (0,0). - save(kMatrix_SaveFlag); + canvas_->save(SkCanvas::kMatrix_SaveFlag); TranslateInt(display_rect.x(), display_rect.y()); gfx::Rect solid_part(gfx::Point(), display_rect.size()); @@ -565,7 +555,7 @@ void CanvasSkia::DrawFadeTruncatingString( display_rect.width(), display_rect.height(), false)); { - skia::ScopedPlatformPaint scoped_platform_paint(this); + skia::ScopedPlatformPaint scoped_platform_paint(canvas_); HDC hdc = scoped_platform_paint.GetPlatformSurface(); if (is_truncating_head) DrawTextGradientPart(hdc, gradient_canvas.get(), text, color, @@ -578,15 +568,15 @@ void CanvasSkia::DrawFadeTruncatingString( } // Draw the solid part. - save(kClip_SaveFlag); + canvas_->save(SkCanvas::kClip_SaveFlag); ClipRectInt(solid_part.x(), solid_part.y(), solid_part.width(), solid_part.height()); DrawStringInt(text, font, color, text_rect.x(), text_rect.y(), text_rect.width(), text_rect.height(), flags); - restore(); - restore(); + canvas_->restore(); + canvas_->restore(); } } // namespace gfx diff --git a/ui/gfx/compositor/layer.cc b/ui/gfx/compositor/layer.cc index e0a3a3a..af3514fc 100644 --- a/ui/gfx/compositor/layer.cc +++ b/ui/gfx/compositor/layer.cc @@ -293,7 +293,7 @@ void Layer::UpdateLayerCanvas() { draw_rect.width(), draw_rect.height(), false)); canvas->TranslateInt(-draw_rect.x(), -draw_rect.y()); delegate_->OnPaintLayer(canvas.get()); - SetCanvas(*canvas->AsCanvasSkia(), draw_rect.origin()); + SetCanvas(*canvas->GetSkCanvas(), draw_rect.origin()); } void Layer::RecomputeHole() { diff --git a/ui/gfx/compositor/layer_unittest.cc b/ui/gfx/compositor/layer_unittest.cc index 0c839dd..df9405f 100644 --- a/ui/gfx/compositor/layer_unittest.cc +++ b/ui/gfx/compositor/layer_unittest.cc @@ -71,7 +71,7 @@ class LayerWithRealCompositorTest : public testing::Test { scoped_ptr<gfx::Canvas> canvas(CreateCanvasForLayer(layer)); canvas->FillRectInt(color, 0, 0, layer->bounds().width(), layer->bounds().height()); - layer->SetCanvas(*canvas->AsCanvasSkia(), layer->bounds().origin()); + layer->SetCanvas(*canvas->GetSkCanvas(), layer->bounds().origin()); } void DrawTree(Layer* root) { @@ -238,7 +238,7 @@ class LayerWithDelegateTest : public testing::Test { scoped_ptr<gfx::Canvas> canvas(CreateCanvasForLayer(layer)); canvas->FillRectInt(color, 0, 0, layer->bounds().width(), layer->bounds().height()); - layer->SetCanvas(*canvas->AsCanvasSkia(), layer->bounds().origin()); + layer->SetCanvas(canvas->GetSkCanvas(), layer->bounds().origin()); } void DrawTree(Layer* root) { diff --git a/ui/gfx/render_text.cc b/ui/gfx/render_text.cc index 5de4260..001b4b2 100644 --- a/ui/gfx/render_text.cc +++ b/ui/gfx/render_text.cc @@ -352,11 +352,11 @@ void RenderText::Draw(Canvas* canvas) { paint.setStyle(SkPaint::kFill_Style); paint.setColor(i->foreground); paint.setStrokeWidth(kStrikeWidth); - canvas->AsCanvasSkia()->drawLine(SkIntToScalar(bounds.x()), - SkIntToScalar(bounds.bottom()), - SkIntToScalar(bounds.right()), - SkIntToScalar(bounds.y()), - paint); + canvas->GetSkCanvas()->drawLine(SkIntToScalar(bounds.x()), + SkIntToScalar(bounds.bottom()), + SkIntToScalar(bounds.right()), + SkIntToScalar(bounds.y()), + paint); } bounds.set_x(bounds.x() + bounds.width()); diff --git a/ui/gfx/render_text_linux.cc b/ui/gfx/render_text_linux.cc index d744a94..92af95e 100644 --- a/ui/gfx/render_text_linux.cc +++ b/ui/gfx/render_text_linux.cc @@ -94,7 +94,7 @@ void RenderTextLinux::Draw(Canvas* canvas) { Rect bounds(display_rect()); // Clip the canvas to the text display area. - CanvasSkia* canvas_skia = canvas->AsCanvasSkia(); + SkCanvas* canvas_skia = canvas->GetSkCanvas(); skia::ScopedPlatformPaint scoped_platform_paint(canvas_skia); cairo_t* cr = scoped_platform_paint.GetPlatformSurface(); @@ -498,7 +498,7 @@ SelectionModel RenderTextLinux::RightSelectionModelByWord( PangoLayout* RenderTextLinux::EnsureLayout() { if (layout_ == NULL) { CanvasSkia canvas(display_rect().width(), display_rect().height(), false); - skia::ScopedPlatformPaint scoped_platform_paint(&canvas); + skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas()); cairo_t* cr = scoped_platform_paint.GetPlatformSurface(); layout_ = pango_cairo_create_layout(cr); diff --git a/ui/gfx/render_text_win.cc b/ui/gfx/render_text_win.cc index f6b983d..114a963 100644 --- a/ui/gfx/render_text_win.cc +++ b/ui/gfx/render_text_win.cc @@ -100,7 +100,7 @@ int RenderTextWin::GetStringWidth() { } void RenderTextWin::Draw(Canvas* canvas) { - skia::ScopedPlatformPaint scoped_platform_paint(canvas->AsCanvasSkia()); + skia::ScopedPlatformPaint scoped_platform_paint(canvas->GetSkCanvas()); HDC hdc = scoped_platform_paint.GetPlatformSurface(); int saved_dc = SaveDC(hdc); DrawSelection(canvas); @@ -590,7 +590,7 @@ void RenderTextWin::DrawVisualText(Canvas* canvas) { if (text().empty()) return; - CanvasSkia* canvas_skia = canvas->AsCanvasSkia(); + SkCanvas* canvas_skia = canvas->GetSkCanvas(); skia::ScopedPlatformPaint scoped_platform_paint(canvas_skia); Point offset(ToViewPoint(Point())); @@ -645,11 +645,11 @@ void RenderTextWin::DrawVisualText(Canvas* canvas) { strike.setStyle(SkPaint::kFill_Style); strike.setColor(run->foreground); strike.setStrokeWidth(kStrikeWidth); - canvas->AsCanvasSkia()->drawLine(SkIntToScalar(bounds.x()), - SkIntToScalar(bounds.bottom()), - SkIntToScalar(bounds.right()), - SkIntToScalar(bounds.y()), - strike); + canvas->GetSkCanvas()->drawLine(SkIntToScalar(bounds.x()), + SkIntToScalar(bounds.bottom()), + SkIntToScalar(bounds.right()), + SkIntToScalar(bounds.y()), + strike); } offset.Offset(run->width, 0); } diff --git a/views/aura_desktop/aura_desktop_main.cc b/views/aura_desktop/aura_desktop_main.cc index 2cd2bc6..3516f2a 100644 --- a/views/aura_desktop/aura_desktop_main.cc +++ b/views/aura_desktop/aura_desktop_main.cc @@ -56,7 +56,7 @@ class DemoWindowDelegate : public aura::WindowDelegate { virtual void OnLostActive() OVERRIDE {} virtual void OnCaptureLost() OVERRIDE {} virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { - canvas->AsCanvasSkia()->drawColor(color_, SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(color_, SkXfermode::kSrc_Mode); } virtual void OnWindowDestroying() OVERRIDE { } diff --git a/views/background.cc b/views/background.cc index f9eb2135..fa79793 100644 --- a/views/background.cc +++ b/views/background.cc @@ -25,7 +25,7 @@ class SolidBackground : public Background { void Paint(gfx::Canvas* canvas, View* view) const { // Fill the background. Note that we don't constrain to the bounds as // canvas is already clipped for us. - canvas->AsCanvasSkia()->drawColor(get_color()); + canvas->GetSkCanvas()->drawColor(get_color()); } private: diff --git a/views/bubble/bubble_border.cc b/views/bubble/bubble_border.cc index 80e1bc8..871e669 100644 --- a/views/bubble/bubble_border.cc +++ b/views/bubble/bubble_border.cc @@ -423,7 +423,7 @@ void BubbleBorder::DrawArrowInterior(gfx::Canvas* canvas, else path.lineTo(SkIntToScalar(tip_x + shift_x), SkIntToScalar(tip_y - shift_y)); path.close(); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } ///////////////////////// @@ -444,7 +444,7 @@ void BubbleBackground::Paint(gfx::Canvas* canvas, views::View* view) const { SkIntToScalar(bounds.right()), SkIntToScalar(bounds.bottom())); SkScalar radius = SkIntToScalar(BubbleBorder::GetCornerRadius()); path.addRoundRect(rect, radius, radius); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } } // namespace views diff --git a/views/controls/button/text_button.cc b/views/controls/button/text_button.cc index 5dc5787..bd1ad86 100644 --- a/views/controls/button/text_button.cc +++ b/views/controls/button/text_button.cc @@ -141,8 +141,8 @@ void TextButtonBorder::Paint(const View& view, gfx::Canvas* canvas) const { // handle the case of having a non-NULL |normal_set_|. canvas->SaveLayerAlpha(static_cast<uint8>( button->GetAnimation()->CurrentValueBetween(0, 255))); - canvas->AsCanvasSkia()->drawARGB(0, 255, 255, 255, - SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, + SkXfermode::kClear_Mode); Paint(view, canvas, *set); canvas->Restore(); } else { @@ -213,7 +213,6 @@ void TextButtonNativeThemeBorder::Paint(const View& view, const TextButtonBase* tb = static_cast<const TextButton*>(&view); const gfx::NativeTheme* native_theme = gfx::NativeTheme::instance(); gfx::NativeTheme::Part part = delegate_->GetThemePart(); - gfx::CanvasSkia* skia_canvas = canvas->AsCanvasSkia(); gfx::Rect rect(delegate_->GetThemePaintRect()); if (tb->show_multiple_icon_states() && @@ -223,19 +222,20 @@ void TextButtonNativeThemeBorder::Paint(const View& view, gfx::NativeTheme::ExtraParams prev_extra; gfx::NativeTheme::State prev_state = delegate_->GetBackgroundThemeState(&prev_extra); - native_theme->Paint(skia_canvas, part, prev_state, rect, prev_extra); + native_theme->Paint( + canvas->GetSkCanvas(), part, prev_state, rect, prev_extra); // Composite foreground state above it. gfx::NativeTheme::ExtraParams extra; gfx::NativeTheme::State state = delegate_->GetForegroundThemeState(&extra); int alpha = delegate_->GetThemeAnimation()->CurrentValueBetween(0, 255); - skia_canvas->SaveLayerAlpha(static_cast<uint8>(alpha)); - native_theme->Paint(skia_canvas, part, state, rect, extra); - skia_canvas->Restore(); + canvas->SaveLayerAlpha(static_cast<uint8>(alpha)); + native_theme->Paint(canvas->GetSkCanvas(), part, state, rect, extra); + canvas->Restore(); } else { gfx::NativeTheme::ExtraParams extra; gfx::NativeTheme::State state = delegate_->GetThemeState(&extra); - native_theme->Paint(skia_canvas, part, state, rect, extra); + native_theme->Paint(canvas->GetSkCanvas(), part, state, rect, extra); } } diff --git a/views/controls/combobox/native_combobox_views.cc b/views/controls/combobox/native_combobox_views.cc index 132d63b..ab676d1 100644 --- a/views/controls/combobox/native_combobox_views.cc +++ b/views/controls/combobox/native_combobox_views.cc @@ -294,7 +294,7 @@ void NativeComboboxViews::DrawArrow(gfx::Canvas* canvas, path.lineTo(SkIntToScalar(tip_x + shift_x), SkIntToScalar(tip_y + shift_y)); path.lineTo(SkIntToScalar(tip_x - shift_x), SkIntToScalar(tip_y + shift_y)); path.close(); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } diff --git a/views/controls/focusable_border.cc b/views/controls/focusable_border.cc index 8c5e6b6..a1aa667 100644 --- a/views/controls/focusable_border.cc +++ b/views/controls/focusable_border.cc @@ -60,7 +60,7 @@ void FocusableBorder::Paint(const View& view, gfx::Canvas* canvas) const { paint.setColor(has_focus_ ? kFocusedBorderColor : kDefaultBorderColor); paint.setStrokeWidth(SkIntToScalar(has_focus_ ? 2 : 1)); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } void FocusableBorder::GetInsets(gfx::Insets* insets) const { diff --git a/views/controls/menu/menu_image_util_linux.cc b/views/controls/menu/menu_image_util_linux.cc index b2f5d97..f3e3e3a 100644 --- a/views/controls/menu/menu_image_util_linux.cc +++ b/views/controls/menu/menu_image_util_linux.cc @@ -47,13 +47,13 @@ SkBitmap* CreateRadioButtonImage(bool selected) { paint.setShader(shader); shader->unref(); int radius = kIndicatorSize / 2; - canvas.drawCircle(radius, radius, radius, paint); + canvas.sk_canvas()->drawCircle(radius, radius, radius, paint); paint.setStrokeWidth(SkIntToScalar(0)); paint.setShader(NULL); paint.setStyle(SkPaint::kStroke_Style); paint.setColor(kBaseStroke); - canvas.drawCircle(radius, radius, radius, paint); + canvas.sk_canvas()->drawCircle(radius, radius, radius, paint); if (selected) { SkPoint selected_gradient_points[2]; @@ -69,15 +69,15 @@ SkBitmap* CreateRadioButtonImage(bool selected) { paint.setShader(shader); shader->unref(); paint.setStyle(SkPaint::kFill_Style); - canvas.drawCircle(radius, radius, - kSelectedIndicatorSize / 2, paint); + canvas.sk_canvas()->drawCircle(radius, radius, + kSelectedIndicatorSize / 2, paint); paint.setStrokeWidth(SkIntToScalar(0)); paint.setShader(NULL); paint.setStyle(SkPaint::kStroke_Style); paint.setColor(kIndicatorStroke); - canvas.drawCircle(radius, radius, - kSelectedIndicatorSize / 2, paint); + canvas.sk_canvas()->drawCircle(radius, radius, + kSelectedIndicatorSize / 2, paint); } return new SkBitmap(canvas.ExtractBitmap()); } diff --git a/views/controls/menu/menu_item_view_linux.cc b/views/controls/menu/menu_item_view_linux.cc index c64e320..2b04004 100644 --- a/views/controls/menu/menu_item_view_linux.cc +++ b/views/controls/menu/menu_item_view_linux.cc @@ -68,8 +68,8 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { // only need the background when we want it to look different, as when we're // selected. if (render_selection) - canvas->AsCanvasSkia()->drawColor(kSelectedBackgroundColor, - SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(kSelectedBackgroundColor, + SkXfermode::kSrc_Mode); // Render the check. if (type_ == CHECKBOX && GetDelegate()->IsItemChecked(GetCommand())) { diff --git a/views/controls/menu/menu_item_view_win.cc b/views/controls/menu/menu_item_view_win.cc index cea5c4c..9e04cdc 100644 --- a/views/controls/menu/menu_item_view_win.cc +++ b/views/controls/menu/menu_item_view_win.cc @@ -66,7 +66,7 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { height()); AdjustBoundsForRTLUI(&gutter_bounds); NativeTheme::ExtraParams extra; - NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + NativeTheme::instance()->Paint(canvas->GetSkCanvas(), NativeTheme::kMenuPopupGutter, NativeTheme::kNormal, gutter_bounds, @@ -79,7 +79,7 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { NativeTheme::ExtraParams extra; extra.menu_item.is_selected = render_selection; AdjustBoundsForRTLUI(&item_bounds); - NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + NativeTheme::instance()->Paint(canvas->GetSkCanvas(), NativeTheme::kMenuItemBackground, control_state, item_bounds, extra); } @@ -144,7 +144,7 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { gfx::NativeTheme::ExtraParams extra; extra.menu_arrow.pointing_right = !base::i18n::IsRTL(); extra.menu_arrow.is_selected = render_selection; - gfx::NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + gfx::NativeTheme::instance()->Paint(canvas->GetSkCanvas(), gfx::NativeTheme::kMenuPopupArrow, control_state, arrow_bounds, extra); } } @@ -174,13 +174,13 @@ void MenuItemView::PaintCheck(gfx::Canvas* canvas, // Draw the background. gfx::Rect bg_bounds(0, 0, icon_x + icon_width, height()); AdjustBoundsForRTLUI(&bg_bounds); - NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + NativeTheme::instance()->Paint(canvas->GetSkCanvas(), NativeTheme::kMenuCheckBackground, state, bg_bounds, extra); // And the check. gfx::Rect icon_bounds(icon_x / 2, icon_y, icon_width, icon_height); AdjustBoundsForRTLUI(&icon_bounds); - NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + NativeTheme::instance()->Paint(canvas->GetSkCanvas(), NativeTheme::kMenuCheck, state, bg_bounds, extra); } diff --git a/views/controls/menu/menu_scroll_view_container.cc b/views/controls/menu/menu_scroll_view_container.cc index 1d3fcdd..cb52b41 100644 --- a/views/controls/menu/menu_scroll_view_container.cc +++ b/views/controls/menu/menu_scroll_view_container.cc @@ -86,7 +86,7 @@ class MenuScrollButton : public View { gfx::Rect item_bounds(0, 0, width(), height()); NativeTheme::ExtraParams extra; extra.menu_item.is_selected = false; - NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + NativeTheme::instance()->Paint(canvas->GetSkCanvas(), NativeTheme::kMenuItemBackground, NativeTheme::kNormal, item_bounds, extra); SkColor arrow_color = color_utils::GetSysSkColor(COLOR_MENUTEXT); @@ -186,7 +186,7 @@ void MenuScrollViewContainer::OnPaintBackground(gfx::Canvas* canvas) { HDC dc = canvas->BeginPlatformPaint(); gfx::Rect bounds(0, 0, width(), height()); NativeTheme::ExtraParams extra; - NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + NativeTheme::instance()->Paint(canvas->GetSkCanvas(), NativeTheme::kMenuPopupBackground, NativeTheme::kNormal, bounds, extra); canvas->EndPlatformPaint(); #elif defined(OS_CHROMEOS) @@ -219,8 +219,8 @@ void MenuScrollViewContainer::OnPaintBackground(gfx::Canvas* canvas) { canvas->DrawRectInt(0, 0, width(), height(), paint); #else // This is the same as COLOR_TOOLBAR. - canvas->AsCanvasSkia()->drawColor(SkColorSetRGB(210, 225, 246), - SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(SkColorSetRGB(210, 225, 246), + SkXfermode::kSrc_Mode); #endif } diff --git a/views/controls/menu/menu_separator_win.cc b/views/controls/menu/menu_separator_win.cc index e089149..01acaa8 100644 --- a/views/controls/menu/menu_separator_win.cc +++ b/views/controls/menu/menu_separator_win.cc @@ -28,7 +28,7 @@ void MenuSeparator::OnPaint(gfx::Canvas* canvas) { config.gutter_to_label - config.gutter_width, 0, config.gutter_width, height()); gfx::NativeTheme::ExtraParams extra; - theme->Paint(canvas->AsCanvasSkia(), gfx::NativeTheme::kMenuPopupGutter, + theme->Paint(canvas->GetSkCanvas(), gfx::NativeTheme::kMenuPopupGutter, gfx::NativeTheme::kNormal, gutter_bounds, extra); start_x = gutter_bounds.x() + config.gutter_width; } @@ -36,7 +36,7 @@ void MenuSeparator::OnPaint(gfx::Canvas* canvas) { gfx::Rect separator_bounds(start_x, 0, width(), height()); gfx::NativeTheme::ExtraParams extra; extra.menu_separator.has_gutter = config.render_gutter; - theme->Paint(canvas->AsCanvasSkia(), gfx::NativeTheme::kMenuPopupSeparator, + theme->Paint(canvas->GetSkCanvas(), gfx::NativeTheme::kMenuPopupSeparator, gfx::NativeTheme::kNormal, separator_bounds, extra); } diff --git a/views/controls/menu/menu_win.cc b/views/controls/menu/menu_win.cc index 5c1d487..10d1119 100644 --- a/views/controls/menu/menu_win.cc +++ b/views/controls/menu/menu_win.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -186,10 +186,10 @@ class MenuHostWindow : public ui::WindowImpl { // by the label. if (data->icon.width() != 0 && data->icon.height() != 0) { gfx::CanvasSkia canvas(data->icon.width(), data->icon.height(), false); - canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas.sk_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); canvas.DrawBitmapInt(data->icon, 0, 0); skia::DrawToNativeContext( - &canvas, hDC, lpdis->rcItem.left + kItemLeftMargin, + canvas.sk_canvas(), hDC, lpdis->rcItem.left + kItemLeftMargin, lpdis->rcItem.top + (lpdis->rcItem.bottom - lpdis->rcItem.top - data->icon.height()) / 2, NULL); } diff --git a/views/controls/menu/native_menu_win.cc b/views/controls/menu/native_menu_win.cc index 9cb765a..acab371 100644 --- a/views/controls/menu/native_menu_win.cc +++ b/views/controls/menu/native_menu_win.cc @@ -250,10 +250,11 @@ class NativeMenuWin::MenuHostWindow { // We currently don't support items with both icons and checkboxes. DCHECK(type != ui::MenuModel::TYPE_CHECK); gfx::CanvasSkia canvas(icon.width(), icon.height(), false); - canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas.sk_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); canvas.DrawBitmapInt(icon, 0, 0); skia::DrawToNativeContext( - &canvas, dc, draw_item_struct->rcItem.left + kItemLeftMargin, + canvas.sk_canvas(), dc, + draw_item_struct->rcItem.left + kItemLeftMargin, draw_item_struct->rcItem.top + (draw_item_struct->rcItem.bottom - draw_item_struct->rcItem.top - icon.height()) / 2, NULL); } else if (type == ui::MenuModel::TYPE_CHECK && @@ -280,12 +281,13 @@ class NativeMenuWin::MenuHostWindow { // Draw the background and the check. NativeTheme::instance()->Paint( - &canvas, NativeTheme::kMenuCheckBackground, state, bounds, extra); + canvas.sk_canvas(), NativeTheme::kMenuCheckBackground, + state, bounds, extra); NativeTheme::instance()->Paint( - &canvas, NativeTheme::kMenuCheck, state, bounds, extra); + canvas.sk_canvas(), NativeTheme::kMenuCheck, state, bounds, extra); // Draw checkbox to menu. - skia::DrawToNativeContext(&canvas, dc, + skia::DrawToNativeContext(canvas.sk_canvas(), dc, draw_item_struct->rcItem.left + kItemLeftMargin, draw_item_struct->rcItem.top + (draw_item_struct->rcItem.bottom - draw_item_struct->rcItem.top - config.check_height) / 2, NULL); diff --git a/views/controls/progress_bar.cc b/views/controls/progress_bar.cc index 7cdebdb..0d70b7b 100644 --- a/views/controls/progress_bar.cc +++ b/views/controls/progress_bar.cc @@ -85,7 +85,7 @@ void FillRoundRect(gfx::Canvas* canvas, // Need to unref shader, otherwise never deleted. s->unref(); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } void FillRoundRect(gfx::Canvas* canvas, @@ -106,7 +106,7 @@ void FillRoundRect(gfx::Canvas* canvas, paint.setStyle(SkPaint::kFill_Style); paint.setFlags(SkPaint::kAntiAlias_Flag); paint.setColor(gradient_start_color); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } } @@ -124,7 +124,7 @@ void StrokeRoundRect(gfx::Canvas* canvas, paint.setStyle(SkPaint::kStroke_Style); paint.setFlags(SkPaint::kAntiAlias_Flag); paint.setStrokeWidth(SkIntToScalar(stroke_width)); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } } // namespace @@ -222,7 +222,7 @@ void ProgressBar::OnPaint(gfx::Canvas* canvas) { // Draw inner stroke and shadow if wide enough. if (progress_width > 2 * kBorderWidth) { - canvas->AsCanvasSkia()->save(); + canvas->GetSkCanvas()->save(); SkPath inner_path; AddRoundRectPathWithPadding( @@ -230,7 +230,7 @@ void ProgressBar::OnPaint(gfx::Canvas* canvas) { kCornerRadius, SkIntToScalar(kBorderWidth), &inner_path); - canvas->AsCanvasSkia()->clipPath(inner_path); + canvas->GetSkCanvas()->clipPath(inner_path); // Draw bar inner stroke StrokeRoundRect(canvas, @@ -248,7 +248,7 @@ void ProgressBar::OnPaint(gfx::Canvas* canvas) { bar_inner_shadow_color, kBorderWidth); - canvas->AsCanvasSkia()->restore(); + canvas->GetSkCanvas()->restore(); } // Draw bar stroke diff --git a/views/controls/scrollbar/native_scroll_bar_views.cc b/views/controls/scrollbar/native_scroll_bar_views.cc index ac1bc89..f007b50 100644 --- a/views/controls/scrollbar/native_scroll_bar_views.cc +++ b/views/controls/scrollbar/native_scroll_bar_views.cc @@ -98,7 +98,7 @@ void ScrollBarButton::OnPaint(gfx::Canvas* canvas) { gfx::Rect bounds; bounds.set_size(GetPreferredSize()); - native_theme->Paint(canvas->AsCanvasSkia(), + native_theme->Paint(canvas->GetSkCanvas(), GetNativeThemePart(), GetNativeThemeState(), bounds, @@ -183,7 +183,7 @@ gfx::Size ScrollBarThumb::GetPreferredSize() { void ScrollBarThumb::OnPaint(gfx::Canvas* canvas) { const gfx::NativeTheme* native_theme = gfx::NativeTheme::instance(); - native_theme->Paint(canvas->AsCanvasSkia(), + native_theme->Paint(canvas->GetSkCanvas(), GetNativeThemePart(), GetNativeThemeState(), GetLocalBounds(), @@ -302,7 +302,7 @@ void NativeScrollBarViews::OnPaint(gfx::Canvas* canvas) { params_.scrollbar_track.track_height = bounds.height(); - native_theme->Paint(canvas->AsCanvasSkia(), + native_theme->Paint(canvas->GetSkCanvas(), part_, state_, bounds, diff --git a/views/controls/tabbed_pane/native_tabbed_pane_win.cc b/views/controls/tabbed_pane/native_tabbed_pane_win.cc index 455e8fb..773761d 100644 --- a/views/controls/tabbed_pane/native_tabbed_pane_win.cc +++ b/views/controls/tabbed_pane/native_tabbed_pane_win.cc @@ -41,7 +41,7 @@ class TabBackground : public Background { gfx::Rect r(0, 0, view->width(), view->height()); gfx::NativeTheme::ExtraParams extra; gfx::NativeTheme::instance()->Paint( - canvas->AsCanvasSkia(), gfx::NativeTheme::kTabPanelBackground, + canvas->GetSkCanvas(), gfx::NativeTheme::kTabPanelBackground, gfx::NativeTheme::kNormal, r, extra); } diff --git a/views/controls/table/native_table_win.cc b/views/controls/table/native_table_win.cc index 6f8472c..91d46c9 100644 --- a/views/controls/table/native_table_win.cc +++ b/views/controls/table/native_table_win.cc @@ -395,7 +395,7 @@ void NativeTableWin::CreateNativeControl() { // rect does not include the icon). gfx::CanvasSkia canvas(kImageSize, kImageSize, false); // Make the background completely transparent. - canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas.sk_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); { base::win::ScopedHICON empty_icon( IconUtil::CreateHICONFromSkBitmap(canvas.ExtractBitmap())); @@ -533,7 +533,7 @@ LRESULT NativeTableWin::OnCustomDraw(NMLVCUSTOMDRAW* draw_info) { // NOTE: This may be invoked without the ListView filling in the // background (or rather windows paints background, then invokes // this twice). As such, we always fill in the background. - canvas.drawColor( + canvas.sk_canvas()->drawColor( skia::COLORREFToSkColor(GetSysColor(bg_color_index)), SkXfermode::kSrc_Mode); // + 1 for padding (we declared the image as 18x18 in the list- @@ -551,9 +551,9 @@ LRESULT NativeTableWin::OnCustomDraw(NMLVCUSTOMDRAW* draw_info) { (intersection.right - intersection.left); to_draw.bottom = to_draw.top + (intersection.bottom - intersection.top); - skia::DrawToNativeContext(&canvas, draw_info->nmcd.hdc, - intersection.left, intersection.top, - &to_draw); + skia::DrawToNativeContext(canvas.sk_canvas(), draw_info->nmcd.hdc, + intersection.left, intersection.top, + &to_draw); r = CDRF_SKIPDEFAULT; } } diff --git a/views/controls/table/table_view.cc b/views/controls/table/table_view.cc index ec81df8..5ee978c 100644 --- a/views/controls/table/table_view.cc +++ b/views/controls/table/table_view.cc @@ -807,7 +807,7 @@ HWND TableView::CreateNativeControl(HWND parent_container) { // rect does not include the icon). gfx::CanvasSkia canvas(kImageSize, kImageSize, false); // Make the background completely transparent. - canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas.sk_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); { base::win::ScopedHICON empty_icon( IconUtil::CreateHICONFromSkBitmap(canvas.ExtractBitmap())); @@ -1157,7 +1157,8 @@ void TableView::PaintAltText() { canvas.DrawStringWithHalo(alt_text_, font, SK_ColorDKGRAY, SK_ColorWHITE, 1, 1, bounds.width() - 2, bounds.height() - 2, gfx::CanvasSkia::DefaultCanvasTextAlignment()); - skia::DrawToNativeContext(&canvas, dc, bounds.x(), bounds.y(), NULL); + skia::DrawToNativeContext( + canvas.sk_canvas(), dc, bounds.x(), bounds.y(), NULL); ReleaseDC(GetNativeControlHWND(), dc); } @@ -1255,7 +1256,7 @@ LRESULT TableView::OnCustomDraw(NMLVCUSTOMDRAW* draw_info) { // NOTE: This may be invoked without the ListView filling in the // background (or rather windows paints background, then invokes // this twice). As such, we always fill in the background. - canvas.drawColor( + canvas.sk_canvas()->drawColor( skia::COLORREFToSkColor(GetSysColor(bg_color_index)), SkXfermode::kSrc_Mode); // + 1 for padding (we declared the image as 18x18 in the list- @@ -1273,9 +1274,9 @@ LRESULT TableView::OnCustomDraw(NMLVCUSTOMDRAW* draw_info) { (intersection.right - intersection.left); to_draw.bottom = to_draw.top + (intersection.bottom - intersection.top); - skia::DrawToNativeContext(&canvas, draw_info->nmcd.hdc, - intersection.left, intersection.top, - &to_draw); + skia::DrawToNativeContext(canvas.sk_canvas(), draw_info->nmcd.hdc, + intersection.left, intersection.top, + &to_draw); r = CDRF_SKIPDEFAULT; } } diff --git a/views/controls/tree/tree_view.cc b/views/controls/tree/tree_view.cc index 078ee20..80313ed 100644 --- a/views/controls/tree/tree_view.cc +++ b/views/controls/tree/tree_view.cc @@ -699,7 +699,7 @@ HIMAGELIST TreeView::CreateImageList() { model_images[i].height() != height) { gfx::CanvasSkia canvas(width, height, false); // Make the background completely transparent. - canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas.sk_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); // Draw our icons into this canvas. int height_offset = (height - model_images[i].height()) / 2; @@ -752,7 +752,7 @@ LRESULT CALLBACK TreeView::TreeWndProc(HWND window, if (canvas.isEmpty()) return 0; - HDC dc = skia::BeginPlatformPaint(&canvas); + HDC dc = skia::BeginPlatformPaint(canvas.sk_canvas()); if (base::i18n::IsRTL()) { // gfx::CanvasSkia ends up configuring the DC with a mode of // GM_ADVANCED. For some reason a graphics mode of ADVANCED triggers @@ -786,7 +786,7 @@ LRESULT CALLBACK TreeView::TreeWndProc(HWND window, // over we copy the right bits. SetViewportOrgEx(dc, 0, 0, NULL); } - skia::EndPlatformPaint(&canvas); + skia::EndPlatformPaint(canvas.sk_canvas()); return 0; } diff --git a/views/desktop/desktop_background.cc b/views/desktop/desktop_background.cc index a6d7a64..89399e1 100644 --- a/views/desktop/desktop_background.cc +++ b/views/desktop/desktop_background.cc @@ -37,7 +37,7 @@ void DesktopBackground::Paint(gfx::Canvas* canvas, View* view) const { path.close(); paint.setColor(SK_ColorGREEN); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } // Paint the shining sun. @@ -47,7 +47,7 @@ void DesktopBackground::Paint(gfx::Canvas* canvas, View* view) const { path.close(); paint.setColor(SK_ColorYELLOW); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } } diff --git a/views/native_theme_painter.cc b/views/native_theme_painter.cc index 71bb71b..584667b9 100644 --- a/views/native_theme_painter.cc +++ b/views/native_theme_painter.cc @@ -28,7 +28,6 @@ gfx::Size NativeThemePainter::GetPreferredSize() { void NativeThemePainter::Paint(int w, int h, gfx::Canvas* canvas) { const gfx::NativeTheme* native_theme = gfx::NativeTheme::instance(); gfx::NativeTheme::Part part = delegate_->GetThemePart(); - gfx::CanvasSkia* skia_canvas = canvas->AsCanvasSkia(); gfx::Rect rect(0, 0, w, h); if (delegate_->GetThemeAnimation() != NULL && @@ -37,19 +36,20 @@ void NativeThemePainter::Paint(int w, int h, gfx::Canvas* canvas) { gfx::NativeTheme::ExtraParams prev_extra; gfx::NativeTheme::State prev_state = delegate_->GetBackgroundThemeState(&prev_extra); - native_theme->Paint(skia_canvas, part, prev_state, rect, prev_extra); + native_theme->Paint( + canvas->GetSkCanvas(), part, prev_state, rect, prev_extra); // Composite foreground state above it. gfx::NativeTheme::ExtraParams extra; gfx::NativeTheme::State state = delegate_->GetForegroundThemeState(&extra); int alpha = delegate_->GetThemeAnimation()->CurrentValueBetween(0, 255); - skia_canvas->SaveLayerAlpha(static_cast<uint8>(alpha)); - native_theme->Paint(skia_canvas, part, state, rect, extra); - skia_canvas->Restore(); + canvas->SaveLayerAlpha(static_cast<uint8>(alpha)); + native_theme->Paint(canvas->GetSkCanvas(), part, state, rect, extra); + canvas->Restore(); } else { gfx::NativeTheme::ExtraParams extra; gfx::NativeTheme::State state = delegate_->GetThemeState(&extra); - native_theme->Paint(skia_canvas, part, state, rect, extra); + native_theme->Paint(canvas->GetSkCanvas(), part, state, rect, extra); } } diff --git a/views/painter.cc b/views/painter.cc index 5a82bff..f39317d 100644 --- a/views/painter.cc +++ b/views/painter.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -44,7 +44,7 @@ class GradientPainter : public Painter { // Need to unref shader, otherwise never deleted. s->unref(); - canvas->AsCanvasSkia()->drawRectCoords( + canvas->GetSkCanvas()->drawRectCoords( SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(w), SkIntToScalar(h), paint); } diff --git a/views/touchui/touch_selection_controller_impl.cc b/views/touchui/touch_selection_controller_impl.cc index 2711690..d62a0c0 100644 --- a/views/touchui/touch_selection_controller_impl.cc +++ b/views/touchui/touch_selection_controller_impl.cc @@ -81,7 +81,7 @@ void PaintCircle(const Circle& circle, gfx::Canvas* canvas) { SkIntToScalar(bounds.right()), SkIntToScalar(bounds.bottom())); SkScalar radius = SkIntToScalar(circle.radius); path.addRoundRect(rect, radius, radius); - canvas->AsCanvasSkia()->drawPath(path, paint); + canvas->GetSkCanvas()->drawPath(path, paint); } // The points may not match exactly, since the selection range computation may @@ -278,8 +278,8 @@ class TouchSelectionControllerImpl::TouchContextMenuView canvas->DrawRectInt(0, 0, width(), height(), paint); #else // This is the same as COLOR_TOOLBAR. - canvas->AsCanvasSkia()->drawColor(SkColorSetRGB(210, 225, 246), - SkXfermode::kSrc_Mode); + canvas->GetSkCanvas()->drawColor(SkColorSetRGB(210, 225, 246), + SkXfermode::kSrc_Mode); #endif } diff --git a/views/view.cc b/views/view.cc index e53d3e4..ffca496 100644 --- a/views/view.cc +++ b/views/view.cc @@ -1137,7 +1137,7 @@ void View::UpdateChildLayerBounds(const gfx::Point& offset) { } void View::OnPaintLayer(gfx::Canvas* canvas) { - canvas->AsCanvasSkia()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); PaintCommon(canvas); } diff --git a/views/view_unittest.cc b/views/view_unittest.cc index bb99bf9a..c6bfab2 100644 --- a/views/view_unittest.cc +++ b/views/view_unittest.cc @@ -400,7 +400,7 @@ TEST_F(ViewTest, TouchEvent) { //////////////////////////////////////////////////////////////////////////////// void TestView::Paint(gfx::Canvas* canvas) { - canvas->AsCanvasSkia()->getClipBounds(&last_clip_); + canvas->GetSkCanvas()->getClipBounds(&last_clip_); } void TestView::SchedulePaintInRect(const gfx::Rect& rect) { diff --git a/views/widget/native_widget_win.cc b/views/widget/native_widget_win.cc index 9290f4b..24c1d38 100644 --- a/views/widget/native_widget_win.cc +++ b/views/widget/native_widget_win.cc @@ -2309,25 +2309,25 @@ void NativeWidgetWin::RedrawLayeredWindowContents() { return; // We need to clip to the dirty rect ourselves. - layered_window_contents_->save(SkCanvas::kClip_SaveFlag); + layered_window_contents_->sk_canvas()->save(SkCanvas::kClip_SaveFlag); layered_window_contents_->ClipRectInt(invalid_rect_.x(), invalid_rect_.y(), invalid_rect_.width(), invalid_rect_.height()); GetWidget()->GetRootView()->Paint(layered_window_contents_.get()); - layered_window_contents_->restore(); + layered_window_contents_->sk_canvas()->restore(); RECT wr; GetWindowRect(&wr); SIZE size = {wr.right - wr.left, wr.bottom - wr.top}; POINT position = {wr.left, wr.top}; - HDC dib_dc = skia::BeginPlatformPaint(layered_window_contents_.get()); + HDC dib_dc = skia::BeginPlatformPaint(layered_window_contents_->sk_canvas()); POINT zero = {0, 0}; BLENDFUNCTION blend = {AC_SRC_OVER, 0, layered_alpha_, AC_SRC_ALPHA}; UpdateLayeredWindow(hwnd(), NULL, &position, &size, dib_dc, &zero, RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); invalid_rect_.SetRect(0, 0, 0, 0); - skia::EndPlatformPaint(layered_window_contents_.get()); + skia::EndPlatformPaint(layered_window_contents_->sk_canvas()); } void NativeWidgetWin::LockUpdates() { diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc index 7c69e96..1d60945 100644 --- a/views/widget/root_view.cc +++ b/views/widget/root_view.cc @@ -418,7 +418,7 @@ void RootView::ViewHierarchyChanged(bool is_add, View* parent, View* child) { void RootView::OnPaint(gfx::Canvas* canvas) { #if !defined(TOUCH_UI) - canvas->AsCanvasSkia()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); + canvas->GetSkCanvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); #endif } diff --git a/views/window/dialog_client_view.cc b/views/window/dialog_client_view.cc index 8a43145..a3bdb63 100644 --- a/views/window/dialog_client_view.cc +++ b/views/window/dialog_client_view.cc @@ -449,7 +449,7 @@ void DialogClientView::PaintSizeBox(gfx::Canvas* canvas) { size_box_bounds_.set_x(size_box_bounds_.right() - gripper_size.width()); size_box_bounds_.set_y(size_box_bounds_.bottom() - gripper_size.height()); - gfx::NativeTheme::instance()->Paint(canvas->AsCanvasSkia(), + gfx::NativeTheme::instance()->Paint(canvas->GetSkCanvas(), gfx::NativeTheme::kWindowResizeGripper, gfx::NativeTheme::kNormal, size_box_bounds_, |