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

Unified Diff: ui/gfx/canvas.cc

Issue 2764633002: cc/paint: Remove cc::PaintSurface. (Closed)
Patch Set: more stuff Created 3 years, 9 months 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 side-by-side diff with in-line comments
Download patch
Index: ui/gfx/canvas.cc
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc
index 60f0077bf96087faf204441fb6148644cb6b3b6c..fac618b585700a3fa96d6566148e5fa91ded3acb 100644
--- a/ui/gfx/canvas.cc
+++ b/ui/gfx/canvas.cc
@@ -9,8 +9,10 @@
#include "base/i18n/rtl.h"
#include "base/logging.h"
+#include "base/memory/ptr_util.h"
#include "cc/paint/paint_flags.h"
#include "cc/paint/paint_shader.h"
+#include "cc/paint/skia_paint_canvas.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkRefCnt.h"
@@ -31,14 +33,11 @@ namespace gfx {
namespace {
-sk_sp<cc::PaintSurface> CreateSurface(const Size& size, bool is_opaque) {
- // SkSurface cannot be zero-sized, but clients of Canvas sometimes request
- // that (and then later resize).
- int width = std::max(size.width(), 1);
- int height = std::max(size.height(), 1);
+std::unique_ptr<cc::PaintCanvas> CreateCanvas(const Size& size,
danakj 2017/03/22 15:06:51 vmpstr is also changing this code in https://coder
+ bool is_opaque) {
SkAlphaType alpha = is_opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
- SkImageInfo info = SkImageInfo::MakeN32(width, height, alpha);
- return cc::PaintSurface::MakeRaster(info);
+ SkImageInfo info = SkImageInfo::MakeN32(size.width(), size.height(), alpha);
+ return cc::SkiaPaintCanvas::CreateRasterZeroed(info);
}
} // namespace
@@ -46,8 +45,8 @@ sk_sp<cc::PaintSurface> CreateSurface(const Size& size, bool is_opaque) {
Canvas::Canvas(const Size& size, float image_scale, bool is_opaque)
: image_scale_(image_scale) {
Size pixel_size = ScaleToCeiledSize(size, image_scale);
- surface_ = CreateSurface(pixel_size, is_opaque);
- canvas_ = surface_->getCanvas();
+ owned_canvas_ = CreateCanvas(pixel_size, is_opaque);
+ canvas_ = owned_canvas_.get();
#if !defined(USE_CAIRO)
// skia::PlatformCanvas instances are initialized to 0 by Cairo, but
@@ -62,8 +61,8 @@ Canvas::Canvas(const Size& size, float image_scale, bool is_opaque)
Canvas::Canvas()
: image_scale_(1.f),
- surface_(CreateSurface({0, 0}, false)),
- canvas_(surface_->getCanvas()) {}
+ owned_canvas_(CreateCanvas({0, 0}, false)),
+ canvas_(owned_canvas_.get()) {}
Canvas::Canvas(cc::PaintCanvas* canvas, float image_scale)
: image_scale_(image_scale), canvas_(canvas) {
@@ -78,8 +77,8 @@ void Canvas::RecreateBackingCanvas(const Size& size,
bool is_opaque) {
image_scale_ = image_scale;
Size pixel_size = ScaleToFlooredSize(size, image_scale);
- surface_ = CreateSurface(pixel_size, is_opaque);
- canvas_ = surface_->getCanvas();
+ owned_canvas_ = CreateCanvas(pixel_size, is_opaque);
+ canvas_ = owned_canvas_.get();
SkScalar scale_scalar = SkFloatToScalar(image_scale);
canvas_->scale(scale_scalar, scale_scalar);

Powered by Google App Engine
This is Rietveld 408576698