160014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org/* 260014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * Copyright 2011 The Android Open Source Project 360014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * 460014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * Use of this source code is governed by a BSD-style license that can be 560014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * found in the LICENSE file. 660014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org */ 760014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org 860014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org#ifndef SkBlurImageFilter_DEFINED 960014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org#define SkBlurImageFilter_DEFINED 1060014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org 11377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.org#include "SkImageFilter.h" 12bf2768bab9f3b21c03a8f9a75dc891231d5857ccsenorblanco@chromium.org#include "SkSize.h" 1360014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org 14377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.orgclass SK_API SkBlurImageFilter : public SkImageFilter { 1560014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.orgpublic: 16cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org static SkBlurImageFilter* Create(SkScalar sigmaX, 17cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org SkScalar sigmaY, 18cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org SkImageFilter* input = NULL, 195e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco const CropRect* cropRect = NULL, uint32_t uniqueID = 0) { 205e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco return SkNEW_ARGS(SkBlurImageFilter, (sigmaX, sigmaY, input, cropRect, uniqueID)); 21cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org } 22cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org 23336d1d759590d9bedcbc5a96d0fff79861cf8f7asenorblanco@chromium.org virtual void computeFastBounds(const SkRect&, SkRect*) const SK_OVERRIDE; 2476dd277b1fa021c42fc3acdd8d61e7dc05f9c267reed@google.com 25ba28d03e94dc221d6a803bf2a84a420b9159255cdjsollen@google.com SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilter) 26d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com 2754e01b2ab985e7a7d38109812069d056d128bfa1senorblanco@chromium.orgprotected: 28bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org SkBlurImageFilter(SkScalar sigmaX, 29bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org SkScalar sigmaY, 30bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org SkImageFilter* input, 315e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco const CropRect* cropRect, 325e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958senorblanco uint32_t uniqueID); 339fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 348b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org explicit SkBlurImageFilter(SkReadBuffer& buffer); 359fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif 368b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 3776dd277b1fa021c42fc3acdd8d61e7dc05f9c267reed@google.com 384cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 39ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE; 40c4b12f19a46946e1c02f3525e0ea4902b09feac5senorblanco@chromium.org virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&, 41c4b12f19a46946e1c02f3525e0ea4902b09feac5senorblanco@chromium.org SkIRect* dst) const SK_OVERRIDE; 4276dd277b1fa021c42fc3acdd8d61e7dc05f9c267reed@google.com 43302cffba86a188373c99833d83392f33e6014542senorblanco@chromium.org bool canFilterImageGPU() const SK_OVERRIDE { return true; } 444cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context& ctx, 45ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE; 46302cffba86a188373c99833d83392f33e6014542senorblanco@chromium.org 4760014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.orgprivate: 4860014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org SkSize fSigma; 49377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.org typedef SkImageFilter INHERITED; 5060014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org}; 5160014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org 5260014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org#endif 53