Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / include / effects / SkEmbossMaskFilter.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 SkEmbossMaskFilter_DEFINED
9 #define SkEmbossMaskFilter_DEFINED
10
11 #include "SkMaskFilter.h"
12
13 /** \class SkEmbossMaskFilter
14
15     This mask filter creates a 3D emboss look, by specifying a light and blur amount.
16 */
17 class SK_API SkEmbossMaskFilter : public SkMaskFilter {
18 public:
19     struct Light {
20         SkScalar    fDirection[3];  // x,y,z
21         uint16_t    fPad;
22         uint8_t     fAmbient;
23         uint8_t     fSpecular;      // exponent, 4.4 right now
24     };
25
26     SkEmbossMaskFilter(SkScalar blurSigma, const Light& light);
27
28     SK_ATTR_DEPRECATED("use sigma version")
29     SkEmbossMaskFilter(const Light& light, SkScalar blurRadius);
30
31     // overrides from SkMaskFilter
32     //  This method is not exported to java.
33     virtual SkMask::Format getFormat() const SK_OVERRIDE;
34     //  This method is not exported to java.
35     virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
36                             SkIPoint* margin) const SK_OVERRIDE;
37
38     SkDEVCODE(virtual void toString(SkString* str) const SK_OVERRIDE;)
39     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmbossMaskFilter)
40
41 protected:
42     SkEmbossMaskFilter(SkReadBuffer&);
43     virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
44
45 private:
46     Light       fLight;
47     SkScalar    fBlurSigma;
48
49     typedef SkMaskFilter INHERITED;
50 };
51
52 #endif