SkBlurMaskFilter.h revision 7bd141dce43ea3405bc60c9c84e6f910b851b079
15faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org/* 25faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Copyright 2006 The Android Open Source Project 35faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * 45faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * Use of this source code is governed by a BSD-style license that can be 55faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * found in the LICENSE file. 65faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org */ 75faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 85faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#ifndef SkBlurMaskFilter_DEFINED 93bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org#define SkBlurMaskFilter_DEFINED 105faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 113bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org// we include this since our callers will need to at least be able to ref/unref 125faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#include "SkMaskFilter.h" 135faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#include "SkScalar.h" 145faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 155faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgclass SK_API SkBlurMaskFilter { 165faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.orgpublic: 175faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org enum BlurStyle { 185faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kNormal_BlurStyle, //!< fuzzy inside and outside 195faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kSolid_BlurStyle, //!< solid inside, fuzzy outside 205faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kOuter_BlurStyle, //!< nothing inside, fuzzy outside 215faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kInner_BlurStyle, //!< fuzzy inside, nothing outside 22a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 23a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org kBlurStyleCount 24a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org }; 25a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 265faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org enum BlurFlags { 275faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kNone_BlurFlag = 0x00, 285faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org /** The blur layer's radius is not affected by transforms */ 295faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kIgnoreTransform_BlurFlag = 0x01, 305faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org /** Use a smother, higher qulity blur algorithm */ 31eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com kHighQuality_BlurFlag = 0x02, 32c3bd8af6d5722e854feca70c40d92f4954c5b67bcommit-bot@chromium.org /** mask for all blur flags */ 335faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org kAll_BlurFlag = 0x03 345faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org }; 355faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 365faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org /** 375faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org * DEPRECATED - radius-based 383bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org */ 393bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org static SkMaskFilter* Create(SkScalar radius, BlurStyle style, 403bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org uint32_t flags = kNone_BlurFlag); 413bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org 423bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org /** Create a blur maskfilter. 433bc16c8bc1ecb9ac4450f58093cc9e3edb8a50b8senorblanco@chromium.org @param style The BlurStyle to use 445faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org @param sigma Standard deviation of the Gaussian blur to apply. Must be > 0. 455faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org @param flags Flags to use - defaults to none 465faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org @return The new blur maskfilter 475faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org */ 485faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org static SkMaskFilter* Create(BlurStyle style, SkScalar sigma, 49f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina uint32_t flags = kNone_BlurFlag); 505faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org 515faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org /** Create an emboss maskfilter 5284cd099704b3896ca66081a96508572a924f850ccommit-bot@chromium.org @param blurSigma standard deviation of the Gaussian blur to apply 537938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org before applying lighting (e.g. 3) 547938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org @param direction array of 3 scalars [x, y, z] specifying the direction of the light source 555faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org @param ambient 0...1 amount of ambient light 565faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org @param specular coefficient for specular highlights (e.g. 8) 575faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org @return the emboss maskfilter 585faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org */ 595faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org static SkMaskFilter* CreateEmboss(SkScalar blurSigma, const SkScalar direction[3], 605faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org SkScalar ambient, SkScalar specular); 614b413c8bb123e42ca4b9c7bfa6bc2167283cb84ccommit-bot@chromium.org 625faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org // DEPRECATED - radius-based 637938bae14af94c1d48d122a2d686e123b66411a7senorblanco@chromium.org static SkMaskFilter* CreateEmboss(const SkScalar direction[3], 64cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org SkScalar ambient, SkScalar specular, 65cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org SkScalar blurRadius); 66cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org 67cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() 6884cd099704b3896ca66081a96508572a924f850ccommit-bot@chromium.org 69cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.orgprivate: 70cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org SkBlurMaskFilter(); // can't be instantiated 71cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org}; 72cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org 735faa2dc266ec933b3961f985e5718236f1ecbe47senorblanco@chromium.org#endif 74ff06af20fde68aa737b540dc6e42924532873b22junov@chromium.org