SkEmbossMaskFilter.h revision 8b0e8ac5f582de80356019406e2975079bf0829d
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*/
17class SK_API SkEmbossMaskFilter : public SkMaskFilter {
18public:
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
41protected:
42    SkEmbossMaskFilter(SkReadBuffer&);
43    virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
44
45private:
46    Light       fLight;
47    SkScalar    fBlurSigma;
48
49    typedef SkMaskFilter INHERITED;
50};
51
52#endif
53