9b352dc1e45b5d6a0c4ff1812290a2700680e763
[platform/framework/web/crosswalk.git] / src / third_party / skia / include / effects / SkBlurMaskFilter.h
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
15 class SK_API SkBlurMaskFilter {
16 public:
17     enum BlurStyle {
18         kNormal_BlurStyle,  //!< fuzzy inside and outside
19         kSolid_BlurStyle,   //!< solid inside, fuzzy outside
20         kOuter_BlurStyle,   //!< nothing inside, fuzzy outside
21         kInner_BlurStyle,   //!< fuzzy inside, nothing outside
22
23         kBlurStyleCount
24     };
25
26     enum BlurFlags {
27         kNone_BlurFlag = 0x00,
28         /** The blur layer's radius is not affected by transforms */
29         kIgnoreTransform_BlurFlag   = 0x01,
30         /** Use a smother, higher qulity blur algorithm */
31         kHighQuality_BlurFlag       = 0x02,
32         /** mask for all blur flags */
33         kAll_BlurFlag = 0x03
34     };
35
36     SK_ATTR_DEPRECATED("use sigma version")
37     static SkMaskFilter* Create(SkScalar radius, BlurStyle style,
38                                 uint32_t flags = kNone_BlurFlag);
39
40     /** Create a blur maskfilter.
41         @param style    The BlurStyle to use
42         @param sigma    Standard deviation of the Gaussian blur to apply. Must be > 0.
43         @param flags    Flags to use - defaults to none
44         @return The new blur maskfilter
45     */
46     static SkMaskFilter* Create(BlurStyle style, SkScalar sigma,
47                                 uint32_t flags = kNone_BlurFlag);
48
49     /** Create an emboss maskfilter
50         @param blurSigma    standard deviation of the Gaussian blur to apply
51                             before applying lighting (e.g. 3)
52         @param direction    array of 3 scalars [x, y, z] specifying the direction of the light source
53         @param ambient      0...1 amount of ambient light
54         @param specular     coefficient for specular highlights (e.g. 8)
55         @return the emboss maskfilter
56     */
57     static SkMaskFilter* CreateEmboss(SkScalar blurSigma, const SkScalar direction[3],
58                                       SkScalar ambient, SkScalar specular);
59
60     SK_ATTR_DEPRECATED("use sigma version")
61     static SkMaskFilter* CreateEmboss(const SkScalar direction[3],
62                                       SkScalar ambient, SkScalar specular,
63                                       SkScalar blurRadius);
64
65     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
66
67 private:
68     SkBlurMaskFilter(); // can't be instantiated
69 };
70
71 #endif