blob: 51ec8f858fcc700e328a5ac50256629733e6ddbd [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
10#ifndef SkBlurMask_DEFINED
11#define SkBlurMask_DEFINED
12
13#include "SkShader.h"
14
15class SkBlurMask {
16public:
17 enum Style {
18 kNormal_Style, //!< fuzzy inside and outside
19 kSolid_Style, //!< solid inside, fuzzy outside
20 kOuter_Style, //!< nothing inside, fuzzy outside
21 kInner_Style, //!< fuzzy inside, nothing outside
22
23 kStyleCount
24 };
25
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000026 enum Quality {
27 kLow_Quality, //!< box blur
28 kHigh_Quality //!< three pass box blur (similar to gaussian)
29 };
30
skia.committer@gmail.com8ae714b2013-01-05 02:02:05 +000031 static bool BlurRect(SkMask *dst, const SkRect &src,
humper@google.coma99a92c2013-02-20 16:42:06 +000032 SkScalar radius, Style style,
humper@google.com7c7292c2013-01-04 20:29:03 +000033 SkIPoint *margin = NULL);
bungeman@google.com5af16f82011-09-02 15:06:44 +000034 static bool Blur(SkMask* dst, const SkMask& src,
35 SkScalar radius, Style style, Quality quality,
36 SkIPoint* margin = NULL);
senorblanco@chromium.org71f0f342012-11-13 20:35:21 +000037 static bool BlurSeparable(SkMask* dst, const SkMask& src,
38 SkScalar radius, Style style, Quality quality,
39 SkIPoint* margin = NULL);
humper@google.coma99a92c2013-02-20 16:42:06 +000040
41
42 // the "ground truth" blur does a gaussian convolution; it's slow
43 // but useful for comparison purposes.
44
45 static bool BlurGroundTruth(SkMask* dst, const SkMask& src,
46 SkScalar provided_radius, Style style,
47 SkIPoint* margin = NULL);
48
senorblanco@chromium.org71f0f342012-11-13 20:35:21 +000049private:
50 static bool Blur(SkMask* dst, const SkMask& src,
51 SkScalar radius, Style style, Quality quality,
52 SkIPoint* margin, bool separable);
reed@android.com8a1c16f2008-12-17 15:59:43 +000053};
54
55#endif