OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "SkCodec_libbmp.h" | 8 #include "SkCodec_libbmp.h" |
9 #include "SkCodecPriv.h" | 9 #include "SkCodecPriv.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 , fRemainingBytes(remainingBytes) | 495 , fRemainingBytes(remainingBytes) |
496 {} | 496 {} |
497 | 497 |
498 /* | 498 /* |
499 * | 499 * |
500 * Initiates the bitmap decode | 500 * Initiates the bitmap decode |
501 * | 501 * |
502 */ | 502 */ |
503 SkCodec::Result SkBmpCodec::onGetPixels(const SkImageInfo& dstInfo, | 503 SkCodec::Result SkBmpCodec::onGetPixels(const SkImageInfo& dstInfo, |
504 void* dst, size_t dstRowBytes, | 504 void* dst, size_t dstRowBytes, |
| 505 const Options&, |
505 SkPMColor*, int*) { | 506 SkPMColor*, int*) { |
506 if (!this->rewindIfNeeded()) { | 507 if (!this->rewindIfNeeded()) { |
507 return kCouldNotRewind; | 508 return kCouldNotRewind; |
508 } | 509 } |
509 if (dstInfo.dimensions() != this->getOriginalInfo().dimensions()) { | 510 if (dstInfo.dimensions() != this->getOriginalInfo().dimensions()) { |
510 SkDebugf("Error: scaling not supported.\n"); | 511 SkDebugf("Error: scaling not supported.\n"); |
511 return kInvalidScale; | 512 return kInvalidScale; |
512 } | 513 } |
513 if (!conversion_possible(dstInfo, this->getOriginalInfo())) { | 514 if (!conversion_possible(dstInfo, this->getOriginalInfo())) { |
514 SkDebugf("Error: cannot convert input type to output type.\n"); | 515 SkDebugf("Error: cannot convert input type to output type.\n"); |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
837 config = SkSwizzler::kBGRA; | 838 config = SkSwizzler::kBGRA; |
838 } | 839 } |
839 break; | 840 break; |
840 default: | 841 default: |
841 SkASSERT(false); | 842 SkASSERT(false); |
842 return kInvalidInput; | 843 return kInvalidInput; |
843 } | 844 } |
844 | 845 |
845 // Create swizzler | 846 // Create swizzler |
846 SkSwizzler* swizzler = SkSwizzler::CreateSwizzler(config, fColorTable.get(), | 847 SkSwizzler* swizzler = SkSwizzler::CreateSwizzler(config, fColorTable.get(), |
847 dstInfo, dst, dstRowBytes, false); | 848 dstInfo, dst, dstRowBytes, SkImageGenerator::kNo_ZeroInitialized); |
848 | 849 |
849 // Allocate space for a row buffer and a source for the swizzler | 850 // Allocate space for a row buffer and a source for the swizzler |
850 SkAutoTDeleteArray<uint8_t> srcBuffer(SkNEW_ARRAY(uint8_t, rowBytes)); | 851 SkAutoTDeleteArray<uint8_t> srcBuffer(SkNEW_ARRAY(uint8_t, rowBytes)); |
851 | 852 |
852 // Iterate over rows of the image | 853 // Iterate over rows of the image |
853 // FIXME: bool transparent = true; | 854 // FIXME: bool transparent = true; |
854 for (int y = 0; y < height; y++) { | 855 for (int y = 0; y < height; y++) { |
855 // Read a row of the input | 856 // Read a row of the input |
856 if (stream()->read(srcBuffer.get(), rowBytes) != rowBytes) { | 857 if (stream()->read(srcBuffer.get(), rowBytes) != rowBytes) { |
857 SkDebugf("Warning: incomplete input stream.\n"); | 858 SkDebugf("Warning: incomplete input stream.\n"); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 } | 895 } |
895 dstRow = SkTAddOffset<SkPMColor>(dstRow, dstRowBytes); | 896 dstRow = SkTAddOffset<SkPMColor>(dstRow, dstRowBytes); |
896 } | 897 } |
897 } | 898 } |
898 } | 899 } |
899 */ | 900 */ |
900 | 901 |
901 // Finished decoding the entire image | 902 // Finished decoding the entire image |
902 return kSuccess; | 903 return kSuccess; |
903 } | 904 } |
OLD | NEW |