• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2006 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SkBlurMaskFilter_DEFINED
11 #define SkBlurMaskFilter_DEFINED
12 
13 // we include this since our callers will need to at least be able to ref/unref
14 #include "SkMaskFilter.h"
15 #include "SkScalar.h"
16 
17 class SK_API SkBlurMaskFilter {
18 public:
19     enum BlurStyle {
20         kNormal_BlurStyle,  //!< fuzzy inside and outside
21         kSolid_BlurStyle,   //!< solid inside, fuzzy outside
22         kOuter_BlurStyle,   //!< nothing inside, fuzzy outside
23         kInner_BlurStyle,   //!< fuzzy inside, nothing outside
24 
25         kBlurStyleCount
26     };
27 
28     enum BlurFlags {
29         kNone_BlurFlag = 0x00,
30         /** The blur layer's radius is not affected by transforms */
31         kIgnoreTransform_BlurFlag   = 0x01,
32         /** Use a smother, higher qulity blur algorithm */
33         kHighQuality_BlurFlag       = 0x02,
34         /** mask for all blur flags */
35         kAll_BlurFlag = 0x03
36     };
37 
38     /** Create a blur maskfilter.
39         @param radius   The radius to extend the blur from the original mask. Must be > 0.
40         @param style    The BlurStyle to use
41         @param flags    Flags to use - defaults to none
42         @return The new blur maskfilter
43     */
44     static SkMaskFilter* Create(SkScalar radius, BlurStyle style,
45                                 uint32_t flags = kNone_BlurFlag);
46 
47     /** Create an emboss maskfilter
48         @param direction    array of 3 scalars [x, y, z] specifying the direction of the light source
49         @param ambient      0...1 amount of ambient light
50         @param specular     coefficient for specular highlights (e.g. 8)
51         @param blurRadius   amount to blur before applying lighting (e.g. 3)
52         @return the emboss maskfilter
53     */
54     static SkMaskFilter* CreateEmboss(  const SkScalar direction[3],
55                                         SkScalar ambient, SkScalar specular,
56                                         SkScalar blurRadius);
57 
58     SK_DECLARE_FLATTENABLE_REGISTRAR()
59 
60 private:
61     SkBlurMaskFilter(); // can't be instantiated
62 };
63 
64 #endif
65 
66