Chromium Code Reviews| Index: ui/gfx/canvas.cc |
| diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc |
| index 831f4fc4bf47e9e23a22de519336c43beb1871f7..0d564bc7fa17ef46a3f80773efcc6332b383a3ad 100644 |
| --- a/ui/gfx/canvas.cc |
| +++ b/ui/gfx/canvas.cc |
| @@ -27,13 +27,13 @@ Canvas::Canvas(const gfx::Size& size, |
| ui::ScaleFactor scale_factor, |
| bool is_opaque) |
| : scale_factor_(scale_factor), |
| - owned_canvas_(NULL), |
| + owned_canvas_(), |
|
sky
2012/11/29 23:54:56
nit: remove this entirely.
danakj
2012/11/30 00:12:21
Removing owned_canvas is tricky, and makes this CL
sky
2012/11/30 01:31:47
I actually just meant you can remove owned_canvas_
danakj
2012/11/30 01:32:39
OOhh! ok :)
|
| canvas_(NULL) { |
| gfx::Size pixel_size = gfx::ToFlooredSize( |
| gfx::ScaleSize(size, ui::GetScaleFactorScale(scale_factor))); |
| - owned_canvas_.reset(skia::CreatePlatformCanvas(pixel_size.width(), |
| - pixel_size.height(), |
| - is_opaque)); |
| + owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), |
|
sky
2012/11/29 23:54:56
Why do we need the extra AdoptRef step? Can't we j
danakj
2012/11/30 00:12:21
skia::CreatePlatformCanvas() returns an SkCanvas*
|
| + pixel_size.height(), |
| + is_opaque)); |
| canvas_ = owned_canvas_.get(); |
| #if defined(OS_WIN) || defined(OS_MACOSX) |
| // skia::PlatformCanvas instances are initialized to 0 by Cairo on Linux, but |
| @@ -48,9 +48,10 @@ Canvas::Canvas(const gfx::Size& size, |
| Canvas::Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque) |
| : scale_factor_(image_rep.scale_factor()), |
| - owned_canvas_(skia::CreatePlatformCanvas(image_rep.pixel_width(), |
| - image_rep.pixel_height(), |
| - is_opaque)), |
| + owned_canvas_(skia::AdoptRef( |
| + skia::CreatePlatformCanvas(image_rep.pixel_width(), |
| + image_rep.pixel_height(), |
| + is_opaque))), |
| canvas_(owned_canvas_.get()) { |
| SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_)); |
| canvas_->scale(scale, scale); |
| @@ -59,7 +60,7 @@ Canvas::Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque) |
| Canvas::Canvas() |
| : scale_factor_(ui::SCALE_FACTOR_100P), |
| - owned_canvas_(skia::CreatePlatformCanvas(0, 0, false)), |
| + owned_canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))), |
| canvas_(owned_canvas_.get()) { |
| } |
| @@ -78,9 +79,9 @@ void Canvas::RecreateBackingCanvas(const gfx::Size& size, |
| scale_factor_ = scale_factor; |
| gfx::Size pixel_size = gfx::ToFlooredSize( |
| gfx::ScaleSize(size, ui::GetScaleFactorScale(scale_factor))); |
| - owned_canvas_.reset(skia::CreatePlatformCanvas(pixel_size.width(), |
| - pixel_size.height(), |
| - is_opaque)); |
| + owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), |
| + pixel_size.height(), |
| + is_opaque)); |
| canvas_ = owned_canvas_.get(); |
| SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_)); |
| canvas_->scale(scale, scale); |
| @@ -140,14 +141,14 @@ void Canvas::DrawDashedRect(const gfx::Rect& rect, SkColor color) { |
| // Make a shader for the bitmap with an origin of the box we'll draw. This |
| // shader is refcounted and will have an initial refcount of 1. |
| - SkShader* shader = SkShader::CreateBitmapShader( |
| - *dots, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode); |
| + skia::RefPtr<SkShader> shader = skia::AdoptRef( |
| + SkShader::CreateBitmapShader( |
| + *dots, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode)); |
| // Assign the shader to the paint & release our reference. The paint will |
| // now own the shader and the shader will be destroyed when the paint goes |
| // out of scope. |
| SkPaint paint; |
| - paint.setShader(shader); |
| - shader->unref(); |
| + paint.setShader(shader.get()); |
| DrawRect(gfx::Rect(rect.x(), rect.y(), rect.width(), 1), paint); |
| DrawRect(gfx::Rect(rect.x(), rect.y() + rect.height() - 1, rect.width(), 1), |
| @@ -373,16 +374,16 @@ void Canvas::DrawImageInt(const gfx::ImageSkia& image, |
| shader_scale.preTranslate(SkIntToScalar(-src_x), SkIntToScalar(-src_y)); |
| shader_scale.postTranslate(SkIntToScalar(dest_x), SkIntToScalar(dest_y)); |
| - SkShader* shader = gfx::CreateImageRepShader(image_rep, |
| - SkShader::kRepeat_TileMode, |
| - shader_scale); |
| + skia::RefPtr<SkShader> shader = gfx::CreateImageRepShader( |
| + image_rep, |
| + SkShader::kRepeat_TileMode, |
| + shader_scale); |
| // Set up our paint to use the shader & release our reference (now just owned |
| // by the paint). |
| SkPaint p(paint); |
| p.setFilterBitmap(filter); |
| - p.setShader(shader); |
| - shader->unref(); |
| + p.setShader(shader.get()); |
| // The rect will be filled by the bitmap. |
| canvas_->drawRect(dest_rect, p); |
| @@ -399,12 +400,13 @@ void Canvas::DrawImageInPath(const gfx::ImageSkia& image, |
| SkMatrix matrix; |
| matrix.setTranslate(SkIntToScalar(x), SkIntToScalar(y)); |
| - SkShader* shader = gfx::CreateImageRepShader(image_rep, |
| - SkShader::kRepeat_TileMode, matrix); |
| + skia::RefPtr<SkShader> shader = gfx::CreateImageRepShader( |
| + image_rep, |
| + SkShader::kRepeat_TileMode, |
| + matrix); |
| SkPaint p(paint); |
| - p.setShader(shader); |
| - shader->unref(); |
| + p.setShader(shader.get()); |
| canvas_->drawPath(path, p); |
| } |
| @@ -465,14 +467,14 @@ void Canvas::TileImageInt(const gfx::ImageSkia& image, |
| shader_scale.preTranslate(SkIntToScalar(-src_x), SkIntToScalar(-src_y)); |
| shader_scale.postTranslate(SkIntToScalar(dest_x), SkIntToScalar(dest_y)); |
| - SkShader* shader = gfx::CreateImageRepShader(image_rep, |
| - SkShader::kRepeat_TileMode, |
| - shader_scale); |
| + skia::RefPtr<SkShader> shader = gfx::CreateImageRepShader( |
| + image_rep, |
| + SkShader::kRepeat_TileMode, |
| + shader_scale); |
| SkPaint paint; |
| - paint.setShader(shader); |
| + paint.setShader(shader.get()); |
| paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); |
| - shader->unref(); |
| SkRect dest_rect = { SkIntToScalar(dest_x), |
| SkIntToScalar(dest_y), |