1/*
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 SkOpPathEffect_DEFINED
9#define SkOpPathEffect_DEFINED
10
11#include "include/core/SkPaint.h"
12#include "include/core/SkPathEffect.h"
13#include "include/pathops/SkPathOps.h"
14
15class SK_API SkMergePathEffect {
16public:
17 /* Defers to two other patheffects, and then combines their outputs using the specified op.
18 * e.g.
19 * result = output_one op output_two
20 *
21 * If either one or two is nullptr, then the original path is passed through to the op.
22 */
23 static sk_sp<SkPathEffect> Make(sk_sp<SkPathEffect> one, sk_sp<SkPathEffect> two, SkPathOp op);
24};
25
26class SK_API SkMatrixPathEffect {
27public:
28 static sk_sp<SkPathEffect> MakeTranslate(SkScalar dx, SkScalar dy);
29 static sk_sp<SkPathEffect> Make(const SkMatrix&);
30};
31
32class SK_API SkStrokePathEffect {
33public:
34 static sk_sp<SkPathEffect> Make(SkScalar width, SkPaint::Join, SkPaint::Cap,
35 SkScalar miter = 4);
36};
37
38#endif
39