blob: c1f9b3e1ec29db7e0655ba2f6a072c3f20d88562 [file] [log] [blame]
Herb Derbya48ae6e2017-07-10 13:49:05 -04001/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkBlurMaskFilter.h"
9#include "SkBlurImageFilter.h"
10#include "gm.h"
11#include "sk_tool_utils.h"
12
13
14DEF_SIMPLE_GM(blurimagevmask, canvas, 700, 1200) {
15 SkPaint paint;
16 paint.setAntiAlias(true);
17 paint.setColor(SK_ColorBLACK);
18
19 SkPaint textPaint;
20 textPaint.setAntiAlias(true);
21 sk_tool_utils::set_portable_typeface(&textPaint);
22 textPaint.setTextSize(SkIntToScalar(25));
23
24 const double sigmas[] = {3.0, 8.0, 16.0, 24.0, 32.0};
25
26 canvas->drawString("mask blur", 285, 50, textPaint);
27 canvas->drawString("image blur", 285 + 250, 50, textPaint);
28
29
30 SkRect r = {35, 100, 135, 200};
31 for (auto sigma:sigmas) {
32
33 canvas->drawRect(r, paint);
34
35 char out[100];
36 sprintf(out, "Sigma: %g", sigma);
37 canvas->drawString(out, r.left(), r.bottom() + 35, textPaint);
38
39 r.offset(250, 0);
40
41 paint.setMaskFilter(
42 SkBlurMaskFilter::Make(kNormal_SkBlurStyle, sigma,
43 SkBlurMaskFilter::kHighQuality_BlurFlag));
44 canvas->drawRect(r, paint);
45 paint.setMaskFilter(nullptr);
46
47 SkPaint imageBlurPaint;
48 r.offset(250, 0);
49 imageBlurPaint.setImageFilter(SkBlurImageFilter::Make(sigma, sigma, nullptr));
50 canvas->saveLayer(nullptr, &imageBlurPaint);
51
52 canvas->drawRect(r, paint);
53 canvas->restore();
54 r.offset(-500, 200);
55 }
56
57}
Mike Reed28266272018-01-17 23:04:04 -050058
59#include "Resources.h"
60DEF_SIMPLE_GM(blur_image, canvas, 500, 500) {
61 auto image = GetResourceAsImage("images/mandrill_128.png");
62
63 SkPaint paint;
64 paint.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 4));
65
66 // both of these should draw with the blur, but (formerally) we had a bug where the unscaled
67 // version (taking the spriteblitter code path) ignore the maskfilter.
68
69 canvas->drawImage(image, 10, 10, &paint);
70 canvas->scale(1.01f, 1.01f);
71 canvas->drawImage(image, 10 + image->width() + 10.f, 10, &paint);
72}