blob: 6f6e114e0b4a7128cf01b07510a9e11098de7489 [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
11#include "SkOpPathEffect.h"
12
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 Factory getFactory() const override { return CreateProc; }
18
19protected:
20 void flatten(SkWriteBuffer&) const override;
Mike Reed6d10f8b2018-08-16 13:22:16 -040021 bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override;
Mike Reed0ef539a2018-07-18 13:28:42 -040022
23private:
24 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
25 friend class SkFlattenable::PrivateInitializer;
26
27 sk_sp<SkPathEffect> fOne;
28 sk_sp<SkPathEffect> fTwo;
29 SkPathOp fOp;
30
31 typedef SkPathEffect INHERITED;
32};
33
34class SkMatrixPE : public SkPathEffect {
35public:
36 SkMatrixPE(const SkMatrix&);
37
Mike Reed0ef539a2018-07-18 13:28:42 -040038 Factory getFactory() const override { return CreateProc; }
39
40protected:
41 void flatten(SkWriteBuffer&) const override;
Mike Reed6d10f8b2018-08-16 13:22:16 -040042 bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override;
Mike Reed0ef539a2018-07-18 13:28:42 -040043
44private:
45 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
46 friend class SkFlattenable::PrivateInitializer;
47
48 SkMatrix fMatrix;
49
50 typedef SkPathEffect INHERITED;
51};
52
53class SkStrokePE : public SkPathEffect {
54public:
55 SkStrokePE(SkScalar width, SkPaint::Join, SkPaint::Cap, SkScalar miter);
56
Mike Reed0ef539a2018-07-18 13:28:42 -040057 Factory getFactory() const override { return CreateProc; }
58
59protected:
60 void flatten(SkWriteBuffer&) const override;
Mike Reed6d10f8b2018-08-16 13:22:16 -040061 bool onFilterPath(SkPath* dst, const SkPath& src, SkStrokeRec*, const SkRect*) const override;
62 // TODO: override onComputeFastBounds (I think)
Mike Reed0ef539a2018-07-18 13:28:42 -040063
64private:
65 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
66 friend class SkFlattenable::PrivateInitializer;
67
68 SkScalar fWidth,
69 fMiter;
70 SkPaint::Join fJoin;
71 SkPaint::Cap fCap;
72
73 typedef SkPathEffect INHERITED;
74};
75
76#endif
77