-
Notifications
You must be signed in to change notification settings - Fork 28
/
mask_filter.hpp
51 lines (40 loc) · 1.07 KB
/
mask_filter.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#ifndef SKITY_EFFECT_MASK_FILTER_HPP
#define SKITY_EFFECT_MASK_FILTER_HPP
#include <memory>
#include <skity/geometry/rect.hpp>
#include <skity/macros.hpp>
namespace skity {
enum BlurStyle : int {
kNormal = 1, // fuzzy inside and outside
kSolid, // solid inside, fuzzy outside
kOuter, // nothing inside, fuzzy outside
kInner, // fuzzy inside, nothing outside
};
class SK_API MaskFilter {
public:
MaskFilter() = default;
~MaskFilter() = default;
BlurStyle blurStyle() const { return style_; }
float blurRadius() const { return radius_; }
/**
* @brief
*
* @param src
* @return Rect
*/
Rect approximateFilteredBounds(Rect const& src) const;
/**
* Create a blur mask filter
*
* @param style BlurStyle to use
* @param radius Radius of the Gaussian blur to apply. Must be > 0.
*
* @return blur mask instance
*/
static std::shared_ptr<MaskFilter> MakeBlur(BlurStyle style, float radius);
private:
BlurStyle style_ = {};
float radius_ = {};
};
} // namespace skity
#endif // SKITY_EFFECT_MASK_FILTER_HPP