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