| 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 |