diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkPathEffect.h | 129 |
1 files changed, 14 insertions, 115 deletions
diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h index 62f8993354..65adb33f3c 100644 --- a/include/core/SkPathEffect.h +++ b/include/core/SkPathEffect.h @@ -26,7 +26,21 @@ class SkStrokeRec; */ class SK_API SkPathEffect : public SkFlattenable { public: + /** + * Returns a patheffect that apples each effect (first and second) to the original path, + * and returns a path with the sum of these. + * + * result = first(path) + second(path) + * + */ static sk_sp<SkPathEffect> MakeSum(sk_sp<SkPathEffect> first, sk_sp<SkPathEffect> second); + + /** + * Returns a patheffect that applies the inner effect to the path, and then applies the + * outer effect to the result of the inner's. + * + * result = outer(inner(path)) + */ static sk_sp<SkPathEffect> MakeCompose(sk_sp<SkPathEffect> outer, sk_sp<SkPathEffect> inner); /** @@ -152,119 +166,4 @@ private: typedef SkFlattenable INHERITED; }; -#ifdef SK_SUPPORT_LEGACY_PATHEFFECT_SUBCLASSES - -/** \class SkPairPathEffect - - Common baseclass for Compose and Sum. This subclass manages two pathEffects, - including flattening them. It does nothing in filterPath, and is only useful - for managing the lifetimes of its two arguments. -*/ -class SK_API SkPairPathEffect : public SkPathEffect { -protected: - SkPairPathEffect(sk_sp<SkPathEffect> pe0, sk_sp<SkPathEffect> pe1); - - void flatten(SkWriteBuffer&) const override; - - // these are visible to our subclasses - sk_sp<SkPathEffect> fPE0; - sk_sp<SkPathEffect> fPE1; - - SK_TO_STRING_OVERRIDE() - -private: - typedef SkPathEffect INHERITED; -}; - -/** \class SkComposePathEffect - - This subclass of SkPathEffect composes its two arguments, to create - a compound pathEffect. -*/ -class SK_API SkComposePathEffect : public SkPairPathEffect { -public: - /** Construct a pathEffect whose effect is to apply first the inner pathEffect - and the the outer pathEffect (e.g. outer(inner(path))) - The reference counts for outer and inner are both incremented in the constructor, - and decremented in the destructor. - */ - static sk_sp<SkPathEffect> Make(sk_sp<SkPathEffect> outer, sk_sp<SkPathEffect> inner) { - if (!outer) { - return inner; - } - if (!inner) { - return outer; - } - return sk_sp<SkPathEffect>(new SkComposePathEffect(outer, inner)); - } - - virtual bool filterPath(SkPath* dst, const SkPath& src, - SkStrokeRec*, const SkRect*) const override; - - SK_TO_STRING_OVERRIDE() - SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposePathEffect) - -#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK - bool exposedInAndroidJavaAPI() const override { return true; } -#endif - -protected: - SkComposePathEffect(sk_sp<SkPathEffect> outer, sk_sp<SkPathEffect> inner) - : INHERITED(outer, inner) {} - -private: - // illegal - SkComposePathEffect(const SkComposePathEffect&); - SkComposePathEffect& operator=(const SkComposePathEffect&); - friend class SkPathEffect; - - typedef SkPairPathEffect INHERITED; -}; - -/** \class SkSumPathEffect - - This subclass of SkPathEffect applies two pathEffects, one after the other. - Its filterPath() returns true if either of the effects succeeded. -*/ -class SK_API SkSumPathEffect : public SkPairPathEffect { -public: - /** Construct a pathEffect whose effect is to apply two effects, in sequence. - (e.g. first(path) + second(path)) - The reference counts for first and second are both incremented in the constructor, - and decremented in the destructor. - */ - static sk_sp<SkPathEffect> Make(sk_sp<SkPathEffect> first, sk_sp<SkPathEffect> second) { - if (!first) { - return second; - } - if (!second) { - return first; - } - return sk_sp<SkPathEffect>(new SkSumPathEffect(first, second)); - } - - virtual bool filterPath(SkPath* dst, const SkPath& src, - SkStrokeRec*, const SkRect*) const override; - - SK_TO_STRING_OVERRIDE() - SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSumPathEffect) - -#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK - bool exposedInAndroidJavaAPI() const override { return true; } -#endif - -protected: - SkSumPathEffect(sk_sp<SkPathEffect> first, sk_sp<SkPathEffect> second) - : INHERITED(first, second) {} - -private: - // illegal - SkSumPathEffect(const SkSumPathEffect&); - SkSumPathEffect& operator=(const SkSumPathEffect&); - friend class SkPathEffect; - - typedef SkPairPathEffect INHERITED; -}; -#endif - #endif |