SkEmbossMaskFilter.h revision 6806fe87e0b39e283291c1a1c7d1d864230aa2aa
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(const Light& light, SkScalar blurRadius);
27
28    // overrides from SkMaskFilter
29    //  This method is not exported to java.
30    virtual SkMask::Format getFormat();
31    //  This method is not exported to java.
32    virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
33                            SkIPoint* margin);
34
35    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmbossMaskFilter)
36
37protected:
38    SkEmbossMaskFilter(SkFlattenableReadBuffer&);
39    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
40
41private:
42    Light       fLight;
43    SkScalar    fBlurRadius;
44
45    typedef SkMaskFilter INHERITED;
46};
47
48#endif
49