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

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

Issue 2509983004: Revert "Change call-sites now that SkCanvas is not ref-counted" (Closed)
Patch Set: 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
« no previous file with comments | « ui/gfx/canvas.h ('k') | ui/gfx/render_text_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_owner_ = skia::CreatePlatformCanvas(pixel_size.width(), 31 canvas_ = sk_sp<SkCanvas>(skia::CreatePlatformCanvas(pixel_size.width(),
32 pixel_size.height(), is_opaque); 32 pixel_size.height(),
33 canvas_ = canvas_owner_.get(); 33 is_opaque));
34
35 #if !defined(USE_CAIRO) 34 #if !defined(USE_CAIRO)
36 // skia::PlatformCanvas instances are initialized to 0 by Cairo, but 35 // skia::PlatformCanvas instances are initialized to 0 by Cairo, but
37 // uninitialized on other platforms. 36 // uninitialized on other platforms.
38 if (!is_opaque) 37 if (!is_opaque)
39 canvas_->clear(SkColorSetARGB(0, 0, 0, 0)); 38 canvas_->clear(SkColorSetARGB(0, 0, 0, 0));
40 #endif 39 #endif
41 40
42 SkScalar scale_scalar = SkFloatToScalar(image_scale); 41 SkScalar scale_scalar = SkFloatToScalar(image_scale);
43 canvas_->scale(scale_scalar, scale_scalar); 42 canvas_->scale(scale_scalar, scale_scalar);
44 } 43 }
45 44
46 Canvas::Canvas() 45 Canvas::Canvas()
47 : image_scale_(1.f), 46 : image_scale_(1.f),
48 canvas_owner_(skia::CreatePlatformCanvas(0, 0, false)), 47 canvas_(sk_sp<SkCanvas>(skia::CreatePlatformCanvas(0, 0, false))) {}
49 canvas_(canvas_owner_.get()) {}
50 48
51 Canvas::Canvas(SkCanvas* canvas, float image_scale) 49 Canvas::Canvas(sk_sp<SkCanvas> canvas, float image_scale)
52 : image_scale_(image_scale), canvas_(canvas) { 50 : image_scale_(image_scale), canvas_(std::move(canvas)) {
53 DCHECK(canvas_); 51 DCHECK(canvas_);
54 } 52 }
55 53
56 Canvas::~Canvas() { 54 Canvas::~Canvas() {
57 } 55 }
58 56
59 void Canvas::RecreateBackingCanvas(const Size& size, 57 void Canvas::RecreateBackingCanvas(const Size& size,
60 float image_scale, 58 float image_scale,
61 bool is_opaque) { 59 bool is_opaque) {
62 image_scale_ = image_scale; 60 image_scale_ = image_scale;
63 Size pixel_size = ScaleToFlooredSize(size, image_scale); 61 Size pixel_size = ScaleToFlooredSize(size, image_scale);
64 canvas_owner_ = skia::CreatePlatformCanvas(pixel_size.width(), 62 canvas_ = sk_sp<SkCanvas>(skia::CreatePlatformCanvas(pixel_size.width(),
65 pixel_size.height(), is_opaque); 63 pixel_size.height(),
66 canvas_ = canvas_owner_.get(); 64 is_opaque));
67
68 SkScalar scale_scalar = SkFloatToScalar(image_scale); 65 SkScalar scale_scalar = SkFloatToScalar(image_scale);
69 canvas_->scale(scale_scalar, scale_scalar); 66 canvas_->scale(scale_scalar, scale_scalar);
70 } 67 }
71 68
72 // static 69 // static
73 void Canvas::SizeStringInt(const base::string16& text, 70 void Canvas::SizeStringInt(const base::string16& text,
74 const FontList& font_list, 71 const FontList& font_list,
75 int* width, 72 int* width,
76 int* height, 73 int* height,
77 int line_height, 74 int line_height,
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality); 598 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality);
602 p.setShader(CreateImageRepShaderForScale( 599 p.setShader(CreateImageRepShaderForScale(
603 image_rep, SkShader::kRepeat_TileMode, shader_scale, 600 image_rep, SkShader::kRepeat_TileMode, shader_scale,
604 remove_image_scale ? image_rep.scale() : 1.f)); 601 remove_image_scale ? image_rep.scale() : 1.f));
605 602
606 // The rect will be filled by the bitmap. 603 // The rect will be filled by the bitmap.
607 canvas_->drawRect(dest_rect, p); 604 canvas_->drawRect(dest_rect, p);
608 } 605 }
609 606
610 } // namespace gfx 607 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/canvas.h ('k') | ui/gfx/render_text_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698