Home | History | Annotate | Download | only in effects
      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(SkFlattenableReadBuffer&);
     43     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
     44 
     45 private:
     46     Light       fLight;
     47     SkScalar    fBlurSigma;
     48 
     49     typedef SkMaskFilter INHERITED;
     50 };
     51 
     52 #endif
     53