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 "SkDisplacementMapEffect.h" | 9 #include "SkDisplacementMapEffect.h" |
10 #include "SkBitmapSource.h" | 10 #include "SkBitmapSource.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 canvas->restore(); | 76 canvas->restore(); |
77 } | 77 } |
78 | 78 |
79 virtual void onDraw(SkCanvas* canvas) { | 79 virtual void onDraw(SkCanvas* canvas) { |
80 if (!fInitialized) { | 80 if (!fInitialized) { |
81 make_bitmaps(); | 81 make_bitmaps(); |
82 fInitialized = true; | 82 fInitialized = true; |
83 } | 83 } |
84 canvas->clear(0x00000000); | 84 canvas->clear(0x00000000); |
85 SkPaint paint; | 85 SkPaint paint; |
86 SkAutoTUnref<SkImageFilter> displ(SkNEW_ARGS(SkBitmapSource, (fCheckerbo
ard))); | 86 SkAutoTUnref<SkImageFilter> displ(SkBitmapSource::Create(fCheckerboard))
; |
87 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 87 paint.setImageFilter(SkDisplacementMapEffect::Create( |
88 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 88 SkDisplacementMapEffect::kR_ChannelSelectorType, |
89 SkDisplacementMapEffect::kG_ChannelSelectorType, 0.0f, displ)))->un
ref(); | 89 SkDisplacementMapEffect::kG_ChannelSelectorType, 0.0f, displ))->unre
f(); |
90 drawClippedBitmap(canvas, 0, 0, paint); | 90 drawClippedBitmap(canvas, 0, 0, paint); |
91 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 91 paint.setImageFilter(SkDisplacementMapEffect::Create( |
92 (SkDisplacementMapEffect::kB_ChannelSelectorType, | 92 SkDisplacementMapEffect::kB_ChannelSelectorType, |
93 SkDisplacementMapEffect::kA_ChannelSelectorType, 16.0f, displ)))->u
nref(); | 93 SkDisplacementMapEffect::kA_ChannelSelectorType, 16.0f, displ))->unr
ef(); |
94 drawClippedBitmap(canvas, 100, 0, paint); | 94 drawClippedBitmap(canvas, 100, 0, paint); |
95 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 95 paint.setImageFilter(SkDisplacementMapEffect::Create( |
96 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 96 SkDisplacementMapEffect::kR_ChannelSelectorType, |
97 SkDisplacementMapEffect::kB_ChannelSelectorType, 32.0f, displ)))->u
nref(); | 97 SkDisplacementMapEffect::kB_ChannelSelectorType, 32.0f, displ))->unr
ef(); |
98 drawClippedBitmap(canvas, 200, 0, paint); | 98 drawClippedBitmap(canvas, 200, 0, paint); |
99 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 99 paint.setImageFilter(SkDisplacementMapEffect::Create( |
100 (SkDisplacementMapEffect::kG_ChannelSelectorType, | 100 SkDisplacementMapEffect::kG_ChannelSelectorType, |
101 SkDisplacementMapEffect::kA_ChannelSelectorType, 48.0f, displ)))->u
nref(); | 101 SkDisplacementMapEffect::kA_ChannelSelectorType, 48.0f, displ))->unr
ef(); |
102 drawClippedBitmap(canvas, 300, 0, paint); | 102 drawClippedBitmap(canvas, 300, 0, paint); |
103 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 103 paint.setImageFilter(SkDisplacementMapEffect::Create( |
104 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 104 SkDisplacementMapEffect::kR_ChannelSelectorType, |
105 SkDisplacementMapEffect::kA_ChannelSelectorType, 64.0f, displ)))->u
nref(); | 105 SkDisplacementMapEffect::kA_ChannelSelectorType, 64.0f, displ))->unr
ef(); |
106 drawClippedBitmap(canvas, 400, 0, paint); | 106 drawClippedBitmap(canvas, 400, 0, paint); |
107 | 107 |
108 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 108 paint.setImageFilter(SkDisplacementMapEffect::Create( |
109 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 109 SkDisplacementMapEffect::kR_ChannelSelectorType, |
110 SkDisplacementMapEffect::kG_ChannelSelectorType, 40.0f, displ)))->u
nref(); | 110 SkDisplacementMapEffect::kG_ChannelSelectorType, 40.0f, displ))->unr
ef(); |
111 drawClippedBitmap(canvas, 0, 100, paint); | 111 drawClippedBitmap(canvas, 0, 100, paint); |
112 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 112 paint.setImageFilter(SkDisplacementMapEffect::Create( |
113 (SkDisplacementMapEffect::kB_ChannelSelectorType, | 113 SkDisplacementMapEffect::kB_ChannelSelectorType, |
114 SkDisplacementMapEffect::kA_ChannelSelectorType, 40.0f, displ)))->u
nref(); | 114 SkDisplacementMapEffect::kA_ChannelSelectorType, 40.0f, displ))->unr
ef(); |
115 drawClippedBitmap(canvas, 100, 100, paint); | 115 drawClippedBitmap(canvas, 100, 100, paint); |
116 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 116 paint.setImageFilter(SkDisplacementMapEffect::Create( |
117 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 117 SkDisplacementMapEffect::kR_ChannelSelectorType, |
118 SkDisplacementMapEffect::kB_ChannelSelectorType, 40.0f, displ)))->u
nref(); | 118 SkDisplacementMapEffect::kB_ChannelSelectorType, 40.0f, displ))->unr
ef(); |
119 drawClippedBitmap(canvas, 200, 100, paint); | 119 drawClippedBitmap(canvas, 200, 100, paint); |
120 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 120 paint.setImageFilter(SkDisplacementMapEffect::Create( |
121 (SkDisplacementMapEffect::kG_ChannelSelectorType, | 121 SkDisplacementMapEffect::kG_ChannelSelectorType, |
122 SkDisplacementMapEffect::kA_ChannelSelectorType, 40.0f, displ)))->u
nref(); | 122 SkDisplacementMapEffect::kA_ChannelSelectorType, 40.0f, displ))->unr
ef(); |
123 drawClippedBitmap(canvas, 300, 100, paint); | 123 drawClippedBitmap(canvas, 300, 100, paint); |
124 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 124 paint.setImageFilter(SkDisplacementMapEffect::Create( |
125 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 125 SkDisplacementMapEffect::kR_ChannelSelectorType, |
126 SkDisplacementMapEffect::kA_ChannelSelectorType, 40.0f, displ)))->u
nref(); | 126 SkDisplacementMapEffect::kA_ChannelSelectorType, 40.0f, displ))->unr
ef(); |
127 drawClippedBitmap(canvas, 400, 100, paint); | 127 drawClippedBitmap(canvas, 400, 100, paint); |
128 | 128 |
129 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(30, 30, 40, 40)); | 129 SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(30, 30, 40, 40)); |
130 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 130 paint.setImageFilter(SkDisplacementMapEffect::Create( |
131 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 131 SkDisplacementMapEffect::kR_ChannelSelectorType, |
132 SkDisplacementMapEffect::kG_ChannelSelectorType, | 132 SkDisplacementMapEffect::kG_ChannelSelectorType, |
133 0.0f, displ, NULL, &cropRect)))->unref(); | 133 0.0f, displ, NULL, &cropRect))->unref(); |
134 drawClippedBitmap(canvas, 0, 200, paint); | 134 drawClippedBitmap(canvas, 0, 200, paint); |
135 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 135 paint.setImageFilter(SkDisplacementMapEffect::Create( |
136 (SkDisplacementMapEffect::kB_ChannelSelectorType, | 136 SkDisplacementMapEffect::kB_ChannelSelectorType, |
137 SkDisplacementMapEffect::kA_ChannelSelectorType, | 137 SkDisplacementMapEffect::kA_ChannelSelectorType, |
138 16.0f, displ, NULL, &cropRect)))->unref(); | 138 16.0f, displ, NULL, &cropRect))->unref(); |
139 drawClippedBitmap(canvas, 100, 200, paint); | 139 drawClippedBitmap(canvas, 100, 200, paint); |
140 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 140 paint.setImageFilter(SkDisplacementMapEffect::Create( |
141 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 141 SkDisplacementMapEffect::kR_ChannelSelectorType, |
142 SkDisplacementMapEffect::kB_ChannelSelectorType, | 142 SkDisplacementMapEffect::kB_ChannelSelectorType, |
143 32.0f, displ, NULL, &cropRect)))->unref(); | 143 32.0f, displ, NULL, &cropRect))->unref(); |
144 drawClippedBitmap(canvas, 200, 200, paint); | 144 drawClippedBitmap(canvas, 200, 200, paint); |
145 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 145 paint.setImageFilter(SkDisplacementMapEffect::Create( |
146 (SkDisplacementMapEffect::kG_ChannelSelectorType, | 146 SkDisplacementMapEffect::kG_ChannelSelectorType, |
147 SkDisplacementMapEffect::kA_ChannelSelectorType, | 147 SkDisplacementMapEffect::kA_ChannelSelectorType, |
148 48.0f, displ, NULL, &cropRect)))->unref(); | 148 48.0f, displ, NULL, &cropRect))->unref(); |
149 drawClippedBitmap(canvas, 300, 200, paint); | 149 drawClippedBitmap(canvas, 300, 200, paint); |
150 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 150 paint.setImageFilter(SkDisplacementMapEffect::Create( |
151 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 151 SkDisplacementMapEffect::kR_ChannelSelectorType, |
152 SkDisplacementMapEffect::kA_ChannelSelectorType, | 152 SkDisplacementMapEffect::kA_ChannelSelectorType, |
153 64.0f, displ, NULL, &cropRect)))->unref(); | 153 64.0f, displ, NULL, &cropRect))->unref(); |
154 drawClippedBitmap(canvas, 400, 200, paint); | 154 drawClippedBitmap(canvas, 400, 200, paint); |
155 | 155 |
156 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 156 paint.setImageFilter(SkDisplacementMapEffect::Create( |
157 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 157 SkDisplacementMapEffect::kR_ChannelSelectorType, |
158 SkDisplacementMapEffect::kG_ChannelSelectorType, | 158 SkDisplacementMapEffect::kG_ChannelSelectorType, |
159 40.0f, displ, NULL, &cropRect)))->unref(); | 159 40.0f, displ, NULL, &cropRect))->unref(); |
160 drawClippedBitmap(canvas, 0, 300, paint); | 160 drawClippedBitmap(canvas, 0, 300, paint); |
161 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 161 paint.setImageFilter(SkDisplacementMapEffect::Create( |
162 (SkDisplacementMapEffect::kB_ChannelSelectorType, | 162 SkDisplacementMapEffect::kB_ChannelSelectorType, |
163 SkDisplacementMapEffect::kA_ChannelSelectorType, | 163 SkDisplacementMapEffect::kA_ChannelSelectorType, |
164 40.0f, displ, NULL, &cropRect)))->unref(); | 164 40.0f, displ, NULL, &cropRect))->unref(); |
165 drawClippedBitmap(canvas, 100, 300, paint); | 165 drawClippedBitmap(canvas, 100, 300, paint); |
166 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 166 paint.setImageFilter(SkDisplacementMapEffect::Create( |
167 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 167 SkDisplacementMapEffect::kR_ChannelSelectorType, |
168 SkDisplacementMapEffect::kB_ChannelSelectorType, | 168 SkDisplacementMapEffect::kB_ChannelSelectorType, |
169 40.0f, displ, NULL, &cropRect)))->unref(); | 169 40.0f, displ, NULL, &cropRect))->unref(); |
170 drawClippedBitmap(canvas, 200, 300, paint); | 170 drawClippedBitmap(canvas, 200, 300, paint); |
171 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 171 paint.setImageFilter(SkDisplacementMapEffect::Create( |
172 (SkDisplacementMapEffect::kG_ChannelSelectorType, | 172 SkDisplacementMapEffect::kG_ChannelSelectorType, |
173 SkDisplacementMapEffect::kA_ChannelSelectorType, | 173 SkDisplacementMapEffect::kA_ChannelSelectorType, |
174 40.0f, displ, NULL, &cropRect)))->unref(); | 174 40.0f, displ, NULL, &cropRect))->unref(); |
175 drawClippedBitmap(canvas, 300, 300, paint); | 175 drawClippedBitmap(canvas, 300, 300, paint); |
176 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 176 paint.setImageFilter(SkDisplacementMapEffect::Create( |
177 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 177 SkDisplacementMapEffect::kR_ChannelSelectorType, |
178 SkDisplacementMapEffect::kA_ChannelSelectorType, | 178 SkDisplacementMapEffect::kA_ChannelSelectorType, |
179 40.0f, displ, NULL, &cropRect)))->unref(); | 179 40.0f, displ, NULL, &cropRect))->unref(); |
180 drawClippedBitmap(canvas, 400, 300, paint); | 180 drawClippedBitmap(canvas, 400, 300, paint); |
181 | 181 |
182 // Tests for images of different sizes | 182 // Tests for images of different sizes |
183 displ.reset(SkNEW_ARGS(SkBitmapSource, (fSmall))); | 183 displ.reset(SkBitmapSource::Create(fSmall)); |
184 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 184 paint.setImageFilter(SkDisplacementMapEffect::Create( |
185 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 185 SkDisplacementMapEffect::kR_ChannelSelectorType, |
186 SkDisplacementMapEffect::kG_ChannelSelectorType, | 186 SkDisplacementMapEffect::kG_ChannelSelectorType, |
187 40.0f, displ)))->unref(); | 187 40.0f, displ))->unref(); |
188 drawClippedBitmap(canvas, 0, 400, paint); | 188 drawClippedBitmap(canvas, 0, 400, paint); |
189 displ.reset(SkNEW_ARGS(SkBitmapSource, (fLarge))); | 189 displ.reset(SkBitmapSource::Create(fLarge)); |
190 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 190 paint.setImageFilter(SkDisplacementMapEffect::Create( |
191 (SkDisplacementMapEffect::kB_ChannelSelectorType, | 191 SkDisplacementMapEffect::kB_ChannelSelectorType, |
192 SkDisplacementMapEffect::kA_ChannelSelectorType, | 192 SkDisplacementMapEffect::kA_ChannelSelectorType, |
193 40.0f, displ)))->unref(); | 193 40.0f, displ))->unref(); |
194 drawClippedBitmap(canvas, 100, 400, paint); | 194 drawClippedBitmap(canvas, 100, 400, paint); |
195 displ.reset(SkNEW_ARGS(SkBitmapSource, (fLargeW))); | 195 displ.reset(SkBitmapSource::Create(fLargeW)); |
196 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 196 paint.setImageFilter(SkDisplacementMapEffect::Create( |
197 (SkDisplacementMapEffect::kR_ChannelSelectorType, | 197 SkDisplacementMapEffect::kR_ChannelSelectorType, |
198 SkDisplacementMapEffect::kB_ChannelSelectorType, | 198 SkDisplacementMapEffect::kB_ChannelSelectorType, |
199 40.0f, displ)))->unref(); | 199 40.0f, displ))->unref(); |
200 drawClippedBitmap(canvas, 200, 400, paint); | 200 drawClippedBitmap(canvas, 200, 400, paint); |
201 displ.reset(SkNEW_ARGS(SkBitmapSource, (fLargeH))); | 201 displ.reset(SkBitmapSource::Create(fLargeH)); |
202 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 202 paint.setImageFilter(SkDisplacementMapEffect::Create( |
203 (SkDisplacementMapEffect::kG_ChannelSelectorType, | 203 SkDisplacementMapEffect::kG_ChannelSelectorType, |
204 SkDisplacementMapEffect::kA_ChannelSelectorType, | 204 SkDisplacementMapEffect::kA_ChannelSelectorType, |
205 40.0f, displ)))->unref(); | 205 40.0f, displ))->unref(); |
206 drawClippedBitmap(canvas, 300, 400, paint); | 206 drawClippedBitmap(canvas, 300, 400, paint); |
207 | 207 |
208 // Test for no given displacement input. In this case, both displacement | 208 // Test for no given displacement input. In this case, both displacement |
209 // and color should use the same bitmap, given to SkCanvas::drawBitmap() | 209 // and color should use the same bitmap, given to SkCanvas::drawBitmap() |
210 // as an input argument. | 210 // as an input argument. |
211 paint.setImageFilter(SkNEW_ARGS(SkDisplacementMapEffect, | 211 paint.setImageFilter(SkDisplacementMapEffect::Create( |
212 (SkDisplacementMapEffect::kG_ChannelSelectorType, | 212 SkDisplacementMapEffect::kG_ChannelSelectorType, |
213 SkDisplacementMapEffect::kA_ChannelSelectorType, | 213 SkDisplacementMapEffect::kA_ChannelSelectorType, |
214 40.0f, NULL)))->unref(); | 214 40.0f, NULL))->unref(); |
215 drawClippedBitmap(canvas, 400, 400, paint); | 215 drawClippedBitmap(canvas, 400, 400, paint); |
216 } | 216 } |
217 | 217 |
218 private: | 218 private: |
219 typedef GM INHERITED; | 219 typedef GM INHERITED; |
220 SkBitmap fBitmap, fCheckerboard, fSmall, fLarge, fLargeW, fLargeH; | 220 SkBitmap fBitmap, fCheckerboard, fSmall, fLarge, fLargeW, fLargeH; |
221 bool fInitialized; | 221 bool fInitialized; |
222 }; | 222 }; |
223 | 223 |
224 ////////////////////////////////////////////////////////////////////////////// | 224 ////////////////////////////////////////////////////////////////////////////// |
225 | 225 |
226 static GM* MyFactory(void*) { return new DisplacementMapGM; } | 226 static GM* MyFactory(void*) { return new DisplacementMapGM; } |
227 static GMRegistry reg(MyFactory); | 227 static GMRegistry reg(MyFactory); |
228 | 228 |
229 } | 229 } |
OLD | NEW |