• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 SkBlurMaskFilter_DEFINED
9 #define SkBlurMaskFilter_DEFINED
10 
11 // we include this since our callers will need to at least be able to ref/unref
12 #include "SkMaskFilter.h"
13 #include "SkScalar.h"
14 #include "SkBlurTypes.h"
15 
16 class SK_API SkBlurMaskFilter {
17 public:
18     /**
19      *  If radius > 0, return the corresponding sigma, else return 0. Use this to convert from the
20      *  (legacy) idea of specify the blur "radius" to the standard notion of specifying its sigma.
21      */
22     static SkScalar ConvertRadiusToSigma(SkScalar radius);
23 
24     enum BlurFlags {
25         kNone_BlurFlag = 0x00,
26         /** The blur layer's radius is not affected by transforms */
27         kIgnoreTransform_BlurFlag   = 0x01,
28         /** Use a smother, higher qulity blur algorithm */
29         kHighQuality_BlurFlag       = 0x02,
30         /** mask for all blur flags */
31         kAll_BlurFlag = 0x03
32     };
33 
34     /** Create a blur maskfilter.
35      *  @param style    The SkBlurStyle to use
36      *  @param sigma    Standard deviation of the Gaussian blur to apply. Must be > 0.
37      *  @param flags    Flags to use - defaults to none
38      *  @return The new blur maskfilter
39      */
40     static SkMaskFilter* Create(SkBlurStyle style, SkScalar sigma, uint32_t flags = kNone_BlurFlag);
41 
42     /** Create an emboss maskfilter
43         @param blurSigma    standard deviation of the Gaussian blur to apply
44                             before applying lighting (e.g. 3)
45         @param direction    array of 3 scalars [x, y, z] specifying the direction of the light source
46         @param ambient      0...1 amount of ambient light
47         @param specular     coefficient for specular highlights (e.g. 8)
48         @return the emboss maskfilter
49     */
50     static SkMaskFilter* CreateEmboss(SkScalar blurSigma, const SkScalar direction[3],
51                                       SkScalar ambient, SkScalar specular);
52 
53     SK_ATTR_DEPRECATED("use sigma version")
54     static SkMaskFilter* CreateEmboss(const SkScalar direction[3],
55                                       SkScalar ambient, SkScalar specular,
56                                       SkScalar blurRadius);
57 
58     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
59 
60 private:
61     SkBlurMaskFilter(); // can't be instantiated
62 };
63 
64 #endif
65