OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "gm.h" | 8 #include "gm.h" |
9 #include "SkColorFilter.h" | 9 #include "SkColorFilter.h" |
10 | 10 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 SkCanvas c(bm); | 60 SkCanvas c(bm); |
61 draw_path(&c, r, nullptr); | 61 draw_path(&c, r, nullptr); |
62 | 62 |
63 paint.setImageFilter(imf); | 63 paint.setImageFilter(imf); |
64 canvas->save(); | 64 canvas->save(); |
65 canvas->clipRect(r); | 65 canvas->clipRect(r); |
66 canvas->drawBitmap(bm, 0, 0, &paint); | 66 canvas->drawBitmap(bm, 0, 0, &paint); |
67 canvas->restore(); | 67 canvas->restore(); |
68 } | 68 } |
69 | 69 |
70 static void draw_sprite(SkCanvas* canvas, const SkRect& r, SkImageFilter* imf) { | |
71 SkPaint paint; | |
72 | |
73 SkIRect bounds; | |
74 r.roundOut(&bounds); | |
75 | |
76 SkBitmap bm; | |
77 bm.allocN32Pixels(bounds.width(), bounds.height()); | |
78 bm.eraseColor(SK_ColorRED); | |
79 SkCanvas c(bm); | |
80 | |
81 SkIRect cropRect = SkIRect::MakeXYWH(10, 10, 44, 44); | |
82 paint.setColor(SK_ColorGREEN); | |
83 c.drawRect(SkRect::Make(cropRect), paint); | |
84 | |
85 paint.setImageFilter(imf); | |
86 SkPoint loc = { r.fLeft, r.fTop }; | |
87 canvas->getTotalMatrix().mapPoints(&loc, 1); | |
88 canvas->drawSprite(bm, | |
89 SkScalarRoundToInt(loc.fX), SkScalarRoundToInt(loc.fY), | |
90 &paint); | |
91 } | |
92 | |
93 /////////////////////////////////////////////////////////////////////////////// | 70 /////////////////////////////////////////////////////////////////////////////// |
94 | 71 |
95 class DropShadowImageFilterGM : public skiagm::GM { | 72 class DropShadowImageFilterGM : public skiagm::GM { |
96 public: | 73 public: |
97 DropShadowImageFilterGM () {} | 74 DropShadowImageFilterGM () {} |
98 | 75 |
99 protected: | 76 protected: |
100 | 77 |
101 virtual SkString onShortName() { | 78 virtual SkString onShortName() { |
102 return SkString("dropshadowimagefilter"); | 79 return SkString("dropshadowimagefilter"); |
103 } | 80 } |
104 | 81 |
105 virtual SkISize onISize() { return SkISize::Make(400, 656); } | 82 virtual SkISize onISize() { return SkISize::Make(400, 656); } |
106 | 83 |
107 void draw_frame(SkCanvas* canvas, const SkRect& r) { | 84 void draw_frame(SkCanvas* canvas, const SkRect& r) { |
108 SkPaint paint; | 85 SkPaint paint; |
109 paint.setStyle(SkPaint::kStroke_Style); | 86 paint.setStyle(SkPaint::kStroke_Style); |
110 paint.setColor(SK_ColorRED); | 87 paint.setColor(SK_ColorRED); |
111 canvas->drawRect(r, paint); | 88 canvas->drawRect(r, paint); |
112 } | 89 } |
113 | 90 |
114 virtual void onDraw(SkCanvas* canvas) { | 91 virtual void onDraw(SkCanvas* canvas) { |
115 void (*drawProc[])(SkCanvas*, const SkRect&, SkImageFilter*) = { | 92 void (*drawProc[])(SkCanvas*, const SkRect&, SkImageFilter*) = { |
116 draw_sprite, draw_bitmap, draw_path, draw_paint, draw_text | 93 draw_bitmap, draw_path, draw_paint, draw_text |
117 }; | 94 }; |
118 | 95 |
119 SkAutoTUnref<SkColorFilter> cf( | 96 SkAutoTUnref<SkColorFilter> cf( |
120 SkColorFilter::CreateModeFilter(SK_ColorMAGENTA, SkXfermode::kSrcIn_
Mode)); | 97 SkColorFilter::CreateModeFilter(SK_ColorMAGENTA, SkXfermode::kSrcIn_
Mode)); |
121 SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get
())); | 98 SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get
())); |
122 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(10, 10,
44, 44)), | 99 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(10, 10,
44, 44)), |
123 SkImageFilter::CropRect::kHasAll_CropEd
ge); | 100 SkImageFilter::CropRect::kHasAll_CropEd
ge); |
124 SkImageFilter::CropRect bogusRect(SkRect::Make(SkIRect::MakeXYWH(-100, -
100, 10, 10)), | 101 SkImageFilter::CropRect bogusRect(SkRect::Make(SkIRect::MakeXYWH(-100, -
100, 10, 10)), |
125 SkImageFilter::CropRect::kHasAll_CropE
dge); | 102 SkImageFilter::CropRect::kHasAll_CropE
dge); |
126 | 103 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 } | 140 } |
164 } | 141 } |
165 | 142 |
166 private: | 143 private: |
167 typedef GM INHERITED; | 144 typedef GM INHERITED; |
168 }; | 145 }; |
169 | 146 |
170 /////////////////////////////////////////////////////////////////////////////// | 147 /////////////////////////////////////////////////////////////////////////////// |
171 | 148 |
172 DEF_GM( return new DropShadowImageFilterGM; ) | 149 DEF_GM( return new DropShadowImageFilterGM; ) |
OLD | NEW |