blob: 5afde495fe63d49b4d23db6f9aceccb04c145193 [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] =
50 new SkBlurDrawLooper (10, 5, 10, 0xFF0000FF,
51 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
52 SkBlurDrawLooper::kOverrideColor_BlurFlag |
53 SkBlurDrawLooper::kHighQuality_BlurFlag );
54 SkAutoUnref aurL0(shadowLoopers[0]);
55 shadowLoopers[1] =
56 new SkBlurDrawLooper (10, 5, 10, 0xFF0000FF,
57 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
58 SkBlurDrawLooper::kOverrideColor_BlurFlag );
59 SkAutoUnref aurL1(shadowLoopers[1]);
60 shadowLoopers[2] =
61 new SkBlurDrawLooper (5, 5, 10, 0xFF000000,
62 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
63 SkBlurDrawLooper::kHighQuality_BlurFlag );
64 SkAutoUnref aurL2(shadowLoopers[2]);
65 shadowLoopers[3] =
66 new SkBlurDrawLooper (5, -5 ,-10, 0x7FFF0000,
67 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
68 SkBlurDrawLooper::kOverrideColor_BlurFlag |
69 SkBlurDrawLooper::kHighQuality_BlurFlag );
70 SkAutoUnref aurL3(shadowLoopers[3]);
71 shadowLoopers[4] =
72 new SkBlurDrawLooper (0, 5, 5, 0xFF000000,
73 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
74 SkBlurDrawLooper::kOverrideColor_BlurFlag |
75 SkBlurDrawLooper::kHighQuality_BlurFlag );
76 SkAutoUnref aurL4(shadowLoopers[4]);
77
78 for (int looper = 0; looper < 5; looper ++)
79 {
80 fRectShape.paint().setLooper(shadowLoopers[looper]);
81 canvas->resetMatrix();
82 canvas->translate(SkIntToScalar(looper*40), SkIntToScalar(0));
83 canvas->drawShape(&fRectShape);
84 fPaint.setLooper(shadowLoopers[looper]);
85 canvas->translate(SkIntToScalar(0), SkIntToScalar(40));
86 canvas->drawPath(fCirclePath, fPaint);
87 }
88}
89
90private:
91 typedef GM INHERITED;
92};
93
94///////////////////////////////////////////////////////////////////////////////
95
96static GM* MyFactory(void*) { return new ShadowsGM; }
97static GMRegistry reg(MyFactory);
98
99}