SkEmbossMaskFilter.h revision 6fcbfcead5dc1b61fa5b4c139a1a3714e8c58091
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/*
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * Copyright 2006 The Android Open Source Project
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner *
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * Use of this source code is governed by a BSD-style license that can be
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner * found in the LICENSE file.
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner */
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SkEmbossMaskFilter_DEFINED
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define SkEmbossMaskFilter_DEFINED
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "SkMaskFilter.h"
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1349ce8969d3154e1560106cfe530444c09410f217Greg Clayton/** \class SkEmbossMaskFilter
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1549ce8969d3154e1560106cfe530444c09410f217Greg Clayton    This mask filter creates a 3D emboss look, by specifying a light and blur amount.
169b82f8637b65c90e91c2827245550a1bb5e8df91Greg Clayton*/
179b82f8637b65c90e91c2827245550a1bb5e8df91Greg Claytonclass SK_API SkEmbossMaskFilter : public SkMaskFilter {
18eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Claytonpublic:
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    struct Light {
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        SkScalar    fDirection[3];  // x,y,z
21a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain        uint16_t    fPad;
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        uint8_t     fAmbient;
23da7af84c427c5c3a7b18e550c665c2f538670a34Greg Clayton        uint8_t     fSpecular;      // exponent, 4.4 right now
24da7af84c427c5c3a7b18e550c665c2f538670a34Greg Clayton    };
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SkEmbossMaskFilter(SkScalar blurSigma, const Light& light);
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // DEPRECATED - radius-based
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SkEmbossMaskFilter(const Light& light, SkScalar blurRadius);
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // overrides from SkMaskFilter
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //  This method is not exported to java.
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual SkMask::Format getFormat() const SK_OVERRIDE;
34289afcb5e26c2527a0d2e71f84e780b86bbcf90aGreg Clayton    //  This method is not exported to java.
35289afcb5e26c2527a0d2e71f84e780b86bbcf90aGreg Clayton    virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                            SkIPoint* margin) const SK_OVERRIDE;
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3826100dcbc49648eac03fa8e8c3d7c793808fc8d6Greg Clayton    SkDEVCODE(virtual void toString(SkString* str) const SK_OVERRIDE;)
39289afcb5e26c2527a0d2e71f84e780b86bbcf90aGreg Clayton    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmbossMaskFilter)
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SkEmbossMaskFilter(SkFlattenableReadBuffer&);
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Light       fLight;
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SkScalar    fBlurSigma;
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    typedef SkMaskFilter INHERITED;
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
52289afcb5e26c2527a0d2e71f84e780b86bbcf90aGreg Clayton#endif
53289afcb5e26c2527a0d2e71f84e780b86bbcf90aGreg Clayton