diff options
author | 2016-11-09 13:59:58 -0500 | |
---|---|---|
committer | 2016-11-09 19:40:06 +0000 | |
commit | 824075071885b6b741c141cbe2134d8345d34589 (patch) | |
tree | 828b9fd105e92a6ff21b0dc942da6c015ea8ac73 /include/core/SkCanvas.h | |
parent | c78eff97549e8e346394d3e228395ceb8a467b35 (diff) |
Change SkCanvas to *not* inherit from SkRefCnt
Definitely tricky for classes like SkNWayCanvas, where the caller (today)
need not pay attention to ownership of the canvases it gave the NWay
(after this CL, the caller *must* managed ownership)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4441
DOCS_PREVIEW= https://skia.org/?cl=4441
Change-Id: Ib1ac07a3cdf0686d78e7aaa4735d45cc90bea081
Reviewed-on: https://skia-review.googlesource.com/4441
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'include/core/SkCanvas.h')
-rw-r--r-- | include/core/SkCanvas.h | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index ab47edde51..ba8a3830d0 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -60,7 +60,13 @@ class SkTextBlob; color, typeface, textSize, strokeWidth, shader (e.g. gradients, patterns), etc. */ -class SK_API SkCanvas : public SkRefCnt { +class SK_API SkCanvas +#ifdef SK_SUPPORT_LEGACY_CANVAS_IS_REFCNT +: public SkRefCnt +#else +: SkNoncopyable +#endif +{ enum PrivateSaveLayerFlags { kDontClipToLayer_PrivateSaveLayerFlag = 1U << 31, }; @@ -100,11 +106,22 @@ public: * Note: it is valid to request a supported ImageInfo, but with zero * dimensions. */ - static SkCanvas* NewRasterDirect(const SkImageInfo&, void*, size_t); + static std::unique_ptr<SkCanvas> MakeRasterDirect(const SkImageInfo&, void*, size_t); + + static std::unique_ptr<SkCanvas> MakeRasterDirectN32(int width, int height, SkPMColor* pixels, + size_t rowBytes) { + return MakeRasterDirect(SkImageInfo::MakeN32Premul(width, height), pixels, rowBytes); + } + +#ifdef SK_SUPPORT_LEGACY_CANVAS_IS_REFCNT + static SkCanvas* NewRasterDirect(const SkImageInfo& info, void* pixels, size_t rowBytes) { + return MakeRasterDirect(info, pixels, rowBytes).release(); + } static SkCanvas* NewRasterDirectN32(int width, int height, SkPMColor* pixels, size_t rowBytes) { - return NewRasterDirect(SkImageInfo::MakeN32Premul(width, height), pixels, rowBytes); + return MakeRasterDirectN32(width, height, pixels, rowBytes).release(); } +#endif /** * Creates an empty canvas with no backing device/pixels, and zero |