aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkCanvas.h
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-11-12 08:06:55 -0600
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-13 18:31:13 +0000
commit5df4934b3e40cdc378e225d1dda39f015cae9bae (patch)
treef0871dcbca35730333ad3b14115e6a14987fac7b /include/core/SkCanvas.h
parentf982cb37e3092e7a69c13a12ec09806ceff5af45 (diff)
Revert[2] "Change SkCanvas to *not* inherit from SkRefCnt"
Changes over original: - conditionalize ownership in SkPictureRecorder - conditionalize ownership in SkCanvasStateUtils This reverts commit b613c266df48cf45296ecc23d1bd7098c84bb7ba. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4742 Change-Id: Ib25514d6f546c69b6650b5c957403b04f7380dc2 Reviewed-on: https://skia-review.googlesource.com/4742 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'include/core/SkCanvas.h')
-rw-r--r--include/core/SkCanvas.h23
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