/* * Copyright 2018 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkOpPE_DEFINED #define SkOpPE_DEFINED #include "SkOpPathEffect.h" class SkOpPE : public SkPathEffect { public: SkOpPE(sk_sp<SkPathEffect> one, sk_sp<SkPathEffect> two, SkPathOp op); protected: void flatten(SkWriteBuffer&) const override; bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override; private: SK_FLATTENABLE_HOOKS(SkOpPE) sk_sp<SkPathEffect> fOne; sk_sp<SkPathEffect> fTwo; SkPathOp fOp; typedef SkPathEffect INHERITED; }; class SkMatrixPE : public SkPathEffect { public: SkMatrixPE(const SkMatrix&); protected: void flatten(SkWriteBuffer&) const override; bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override; private: SK_FLATTENABLE_HOOKS(SkMatrixPE) SkMatrix fMatrix; typedef SkPathEffect INHERITED; }; class SkStrokePE : public SkPathEffect { public: SkStrokePE(SkScalar width, SkPaint::Join, SkPaint::Cap, SkScalar miter); protected: void flatten(SkWriteBuffer&) const override; bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override; // TODO: override onComputeFastBounds (I think) private: SK_FLATTENABLE_HOOKS(SkStrokePE) SkScalar fWidth, fMiter; SkPaint::Join fJoin; SkPaint::Cap fCap; typedef SkPathEffect INHERITED; }; #endif