blob: b60c2aadccbc24c132d3e88c3674a508d4617fbc [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"
humper@google.com7c5d7b72013-03-11 20:16:28 +000014#include "SkMask.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000015
16class SkBlurMask {
17public:
18 enum Style {
19 kNormal_Style, //!< fuzzy inside and outside
20 kSolid_Style, //!< solid inside, fuzzy outside
21 kOuter_Style, //!< nothing inside, fuzzy outside
22 kInner_Style, //!< fuzzy inside, nothing outside
23
24 kStyleCount
25 };
26
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000027 enum Quality {
28 kLow_Quality, //!< box blur
29 kHigh_Quality //!< three pass box blur (similar to gaussian)
30 };
31
skia.committer@gmail.com8ae714b2013-01-05 02:02:05 +000032 static bool BlurRect(SkMask *dst, const SkRect &src,
humper@google.coma99a92c2013-02-20 16:42:06 +000033 SkScalar radius, Style style,
skia.committer@gmail.com2e71f162013-03-12 07:12:32 +000034 SkIPoint *margin = NULL,
humper@google.com7c5d7b72013-03-11 20:16:28 +000035 SkMask::CreateMode createMode=SkMask::kComputeBoundsAndRenderImage_CreateMode);
bungeman@google.com5af16f82011-09-02 15:06:44 +000036 static bool Blur(SkMask* dst, const SkMask& src,
37 SkScalar radius, Style style, Quality quality,
38 SkIPoint* margin = NULL);
senorblanco@chromium.org71f0f342012-11-13 20:35:21 +000039 static bool BlurSeparable(SkMask* dst, const SkMask& src,
40 SkScalar radius, Style style, Quality quality,
41 SkIPoint* margin = NULL);
skia.committer@gmail.comd454ec12013-02-21 07:15:03 +000042
humper@google.coma99a92c2013-02-20 16:42:06 +000043
44 // the "ground truth" blur does a gaussian convolution; it's slow
45 // but useful for comparison purposes.
46
skia.committer@gmail.comd454ec12013-02-21 07:15:03 +000047 static bool BlurGroundTruth(SkMask* dst, const SkMask& src,
48 SkScalar provided_radius, Style style,
humper@google.coma99a92c2013-02-20 16:42:06 +000049 SkIPoint* margin = NULL);
50
senorblanco@chromium.org71f0f342012-11-13 20:35:21 +000051private:
52 static bool Blur(SkMask* dst, const SkMask& src,
53 SkScalar radius, Style style, Quality quality,
54 SkIPoint* margin, bool separable);
reed@android.com8a1c16f2008-12-17 15:59:43 +000055};
56
57#endif