summaryrefslogtreecommitdiffstats
path: root/ui/gfx/canvas.cc
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 01:00:54 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 01:00:54 +0000
commit3699ae5a17c4b0b68842a673550d86cdc7961728 (patch)
treecf60fc865bcbdf60e47ca37b43fa7cfd5898f01f /ui/gfx/canvas.cc
parentf775d10814adf1320c8bf9de8279d473c254dd9e (diff)
downloadchromium_src-3699ae5a17c4b0b68842a673550d86cdc7961728.zip
chromium_src-3699ae5a17c4b0b68842a673550d86cdc7961728.tar.gz
chromium_src-3699ae5a17c4b0b68842a673550d86cdc7961728.tar.bz2
ui: Use skia::RefPtr<T> for implicit safe reference counting.
R=sky BUG=163454 Depends on: https://codereview.chromium.org/11418217/ NOTRY=true Review URL: https://chromiumcodereview.appspot.com/11299262 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171107 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/canvas.cc')
-rw-r--r--ui/gfx/canvas.cc59
1 files changed, 30 insertions, 29 deletions
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc
index 831f4fc..4b4a0f4 100644
--- a/ui/gfx/canvas.cc
+++ b/ui/gfx/canvas.cc
@@ -27,13 +27,12 @@ Canvas::Canvas(const gfx::Size& size,
ui::ScaleFactor scale_factor,
bool is_opaque)
: scale_factor_(scale_factor),
- owned_canvas_(NULL),
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(),
+ 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 +47,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 +59,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 +78,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 +140,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 +373,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 +399,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 +466,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),