diff options
author | tomhudson <tomhudson@google.com> | 2016-02-04 10:49:56 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-04 18:51:55 +0000 |
commit | 748157f70e3fd74e4cb4fe542351eac25c9adfa3 (patch) | |
tree | 969dfda631fbb8ce3c77ed92d647a33b09e6e1d4 /ui/gfx | |
parent | 01d2e0cc3172dbf55ea203050aafc41be5b803fe (diff) | |
download | chromium_src-748157f70e3fd74e4cb4fe542351eac25c9adfa3.zip chromium_src-748157f70e3fd74e4cb4fe542351eac25c9adfa3.tar.gz chromium_src-748157f70e3fd74e4cb4fe542351eac25c9adfa3.tar.bz2 |
gfx::Canvas typically had both a skia::RefPtr and a raw pointer to the same object. This CL gets rid of the duplication.
Worth particular attention in review is the Canvas::Canvas() which previously took a raw SkCanvas*; according to skia/ext/refptr.h that's unexpected?
R=sky@chromium.org
Review URL: https://codereview.chromium.org/1615923003
Cr-Commit-Position: refs/heads/master@{#373573}
Diffstat (limited to 'ui/gfx')
-rw-r--r-- | ui/gfx/canvas.cc | 31 | ||||
-rw-r--r-- | ui/gfx/canvas.h | 8 | ||||
-rw-r--r-- | ui/gfx/canvas_paint_mac.mm | 2 | ||||
-rw-r--r-- | ui/gfx/render_text_unittest.cc | 4 |
4 files changed, 19 insertions, 26 deletions
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc index 459a0e6..874c328 100644 --- a/ui/gfx/canvas.cc +++ b/ui/gfx/canvas.cc @@ -24,18 +24,16 @@ namespace gfx { Canvas::Canvas(const Size& size, float image_scale, bool is_opaque) - : image_scale_(image_scale), - canvas_(NULL) { + : image_scale_(image_scale) { Size pixel_size = ScaleToCeiledSize(size, image_scale); - owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), - pixel_size.height(), - is_opaque)); - canvas_ = owned_canvas_.get(); + canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), + pixel_size.height(), + is_opaque)); #if !defined(USE_CAIRO) // skia::PlatformCanvas instances are initialized to 0 by Cairo, but // uninitialized on other platforms. if (!is_opaque) - owned_canvas_->clear(SkColorSetARGB(0, 0, 0, 0)); + canvas_->clear(SkColorSetARGB(0, 0, 0, 0)); #endif SkScalar scale_scalar = SkFloatToScalar(image_scale); @@ -44,11 +42,10 @@ Canvas::Canvas(const Size& size, float image_scale, bool is_opaque) Canvas::Canvas(const ImageSkiaRep& image_rep, bool is_opaque) : image_scale_(image_rep.scale()), - owned_canvas_(skia::AdoptRef( + canvas_(skia::AdoptRef( skia::CreatePlatformCanvas(image_rep.pixel_width(), image_rep.pixel_height(), - is_opaque))), - canvas_(owned_canvas_.get()) { + is_opaque))) { SkScalar scale_scalar = SkFloatToScalar(image_scale_); canvas_->scale(scale_scalar, scale_scalar); DrawImageInt(ImageSkia(image_rep), 0, 0); @@ -56,11 +53,10 @@ Canvas::Canvas(const ImageSkiaRep& image_rep, bool is_opaque) Canvas::Canvas() : image_scale_(1.f), - owned_canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))), - canvas_(owned_canvas_.get()) {} + canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))) {} -Canvas::Canvas(SkCanvas* canvas, float image_scale) - : image_scale_(image_scale), owned_canvas_(), canvas_(canvas) { +Canvas::Canvas(const skia::RefPtr<SkCanvas>& canvas, float image_scale) + : image_scale_(image_scale), canvas_(canvas) { DCHECK(canvas); } @@ -72,10 +68,9 @@ void Canvas::RecreateBackingCanvas(const Size& size, bool is_opaque) { image_scale_ = image_scale; Size pixel_size = ScaleToFlooredSize(size, image_scale); - owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), - pixel_size.height(), - is_opaque)); - canvas_ = owned_canvas_.get(); + canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), + pixel_size.height(), + is_opaque)); SkScalar scale_scalar = SkFloatToScalar(image_scale); canvas_->scale(scale_scalar, scale_scalar); } diff --git a/ui/gfx/canvas.h b/ui/gfx/canvas.h index dd30d54..6233af3 100644 --- a/ui/gfx/canvas.h +++ b/ui/gfx/canvas.h @@ -89,7 +89,7 @@ class GFX_EXPORT Canvas { // Creates a Canvas backed by an |sk_canvas| with |image_scale_|. // |sk_canvas| is assumed to be already scaled based on |image_scale| // so no additional scaling is applied. - Canvas(SkCanvas* sk_canvas, float image_scale); + Canvas(const skia::RefPtr<SkCanvas>& sk_canvas, float image_scale); virtual ~Canvas(); @@ -409,8 +409,7 @@ class GFX_EXPORT Canvas { const Rect& display_rect, int flags); - SkCanvas* platform_canvas() { return owned_canvas_.get(); } - SkCanvas* sk_canvas() { return canvas_; } + SkCanvas* sk_canvas() { return canvas_.get(); } float image_scale() const { return image_scale_; } private: @@ -439,8 +438,7 @@ class GFX_EXPORT Canvas { // Canvas::Scale() does not affect |image_scale_|. float image_scale_; - skia::RefPtr<SkCanvas> owned_canvas_; - SkCanvas* canvas_; + skia::RefPtr<SkCanvas> canvas_; DISALLOW_COPY_AND_ASSIGN(Canvas); }; diff --git a/ui/gfx/canvas_paint_mac.mm b/ui/gfx/canvas_paint_mac.mm index cc926d2..d5178a0 100644 --- a/ui/gfx/canvas_paint_mac.mm +++ b/ui/gfx/canvas_paint_mac.mm @@ -23,7 +23,7 @@ CanvasSkiaPaint::CanvasSkiaPaint(NSRect dirtyRect, bool opaque) CanvasSkiaPaint::~CanvasSkiaPaint() { if (!is_empty()) { - platform_canvas()->restoreToCount(1); + sk_canvas()->restoreToCount(1); // Blit the dirty rect to the current context. CGImageRef image = CGBitmapContextCreateImage(context_); diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc index 51e1ac7..cea1786 100644 --- a/ui/gfx/render_text_unittest.cc +++ b/ui/gfx/render_text_unittest.cc @@ -3019,7 +3019,7 @@ TEST_F(RenderTextTest, TextDoesntClip) { skia::RefPtr<SkSurface> surface = skia::AdoptRef( SkSurface::NewRasterN32Premul(kCanvasSize.width(), kCanvasSize.height())); - Canvas canvas(surface->getCanvas(), 1.0f); + Canvas canvas(skia::SharePtr(surface->getCanvas()), 1.0f); scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); render_text->SetHorizontalAlignment(ALIGN_LEFT); render_text->SetColor(SK_ColorBLACK); @@ -3101,7 +3101,7 @@ TEST_F(RenderTextTest, TextDoesClip) { skia::RefPtr<SkSurface> surface = skia::AdoptRef( SkSurface::NewRasterN32Premul(kCanvasSize.width(), kCanvasSize.height())); - Canvas canvas(surface->getCanvas(), 1.0f); + Canvas canvas(skia::SharePtr(surface->getCanvas()), 1.0f); scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); render_text->SetHorizontalAlignment(ALIGN_LEFT); render_text->SetColor(SK_ColorBLACK); |