Index: include/core/SkXfermode.h |
diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h |
index 2c4da5f999fd17b1737a2f258e2bbb336671750a..db8d570ce0c3cdbee3323f29a658aa8369b089bf 100644 |
--- a/include/core/SkXfermode.h |
+++ b/include/core/SkXfermode.h |
@@ -126,6 +126,9 @@ public: |
* if the xfermode is NULL, and if so, treats it as kSrcOver_Mode. |
*/ |
static bool AsMode(const SkXfermode*, Mode* mode); |
+ static bool AsMode(const sk_sp<SkXfermode>& xfer, Mode* mode) { |
+ return AsMode(xfer.get(), mode); |
+ } |
/** |
* Returns true if the xfermode claims to be the specified Mode. This works |
@@ -138,10 +141,22 @@ public: |
* } |
*/ |
static bool IsMode(const SkXfermode* xfer, Mode mode); |
+ static bool IsMode(const sk_sp<SkXfermode>& xfer, Mode mode) { |
+ return IsMode(xfer.get(), mode); |
+ } |
/** Return an SkXfermode object for the specified mode. |
*/ |
- static SkXfermode* Create(Mode mode); |
+ static sk_sp<SkXfermode> Make(Mode); |
+#ifdef SK_SUPPORT_LEGACY_XFERMODE_PTR |
+ static SkXfermode* Create(Mode mode) { |
+ return Make(mode).release(); |
+ } |
+ SK_ATTR_DEPRECATED("use AsMode(...)") |
+ static bool IsMode(const SkXfermode* xfer, Mode* mode) { |
+ return AsMode(xfer, mode); |
+ } |
+#endif |
/** Return a function pointer to a routine that applies the specified |
porter-duff transfer mode. |
@@ -159,11 +174,6 @@ public: |
*/ |
static bool ModeAsCoeff(Mode mode, Coeff* src, Coeff* dst); |
- SK_ATTR_DEPRECATED("use AsMode(...)") |
- static bool IsMode(const SkXfermode* xfer, Mode* mode) { |
- return AsMode(xfer, mode); |
- } |
- |
/** |
* Returns whether or not the xfer mode can support treating coverage as alpha |
*/ |
@@ -174,6 +184,9 @@ public: |
* the xfermode is NULL, and if so, treats it as kSrcOver_Mode. |
*/ |
static bool SupportsCoverageAsAlpha(const SkXfermode* xfer); |
+ static bool SupportsCoverageAsAlpha(const sk_sp<SkXfermode>& xfer) { |
+ return SupportsCoverageAsAlpha(xfer.get()); |
+ } |
enum SrcColorOpacity { |
// The src color is known to be opaque (alpha == 255) |
@@ -198,6 +211,9 @@ public: |
* the xfermode is NULL, and if so, treats it as kSrcOver_Mode. |
*/ |
static bool IsOpaque(const SkXfermode* xfer, SrcColorOpacity opacityType); |
+ static bool IsOpaque(const sk_sp<SkXfermode>& xfer, SrcColorOpacity opacityType) { |
+ return IsOpaque(xfer.get(), opacityType); |
+ } |
#if SK_SUPPORT_GPU |
/** Used by the SkXfermodeImageFilter to blend two colors via a GrFragmentProcessor. |
@@ -228,6 +244,9 @@ public: |
typedef void (*D32Proc)(const SkXfermode*, uint32_t dst[], const SkPM4f src[], |
int count, const SkAlpha coverage[]); |
static D32Proc GetD32Proc(SkXfermode*, uint32_t flags); |
+ static D32Proc GetD32Proc(const sk_sp<SkXfermode>& xfer, uint32_t flags) { |
+ return GetD32Proc(xfer.get(), flags); |
+ } |
enum D64Flags { |
kSrcIsOpaque_D64Flag = 1 << 0, |
@@ -237,6 +256,9 @@ public: |
typedef void (*D64Proc)(const SkXfermode*, uint64_t dst[], const SkPM4f src[], int count, |
const SkAlpha coverage[]); |
static D64Proc GetD64Proc(SkXfermode*, uint32_t flags); |
+ static D64Proc GetD64Proc(const sk_sp<SkXfermode>& xfer, uint32_t flags) { |
+ return GetD64Proc(xfer.get(), flags); |
+ } |
enum LCDFlags { |
kSrcIsOpaque_LCDFlag = 1 << 0, // else src(s) may have alpha < 1 |