158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger/* 258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Copyright 2013 Google Inc. 358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * 458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * found in the LICENSE file. 658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger */ 758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#ifndef SkGpuBlurUtils_DEFINED 958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#define SkGpuBlurUtils_DEFINED 1058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#if SK_SUPPORT_GPU 1258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass GrTexture; 1358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass GrContext; 1458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 1558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerstruct SkRect; 1758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergernamespace SkGpuBlurUtils { 1958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 2058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#if SK_SUPPORT_GPU 2158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger /** 2258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Applies a 2D Gaussian blur to a given texture. 2358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param context The GPU context 2458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param srcTexture The source texture to be blurred. 2558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param canClobberSrc If true, srcTexture may be overwritten, and 2658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * may be returned as the result. 2758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param rect The destination rectangle. 2858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param cropToRect If true, do not sample any pixels outside the 2958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * source rect. 3058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param sigmaX The blur's standard deviation in X. 3158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @param sigmaY The blur's standard deviation in Y. 3258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * @return the blurred texture, which may be srcTexture reffed, or a 3358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * new texture. It is the caller's responsibility to unref this texture. 3458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger */ 3558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger GrTexture* GaussianBlur(GrContext* context, 3658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger GrTexture* srcTexture, 3758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger bool canClobberSrc, 3858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkRect& rect, 3958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger bool cropToRect, 4058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger float sigmaX, 4158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger float sigmaY); 4258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 4358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 4458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger}; 4558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 4658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 47