blob: d3f188261bdd5efab8fd7c9bd5332cd921153d40 [file] [log] [blame]
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +00001#include "gm.h"
2#include "SkPicture.h"
3#include "SkRectShape.h"
4#include "SkBlurDrawLooper.h"
5
6namespace skiagm {
7
8///////////////////////////////////////////////////////////////////////////////
9
10class ShadowsGM : public GM {
11
12public:
13 SkPath fCirclePath;
14 SkPaint fPaint;
15 SkRectShape fRectShape;
16 ShadowsGM() {
17 fCirclePath.addCircle(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(10) );
18 fPaint.setStrokeWidth(SkIntToScalar(4));
19 fPaint.setAntiAlias(true);
20 fPaint.setColor(0xFF00FF00);
21 fPaint.setStyle(SkPaint::kStroke_Style);
22 SkRect rect;
23 rect.set(SkIntToScalar(10), SkIntToScalar(10),
24 SkIntToScalar(30), SkIntToScalar(30));
25 fRectShape.setRect(rect);
26 fRectShape.paint().setColor(SK_ColorRED);
27 }
28
29 virtual ~ShadowsGM() {
30 }
31
32protected:
33 virtual SkString onShortName() {
34 return SkString("shadows");
35 }
36
37 virtual SkISize onISize() {
38 return make_isize(200, 80);
39 }
40
41 void drawBG(SkCanvas* canvas) {
42 canvas->drawColor(0xFFDDDDDD);
43 }
44
45 virtual void onDraw(SkCanvas* canvas) {
46 this->drawBG(canvas);
47
48 SkBlurDrawLooper* shadowLoopers[5];
49 shadowLoopers[0] =
epoger@google.com8f096722011-05-24 17:07:01 +000050 new SkBlurDrawLooper (SkIntToScalar(10), SkIntToScalar(5),
51 SkIntToScalar(10), 0xFF0000FF,
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000052 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
53 SkBlurDrawLooper::kOverrideColor_BlurFlag |
54 SkBlurDrawLooper::kHighQuality_BlurFlag );
55 SkAutoUnref aurL0(shadowLoopers[0]);
56 shadowLoopers[1] =
epoger@google.com8f096722011-05-24 17:07:01 +000057 new SkBlurDrawLooper (SkIntToScalar(10), SkIntToScalar(5),
58 SkIntToScalar(10), 0xFF0000FF,
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000059 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
60 SkBlurDrawLooper::kOverrideColor_BlurFlag );
61 SkAutoUnref aurL1(shadowLoopers[1]);
62 shadowLoopers[2] =
epoger@google.com8f096722011-05-24 17:07:01 +000063 new SkBlurDrawLooper (SkIntToScalar(5), SkIntToScalar(5),
64 SkIntToScalar(10), 0xFF000000,
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000065 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
66 SkBlurDrawLooper::kHighQuality_BlurFlag );
67 SkAutoUnref aurL2(shadowLoopers[2]);
68 shadowLoopers[3] =
epoger@google.com8f096722011-05-24 17:07:01 +000069 new SkBlurDrawLooper (SkIntToScalar(5), SkIntToScalar(-5),
70 SkIntToScalar(-10), 0x7FFF0000,
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000071 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
72 SkBlurDrawLooper::kOverrideColor_BlurFlag |
73 SkBlurDrawLooper::kHighQuality_BlurFlag );
74 SkAutoUnref aurL3(shadowLoopers[3]);
75 shadowLoopers[4] =
epoger@google.com8f096722011-05-24 17:07:01 +000076 new SkBlurDrawLooper (SkIntToScalar(0), SkIntToScalar(5),
77 SkIntToScalar(5), 0xFF000000,
senorblanco@chromium.org4868e6b2011-02-18 19:03:01 +000078 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
79 SkBlurDrawLooper::kOverrideColor_BlurFlag |
80 SkBlurDrawLooper::kHighQuality_BlurFlag );
81 SkAutoUnref aurL4(shadowLoopers[4]);
82
83 for (int looper = 0; looper < 5; looper ++)
84 {
85 fRectShape.paint().setLooper(shadowLoopers[looper]);
86 canvas->resetMatrix();
87 canvas->translate(SkIntToScalar(looper*40), SkIntToScalar(0));
88 canvas->drawShape(&fRectShape);
89 fPaint.setLooper(shadowLoopers[looper]);
90 canvas->translate(SkIntToScalar(0), SkIntToScalar(40));
91 canvas->drawPath(fCirclePath, fPaint);
92 }
93}
94
95private:
96 typedef GM INHERITED;
97};
98
99///////////////////////////////////////////////////////////////////////////////
100
101static GM* MyFactory(void*) { return new ShadowsGM; }
102static GMRegistry reg(MyFactory);
103
104}