summaryrefslogtreecommitdiffstats
path: root/ui/gfx
diff options
context:
space:
mode:
authortomhudson <tomhudson@google.com>2016-02-04 10:49:56 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-04 18:51:55 +0000
commit748157f70e3fd74e4cb4fe542351eac25c9adfa3 (patch)
tree969dfda631fbb8ce3c77ed92d647a33b09e6e1d4 /ui/gfx
parent01d2e0cc3172dbf55ea203050aafc41be5b803fe (diff)
downloadchromium_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.cc31
-rw-r--r--ui/gfx/canvas.h8
-rw-r--r--ui/gfx/canvas_paint_mac.mm2
-rw-r--r--ui/gfx/render_text_unittest.cc4
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);