SkEmbossMaskFilter.h revision 0f10f7bf1fb43ca6346dc220a076773b1f19a367
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 static SkEmbossMaskFilter* Create(SkScalar blurSigma, const Light& light) { 27 return SkNEW_ARGS(SkEmbossMaskFilter, (blurSigma, light)); 28 } 29 30 // overrides from SkMaskFilter 31 // This method is not exported to java. 32 virtual SkMask::Format getFormat() const SK_OVERRIDE; 33 // This method is not exported to java. 34 virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, 35 SkIPoint* margin) const SK_OVERRIDE; 36 37 SK_TO_STRING_OVERRIDE() 38 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmbossMaskFilter) 39 40protected: 41 SkEmbossMaskFilter(SkReadBuffer&); 42 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 43 44#ifdef SK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS 45public: 46#endif 47 SkEmbossMaskFilter(SkScalar blurSigma, const Light& light); 48 49private: 50 Light fLight; 51 SkScalar fBlurSigma; 52 53 typedef SkMaskFilter INHERITED; 54}; 55 56#endif 57