00001 /* 00002 * Copyright (C) 2006 The Android Open Source Project 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #ifndef SkEmbossMaskFilter_DEFINED 00018 #define SkEmbossMaskFilter_DEFINED 00019 00020 #include "SkMaskFilter.h" 00021 00026 class SkEmbossMaskFilter : public SkMaskFilter { 00027 public: 00028 struct Light { 00029 SkScalar fDirection[3]; // x,y,z 00030 uint16_t fPad; 00031 uint8_t fAmbient; 00032 uint8_t fSpecular; // exponent, 4.4 right now 00033 }; 00034 00035 SkEmbossMaskFilter(const Light& light, SkScalar blurRadius); 00036 00037 // overrides from SkMaskFilter 00038 // This method is not exported to java. 00039 virtual SkMask::Format getFormat(); 00040 // This method is not exported to java. 00041 virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix& matrix, SkIPoint* margin); 00042 00043 // overrides from SkFlattenable 00044 00045 // This method is not exported to java. 00046 virtual Factory getFactory(); 00047 // This method is not exported to java. 00048 virtual void flatten(SkFlattenableWriteBuffer&); 00049 00050 protected: 00051 SkEmbossMaskFilter(SkFlattenableReadBuffer&); 00052 00053 private: 00054 Light fLight; 00055 SkScalar fBlurRadius; 00056 00057 static SkFlattenable* CreateProc(SkFlattenableReadBuffer&); 00058 00059 typedef SkMaskFilter INHERITED; 00060 }; 00061 00062 #endif 00063