| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkImageDecoder.h" | 10 #include "SkImageDecoder.h" |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 sc = SkScaledBitmapSampler::kRGBA; | 377 sc = SkScaledBitmapSampler::kRGBA; |
| 378 } else { | 378 } else { |
| 379 sc = SkScaledBitmapSampler::kRGBX; | 379 sc = SkScaledBitmapSampler::kRGBX; |
| 380 } | 380 } |
| 381 | 381 |
| 382 /* We have to pass the colortable explicitly, since we may have one | 382 /* We have to pass the colortable explicitly, since we may have one |
| 383 even if our decodedBitmap doesn't, due to the request that we | 383 even if our decodedBitmap doesn't, due to the request that we |
| 384 upscale png's palette to a direct model | 384 upscale png's palette to a direct model |
| 385 */ | 385 */ |
| 386 SkAutoLockColors ctLock(colorTable); | 386 SkAutoLockColors ctLock(colorTable); |
| 387 if (!sampler.begin(decodedBitmap, sc, doDither, ctLock.colors())) { | 387 if (!sampler.begin(decodedBitmap, sc, doDither, ctLock.colors(), |
| 388 this->getRequireUnpremultipliedColors())) { |
| 388 return false; | 389 return false; |
| 389 } | 390 } |
| 390 const int height = decodedBitmap->height(); | 391 const int height = decodedBitmap->height(); |
| 391 | 392 |
| 392 if (number_passes > 1) { | 393 if (number_passes > 1) { |
| 393 SkAutoMalloc storage(origWidth * origHeight * srcBytesPerPixel); | 394 SkAutoMalloc storage(origWidth * origHeight * srcBytesPerPixel); |
| 394 uint8_t* base = (uint8_t*)storage.get(); | 395 uint8_t* base = (uint8_t*)storage.get(); |
| 395 size_t rowBytes = origWidth * srcBytesPerPixel; | 396 size_t rowBytes = origWidth * srcBytesPerPixel; |
| 396 | 397 |
| 397 for (int i = 0; i < number_passes; i++) { | 398 for (int i = 0; i < number_passes; i++) { |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 sc = SkScaledBitmapSampler::kRGBA; | 794 sc = SkScaledBitmapSampler::kRGBA; |
| 794 } else { | 795 } else { |
| 795 sc = SkScaledBitmapSampler::kRGBX; | 796 sc = SkScaledBitmapSampler::kRGBX; |
| 796 } | 797 } |
| 797 | 798 |
| 798 /* We have to pass the colortable explicitly, since we may have one | 799 /* We have to pass the colortable explicitly, since we may have one |
| 799 even if our decodedBitmap doesn't, due to the request that we | 800 even if our decodedBitmap doesn't, due to the request that we |
| 800 upscale png's palette to a direct model | 801 upscale png's palette to a direct model |
| 801 */ | 802 */ |
| 802 SkAutoLockColors ctLock(colorTable); | 803 SkAutoLockColors ctLock(colorTable); |
| 803 if (!sampler.begin(&decodedBitmap, sc, doDither, ctLock.colors())) { | 804 if (!sampler.begin(&decodedBitmap, sc, doDither, ctLock.colors(), |
| 805 this->getRequireUnpremultipliedColors())) { |
| 804 return false; | 806 return false; |
| 805 } | 807 } |
| 806 const int height = decodedBitmap.height(); | 808 const int height = decodedBitmap.height(); |
| 807 | 809 |
| 808 if (number_passes > 1) { | 810 if (number_passes > 1) { |
| 809 SkAutoMalloc storage(origWidth * origHeight * srcBytesPerPixel); | 811 SkAutoMalloc storage(origWidth * origHeight * srcBytesPerPixel); |
| 810 uint8_t* base = (uint8_t*)storage.get(); | 812 uint8_t* base = (uint8_t*)storage.get(); |
| 811 size_t rb = origWidth * srcBytesPerPixel; | 813 size_t rb = origWidth * srcBytesPerPixel; |
| 812 | 814 |
| 813 for (int i = 0; i < number_passes; i++) { | 815 for (int i = 0; i < number_passes; i++) { |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 return SkImageDecoder::kUnknown_Format; | 1166 return SkImageDecoder::kUnknown_Format; |
| 1165 } | 1167 } |
| 1166 | 1168 |
| 1167 SkImageEncoder* sk_libpng_efactory(SkImageEncoder::Type t) { | 1169 SkImageEncoder* sk_libpng_efactory(SkImageEncoder::Type t) { |
| 1168 return (SkImageEncoder::kPNG_Type == t) ? SkNEW(SkPNGImageEncoder) : NULL; | 1170 return (SkImageEncoder::kPNG_Type == t) ? SkNEW(SkPNGImageEncoder) : NULL; |
| 1169 } | 1171 } |
| 1170 | 1172 |
| 1171 static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_libpng_efacto
ry); | 1173 static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_libpng_efacto
ry); |
| 1172 static SkTRegistry<SkImageDecoder::Format, SkStream*> gFormatReg(get_format_png)
; | 1174 static SkTRegistry<SkImageDecoder::Format, SkStream*> gFormatReg(get_format_png)
; |
| 1173 static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(sk_libpng_dfactory); | 1175 static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(sk_libpng_dfactory); |
| OLD | NEW |