1 | /* |
---|---|
2 | * Copyright 2006 The Android Open Source Project |
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 SkMaskFilter_DEFINED |
9 | #define SkMaskFilter_DEFINED |
10 | |
11 | #include "include/core/SkBlurTypes.h" |
12 | #include "include/core/SkCoverageMode.h" |
13 | #include "include/core/SkFlattenable.h" |
14 | #include "include/core/SkScalar.h" |
15 | |
16 | class SkMatrix; |
17 | struct SkRect; |
18 | |
19 | /** \class SkMaskFilter |
20 | |
21 | SkMaskFilter is the base class for object that perform transformations on |
22 | the mask before drawing it. An example subclass is Blur. |
23 | */ |
24 | class SK_API SkMaskFilter : public SkFlattenable { |
25 | public: |
26 | /** Create a blur maskfilter. |
27 | * @param style The SkBlurStyle to use |
28 | * @param sigma Standard deviation of the Gaussian blur to apply. Must be > 0. |
29 | * @param respectCTM if true the blur's sigma is modified by the CTM. |
30 | * @return The new blur maskfilter |
31 | */ |
32 | static sk_sp<SkMaskFilter> MakeBlur(SkBlurStyle style, SkScalar sigma, |
33 | bool respectCTM = true); |
34 | |
35 | static SkFlattenable::Type GetFlattenableType() { |
36 | return kSkMaskFilter_Type; |
37 | } |
38 | |
39 | SkFlattenable::Type getFlattenableType() const override { |
40 | return kSkMaskFilter_Type; |
41 | } |
42 | |
43 | static sk_sp<SkMaskFilter> Deserialize(const void* data, size_t size, |
44 | const SkDeserialProcs* procs = nullptr) { |
45 | return sk_sp<SkMaskFilter>(static_cast<SkMaskFilter*>( |
46 | SkFlattenable::Deserialize( |
47 | kSkMaskFilter_Type, data, size, procs).release())); |
48 | } |
49 | |
50 | private: |
51 | static void RegisterFlattenables(); |
52 | friend class SkFlattenable; |
53 | }; |
54 | |
55 | #endif |
56 |