Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: ui/gfx/canvas.cc

Issue 2476113002: Change call-sites now that SkCanvas is not ref-counted (Closed)
Patch Set: no need for unique check on unique_ptr Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/canvas.h" 5 #include "ui/gfx/canvas.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 10 matching lines...) Expand all
21 #include "ui/gfx/geometry/size_conversions.h" 21 #include "ui/gfx/geometry/size_conversions.h"
22 #include "ui/gfx/scoped_canvas.h" 22 #include "ui/gfx/scoped_canvas.h"
23 #include "ui/gfx/skia_util.h" 23 #include "ui/gfx/skia_util.h"
24 #include "ui/gfx/transform.h" 24 #include "ui/gfx/transform.h"
25 25
26 namespace gfx { 26 namespace gfx {
27 27
28 Canvas::Canvas(const Size& size, float image_scale, bool is_opaque) 28 Canvas::Canvas(const Size& size, float image_scale, bool is_opaque)
29 : image_scale_(image_scale) { 29 : image_scale_(image_scale) {
30 Size pixel_size = ScaleToCeiledSize(size, image_scale); 30 Size pixel_size = ScaleToCeiledSize(size, image_scale);
31 canvas_ = sk_sp<SkCanvas>(skia::CreatePlatformCanvas(pixel_size.width(), 31 canvas_owner_ = skia::CreatePlatformCanvas(pixel_size.width(),
32 pixel_size.height(), 32 pixel_size.height(), is_opaque);
33 is_opaque)); 33 canvas_ = canvas_owner_.get();
34
34 #if !defined(USE_CAIRO) 35 #if !defined(USE_CAIRO)
35 // skia::PlatformCanvas instances are initialized to 0 by Cairo, but 36 // skia::PlatformCanvas instances are initialized to 0 by Cairo, but
36 // uninitialized on other platforms. 37 // uninitialized on other platforms.
37 if (!is_opaque) 38 if (!is_opaque)
38 canvas_->clear(SkColorSetARGB(0, 0, 0, 0)); 39 canvas_->clear(SkColorSetARGB(0, 0, 0, 0));
39 #endif 40 #endif
40 41
41 SkScalar scale_scalar = SkFloatToScalar(image_scale); 42 SkScalar scale_scalar = SkFloatToScalar(image_scale);
42 canvas_->scale(scale_scalar, scale_scalar); 43 canvas_->scale(scale_scalar, scale_scalar);
43 } 44 }
44 45
45 Canvas::Canvas() 46 Canvas::Canvas()
46 : image_scale_(1.f), 47 : image_scale_(1.f),
47 canvas_(sk_sp<SkCanvas>(skia::CreatePlatformCanvas(0, 0, false))) {} 48 canvas_owner_(skia::CreatePlatformCanvas(0, 0, false)) {
49 canvas_ = canvas_owner_.get();
danakj 2016/11/14 19:35:15 do this as a contructor init (you'll need to make
reed1 2016/11/14 20:50:08 Done.
50 }
48 51
49 Canvas::Canvas(sk_sp<SkCanvas> canvas, float image_scale) 52 Canvas::Canvas(SkCanvas* canvas, float image_scale)
50 : image_scale_(image_scale), canvas_(std::move(canvas)) { 53 : image_scale_(image_scale), canvas_(canvas) {
51 DCHECK(canvas_); 54 DCHECK(canvas_);
52 } 55 }
53 56
54 Canvas::~Canvas() { 57 Canvas::~Canvas() {
55 } 58 }
56 59
57 void Canvas::RecreateBackingCanvas(const Size& size, 60 void Canvas::RecreateBackingCanvas(const Size& size,
58 float image_scale, 61 float image_scale,
59 bool is_opaque) { 62 bool is_opaque) {
60 image_scale_ = image_scale; 63 image_scale_ = image_scale;
61 Size pixel_size = ScaleToFlooredSize(size, image_scale); 64 Size pixel_size = ScaleToFlooredSize(size, image_scale);
62 canvas_ = sk_sp<SkCanvas>(skia::CreatePlatformCanvas(pixel_size.width(), 65 canvas_owner_ = skia::CreatePlatformCanvas(pixel_size.width(),
63 pixel_size.height(), 66 pixel_size.height(), is_opaque);
64 is_opaque)); 67 canvas_ = canvas_owner_.get();
68
65 SkScalar scale_scalar = SkFloatToScalar(image_scale); 69 SkScalar scale_scalar = SkFloatToScalar(image_scale);
66 canvas_->scale(scale_scalar, scale_scalar); 70 canvas_->scale(scale_scalar, scale_scalar);
67 } 71 }
68 72
69 // static 73 // static
70 void Canvas::SizeStringInt(const base::string16& text, 74 void Canvas::SizeStringInt(const base::string16& text,
71 const FontList& font_list, 75 const FontList& font_list,
72 int* width, 76 int* width,
73 int* height, 77 int* height,
74 int line_height, 78 int line_height,
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality); 602 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality);
599 p.setShader(CreateImageRepShaderForScale( 603 p.setShader(CreateImageRepShaderForScale(
600 image_rep, SkShader::kRepeat_TileMode, shader_scale, 604 image_rep, SkShader::kRepeat_TileMode, shader_scale,
601 remove_image_scale ? image_rep.scale() : 1.f)); 605 remove_image_scale ? image_rep.scale() : 1.f));
602 606
603 // The rect will be filled by the bitmap. 607 // The rect will be filled by the bitmap.
604 canvas_->drawRect(dest_rect, p); 608 canvas_->drawRect(dest_rect, p);
605 } 609 }
606 610
607 } // namespace gfx 611 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698