10910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* 20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 30910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 50910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * you may not use this file except in compliance with the License. 60910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * You may obtain a copy of the License at 70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * See the License for the specific language governing permissions and 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * limitations under the License. 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */ 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkEmbossMaskFilter_DEFINED 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkEmbossMaskFilter_DEFINED 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkMaskFilter.h" 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/** \class SkEmbossMaskFilter 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project This mask filter creates a 3D emboss look, by specifying a light and blur amount. 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/ 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkEmbossMaskFilter : public SkMaskFilter { 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project struct Light { 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScalar fDirection[3]; // x,y,z 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint16_t fPad; 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint8_t fAmbient; 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint8_t fSpecular; // exponent, 4.4 right now 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project }; 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkEmbossMaskFilter(const Light& light, SkScalar blurRadius); 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // overrides from SkMaskFilter 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // This method is not exported to java. 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual SkMask::Format getFormat(); 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // This method is not exported to java. 4135e2e62b55598210f6999fc2ea26ff8f41446ffeDerek Sollenberger virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&, 4235e2e62b55598210f6999fc2ea26ff8f41446ffeDerek Sollenberger SkIPoint* margin); 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // overrides from SkFlattenable 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // This method is not exported to java. 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Factory getFactory(); 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // This method is not exported to java. 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void flatten(SkFlattenableWriteBuffer&); 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected: 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkEmbossMaskFilter(SkFlattenableReadBuffer&); 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project Light fLight; 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScalar fBlurRadius; 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static SkFlattenable* CreateProc(SkFlattenableReadBuffer&); 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project typedef SkMaskFilter INHERITED; 610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 65