diff options
author | Mike Reed <reed@google.com> | 2017-03-04 19:42:31 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-04 19:42:39 +0000 |
commit | 12da890fbdafb2a2e33ced24e207ffc8cdec54c7 (patch) | |
tree | 56cc2ae886ef068ff0ebb13a22c9357b40cdc6dd /include | |
parent | 7067fc6224833941380729857ad865547bc88430 (diff) |
Revert "move some of patheffect internals into private"
This reverts commit 7067fc6224833941380729857ad865547bc88430.
Reason for revert: need to update android jni
Original change's description:
> move some of patheffect internals into private
>
> BUG=skia:
>
> Change-Id: I00da9d38f16fb20f31e025dd817c5d430466a1d0
> Reviewed-on: https://skia-review.googlesource.com/9236
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>
TBR=reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Change-Id: I3a67b5aa9660742ec73563972b57d66c205dc0d5
Reviewed-on: https://skia-review.googlesource.com/9243
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkPathEffect.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h index a849048362..62f8993354 100644 --- a/include/core/SkPathEffect.h +++ b/include/core/SkPathEffect.h @@ -152,4 +152,119 @@ 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 |