blob: 1f51579ebfff523cc55d10b8a53951b123c0915a [file] [log] [blame]
Mike Reed0ef539a2018-07-18 13:28:42 -04001/*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkOpPE_DEFINED
9#define SkOpPE_DEFINED
10
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "include/effects/SkOpPathEffect.h"
Mike Reed0ef539a2018-07-18 13:28:42 -040012
13class SkOpPE : public SkPathEffect {
14public:
15 SkOpPE(sk_sp<SkPathEffect> one, sk_sp<SkPathEffect> two, SkPathOp op);
16
Mike Reed0ef539a2018-07-18 13:28:42 -040017
18protected:
19 void flatten(SkWriteBuffer&) const override;
Mike Reed6d10f8b2018-08-16 13:22:16 -040020 bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override;
Mike Reed0ef539a2018-07-18 13:28:42 -040021
22private:
Mike Klein4fee3232018-10-18 17:27:16 -040023 SK_FLATTENABLE_HOOKS(SkOpPE)
Mike Reed0ef539a2018-07-18 13:28:42 -040024
25 sk_sp<SkPathEffect> fOne;
26 sk_sp<SkPathEffect> fTwo;
27 SkPathOp fOp;
28
29 typedef SkPathEffect INHERITED;
30};
31
32class SkMatrixPE : public SkPathEffect {
33public:
34 SkMatrixPE(const SkMatrix&);
35
Mike Reed0ef539a2018-07-18 13:28:42 -040036protected:
37 void flatten(SkWriteBuffer&) const override;
Mike Reed6d10f8b2018-08-16 13:22:16 -040038 bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override;
Mike Reed0ef539a2018-07-18 13:28:42 -040039
40private:
Mike Klein4fee3232018-10-18 17:27:16 -040041 SK_FLATTENABLE_HOOKS(SkMatrixPE)
Mike Reed0ef539a2018-07-18 13:28:42 -040042
43 SkMatrix fMatrix;
44
45 typedef SkPathEffect INHERITED;
46};
47
48class SkStrokePE : public SkPathEffect {
49public:
50 SkStrokePE(SkScalar width, SkPaint::Join, SkPaint::Cap, SkScalar miter);
51
Mike Reed0ef539a2018-07-18 13:28:42 -040052protected:
53 void flatten(SkWriteBuffer&) const override;
Mike Reed6d10f8b2018-08-16 13:22:16 -040054 bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override;
55 // TODO: override onComputeFastBounds (I think)
Mike Reed0ef539a2018-07-18 13:28:42 -040056
57private:
Mike Klein4fee3232018-10-18 17:27:16 -040058 SK_FLATTENABLE_HOOKS(SkStrokePE)
Mike Reed0ef539a2018-07-18 13:28:42 -040059
60 SkScalar fWidth,
61 fMiter;
62 SkPaint::Join fJoin;
63 SkPaint::Cap fCap;
64
65 typedef SkPathEffect INHERITED;
66};
67
68#endif
69