aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/BlurRectBench.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-09-06 14:16:12 +0000
committerGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-09-06 14:16:12 +0000
commitb7061176c7f414616fe2e79e832b3e0abe326af6 (patch)
tree05269431ac1dfa9b62d5fa34a0351e2f21af712e /bench/BlurRectBench.cpp
parentb27eba7c28c7a52e6af91743ab51c266ed96dccd (diff)
Push sigma-based blur interface into our GMs/benches/tests/samplecode
Diffstat (limited to 'bench/BlurRectBench.cpp')
-rw-r--r--bench/BlurRectBench.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/bench/BlurRectBench.cpp b/bench/BlurRectBench.cpp
index 1f40780fc2..5c93cd5d1a 100644
--- a/bench/BlurRectBench.cpp
+++ b/bench/BlurRectBench.cpp
@@ -15,7 +15,9 @@
#define SMALL SkIntToScalar(2)
#define REAL SkFloatToScalar(1.5f)
+static const SkScalar kMedium = SkIntToScalar(5);
#define BIG SkIntToScalar(10)
+static const SkScalar kMedBig = SkIntToScalar(20);
#define REALBIG SkFloatToScalar(30.5f)
class BlurRectBench: public SkBenchmark {
@@ -83,12 +85,13 @@ class BlurRectDirectBench: public BlurRectBench {
name.printf("blurrect_direct_%d", SkScalarRoundToInt(rad));
}
- setName(name);
+ this->setName(name);
}
protected:
virtual void makeBlurryRect(const SkRect& r) SK_OVERRIDE {
SkMask mask;
- SkBlurMask::BlurRect(&mask, r, this->radius(), SkBlurMask::kNormal_Style);
+ SkBlurMask::BlurRect(SkBlurMask::ConvertRadiusToSigma(this->radius()),
+ &mask, r, SkBlurMask::kNormal_Style);
SkMask::FreeImage(mask.fImage);
}
private:
@@ -127,12 +130,14 @@ class BlurRectBoxFilterBench: public BlurRectSeparableBench {
public:
BlurRectBoxFilterBench(void *param, SkScalar rad) : INHERITED(param, rad) {
SkString name;
+
if (SkScalarFraction(rad) != 0) {
name.printf("blurrect_boxfilter_%.2f", SkScalarToFloat(rad));
} else {
name.printf("blurrect_boxfilter_%d", SkScalarRoundToInt(rad));
}
- setName(name);
+
+ this->setName(name);
}
protected:
@@ -140,9 +145,9 @@ protected:
virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE {
SkMask mask;
mask.fImage = NULL;
- SkBlurMask::Blur(&mask, fSrcMask, this->radius(),
- SkBlurMask::kNormal_Style,
- SkBlurMask::kHigh_Quality);
+ SkBlurMask::BoxBlur(&mask, fSrcMask, SkBlurMask::ConvertRadiusToSigma(this->radius()),
+ SkBlurMask::kNormal_Style,
+ SkBlurMask::kHigh_Quality);
SkMask::FreeImage(mask.fImage);
}
private:
@@ -153,12 +158,14 @@ class BlurRectGaussianBench: public BlurRectSeparableBench {
public:
BlurRectGaussianBench(void *param, SkScalar rad) : INHERITED(param, rad) {
SkString name;
+
if (SkScalarFraction(rad) != 0) {
name.printf("blurrect_gaussian_%.2f", SkScalarToFloat(rad));
} else {
name.printf("blurrect_gaussian_%d", SkScalarRoundToInt(rad));
}
- setName(name);
+
+ this->setName(name);
}
protected:
@@ -166,8 +173,8 @@ protected:
virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE {
SkMask mask;
mask.fImage = NULL;
- SkBlurMask::BlurGroundTruth(&mask, fSrcMask, this->radius(),
- SkBlurMask::kNormal_Style);
+ SkBlurMask::BlurGroundTruth(SkBlurMask::ConvertRadiusToSigma(this->radius()),
+ &mask, fSrcMask, SkBlurMask::kNormal_Style);
SkMask::FreeImage(mask.fImage);
}
private:
@@ -187,11 +194,11 @@ DEF_BENCH(return new BlurRectDirectBench(p, BIG);)
DEF_BENCH(return new BlurRectDirectBench(p, REALBIG);)
DEF_BENCH(return new BlurRectDirectBench(p, REAL);)
-DEF_BENCH(return new BlurRectDirectBench(p, SkIntToScalar(5));)
-DEF_BENCH(return new BlurRectDirectBench(p, SkIntToScalar(20));)
+DEF_BENCH(return new BlurRectDirectBench(p, kMedium);)
+DEF_BENCH(return new BlurRectDirectBench(p, kMedBig);)
-DEF_BENCH(return new BlurRectBoxFilterBench(p, SkIntToScalar(5));)
-DEF_BENCH(return new BlurRectBoxFilterBench(p, SkIntToScalar(20));)
+DEF_BENCH(return new BlurRectBoxFilterBench(p, kMedium);)
+DEF_BENCH(return new BlurRectBoxFilterBench(p, kMedBig);)
#if 0
// disable Gaussian benchmarks; the algorithm works well enough