| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 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 "SkAutoPixmapStorage.h" | 8 #include "SkAutoPixmapStorage.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 | 176 |
| 177 const SkImageInfo info = SkImageInfo::MakeN32(kFullSize, kFullSize, kOpaque_
SkAlphaType); | 177 const SkImageInfo info = SkImageInfo::MakeN32(kFullSize, kFullSize, kOpaque_
SkAlphaType); |
| 178 pixmap.alloc(info); | 178 pixmap.alloc(info); |
| 179 pixmap.erase(SK_ColorGREEN); | 179 pixmap.erase(SK_ColorGREEN); |
| 180 | 180 |
| 181 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller
Size); | 181 const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmaller
Size); |
| 182 | 182 |
| 183 pixmap.erase(SK_ColorRED, subset); | 183 pixmap.erase(SK_ColorRED, subset); |
| 184 | 184 |
| 185 { | 185 { |
| 186 // The SkAutoPixmapStorage keeps hold of the memory | |
| 187 sk_sp<SkSpecialImage> img(SkSpecialImage::MakeFromPixmap(nullptr, subset
, pixmap, | 186 sk_sp<SkSpecialImage> img(SkSpecialImage::MakeFromPixmap(nullptr, subset
, pixmap, |
| 188 nullptr, nullpt
r)); | 187 nullptr, nullpt
r)); |
| 189 test_image(img, reporter, true, false, kPad, kFullSize); | 188 test_image(img, reporter, true, false, kPad, kFullSize); |
| 190 } | 189 } |
| 191 | |
| 192 { | |
| 193 // The image takes ownership of the memory | |
| 194 sk_sp<SkSpecialImage> img(SkSpecialImage::MakeFromPixmap( | |
| 195 nullptr, subset, pixmap, | |
| 196 [] (void* addr, void*) -> void { | |
| 197 sk_free(addr); | |
| 198 }, | |
| 199 nullptr)); | |
| 200 pixmap.release(); | |
| 201 test_image(img, reporter, true, false, kPad, kFullSize); | |
| 202 } | |
| 203 } | 190 } |
| 204 | 191 |
| 205 | 192 |
| 206 #if SK_SUPPORT_GPU | 193 #if SK_SUPPORT_GPU |
| 207 | 194 |
| 208 static void test_texture_backed(skiatest::Reporter* reporter, | 195 static void test_texture_backed(skiatest::Reporter* reporter, |
| 209 const sk_sp<SkSpecialImage>& orig, | 196 const sk_sp<SkSpecialImage>& orig, |
| 210 const sk_sp<SkSpecialImage>& gpuBacked) { | 197 const sk_sp<SkSpecialImage>& gpuBacked) { |
| 211 REPORTER_ASSERT(reporter, gpuBacked); | 198 REPORTER_ASSERT(reporter, gpuBacked); |
| 212 REPORTER_ASSERT(reporter, gpuBacked->peekTexture()); | 199 REPORTER_ASSERT(reporter, gpuBacked->peekTexture()); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 test_image(subSImg1, reporter, false, true, kPad, kFullSize); | 298 test_image(subSImg1, reporter, false, true, kPad, kFullSize); |
| 312 } | 299 } |
| 313 | 300 |
| 314 { | 301 { |
| 315 sk_sp<SkSpecialImage> subSImg2(fullSImg->makeSubset(subset)); | 302 sk_sp<SkSpecialImage> subSImg2(fullSImg->makeSubset(subset)); |
| 316 test_image(subSImg2, reporter, false, true, kPad, kFullSize); | 303 test_image(subSImg2, reporter, false, true, kPad, kFullSize); |
| 317 } | 304 } |
| 318 } | 305 } |
| 319 | 306 |
| 320 #endif | 307 #endif |
| OLD | NEW |