Chromium Code Reviews| 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.h" | 8 #include "SkCodec.h" |
| 9 #include "SkCodecPriv.h" | 9 #include "SkCodecPriv.h" |
| 10 #include "SkMath.h" | 10 #include "SkMath.h" |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 208 dstHeight, 0); | 208 dstHeight, 0); |
| 209 return SkCodec::kIncompleteInput; | 209 return SkCodec::kIncompleteInput; |
| 210 } | 210 } |
| 211 void* pixelPtr = pixels; | 211 void* pixelPtr = pixels; |
| 212 for (int y = 0; y < dstHeight; y++) { | 212 for (int y = 0; y < dstHeight; y++) { |
| 213 if (1 != fCodec->getScanlines(pixelPtr, 1, rowBytes)) { | 213 if (1 != fCodec->getScanlines(pixelPtr, 1, rowBytes)) { |
| 214 fCodec->fillIncompleteImage(info, pixels, rowBytes, options. fZeroInitialized, | 214 fCodec->fillIncompleteImage(info, pixels, rowBytes, options. fZeroInitialized, |
| 215 dstHeight, y + 1); | 215 dstHeight, y + 1); |
| 216 return SkCodec::kIncompleteInput; | 216 return SkCodec::kIncompleteInput; |
| 217 } | 217 } |
| 218 int linesToSkip = SkTMin(sampleY - 1, dstHeight - y - 1); | 218 if (y < dstHeight - 1) { |
|
msarett
2015/11/05 17:57:19
I think the intent here was to not skip past the e
| |
| 219 if (!fCodec->skipScanlines(linesToSkip)) { | 219 if (!fCodec->skipScanlines(sampleY - 1)) { |
| 220 fCodec->fillIncompleteImage(info, pixels, rowBytes, options. fZeroInitialized, | 220 fCodec->fillIncompleteImage(info, pixels, rowBytes, |
| 221 dstHeight, y + 1); | 221 options.fZeroInitialized, dstHeight, y + 1); |
| 222 return SkCodec::kIncompleteInput; | 222 return SkCodec::kIncompleteInput; |
| 223 } | |
| 223 } | 224 } |
| 224 pixelPtr = SkTAddOffset<void>(pixelPtr, rowBytes); | 225 pixelPtr = SkTAddOffset<void>(pixelPtr, rowBytes); |
| 225 } | 226 } |
| 226 return SkCodec::kSuccess; | 227 return SkCodec::kSuccess; |
| 227 } | 228 } |
| 228 case SkCodec::kNone_SkScanlineOrder: { | 229 case SkCodec::kNone_SkScanlineOrder: { |
| 229 const int linesNeeded = subsetHeight - samplingOffsetY; | 230 const int linesNeeded = subsetHeight - samplingOffsetY; |
| 230 SkAutoMalloc storage(linesNeeded * rowBytes); | 231 SkAutoMalloc storage(linesNeeded * rowBytes); |
| 231 uint8_t* storagePtr = static_cast<uint8_t*>(storage.get()); | 232 uint8_t* storagePtr = static_cast<uint8_t*>(storage.get()); |
| 232 | 233 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 247 // fCodec has already handled filling uninitialized memory. | 248 // fCodec has already handled filling uninitialized memory. |
| 248 return SkCodec::kIncompleteInput; | 249 return SkCodec::kIncompleteInput; |
| 249 } | 250 } |
| 250 return SkCodec::kSuccess; | 251 return SkCodec::kSuccess; |
| 251 } | 252 } |
| 252 default: | 253 default: |
| 253 SkASSERT(false); | 254 SkASSERT(false); |
| 254 return SkCodec::kUnimplemented; | 255 return SkCodec::kUnimplemented; |
| 255 } | 256 } |
| 256 } | 257 } |
| OLD | NEW |