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

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

Issue 2476113002: Change call-sites now that SkCanvas is not ref-counted (Closed)
Patch Set: try fixing win again 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()) {}
48 50
49 Canvas::Canvas(sk_sp<SkCanvas> canvas, float image_scale) 51 Canvas::Canvas(SkCanvas* canvas, float image_scale)
50 : image_scale_(image_scale), canvas_(std::move(canvas)) { 52 : image_scale_(image_scale), canvas_(canvas) {
51 DCHECK(canvas_); 53 DCHECK(canvas_);
52 } 54 }
53 55
54 Canvas::~Canvas() { 56 Canvas::~Canvas() {
55 } 57 }
56 58
57 void Canvas::RecreateBackingCanvas(const Size& size, 59 void Canvas::RecreateBackingCanvas(const Size& size,
58 float image_scale, 60 float image_scale,
59 bool is_opaque) { 61 bool is_opaque) {
60 image_scale_ = image_scale; 62 image_scale_ = image_scale;
61 Size pixel_size = ScaleToFlooredSize(size, image_scale); 63 Size pixel_size = ScaleToFlooredSize(size, image_scale);
62 canvas_ = sk_sp<SkCanvas>(skia::CreatePlatformCanvas(pixel_size.width(), 64 canvas_owner_ = skia::CreatePlatformCanvas(pixel_size.width(),
63 pixel_size.height(), 65 pixel_size.height(), is_opaque);
64 is_opaque)); 66 canvas_ = canvas_owner_.get();
67
65 SkScalar scale_scalar = SkFloatToScalar(image_scale); 68 SkScalar scale_scalar = SkFloatToScalar(image_scale);
66 canvas_->scale(scale_scalar, scale_scalar); 69 canvas_->scale(scale_scalar, scale_scalar);
67 } 70 }
68 71
69 // static 72 // static
70 void Canvas::SizeStringInt(const base::string16& text, 73 void Canvas::SizeStringInt(const base::string16& text,
71 const FontList& font_list, 74 const FontList& font_list,
72 int* width, 75 int* width,
73 int* height, 76 int* height,
74 int line_height, 77 int line_height,
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality); 601 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality);
599 p.setShader(CreateImageRepShaderForScale( 602 p.setShader(CreateImageRepShaderForScale(
600 image_rep, SkShader::kRepeat_TileMode, shader_scale, 603 image_rep, SkShader::kRepeat_TileMode, shader_scale,
601 remove_image_scale ? image_rep.scale() : 1.f)); 604 remove_image_scale ? image_rep.scale() : 1.f));
602 605
603 // The rect will be filled by the bitmap. 606 // The rect will be filled by the bitmap.
604 canvas_->drawRect(dest_rect, p); 607 canvas_->drawRect(dest_rect, p);
605 } 608 }
606 609
607 } // namespace gfx 610 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698