| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 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 | 8 |
| 9 #include "SkImageDecoder.h" | 9 #include "SkImageDecoder.h" |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 other->setPeeker(fPeeker); | 38 other->setPeeker(fPeeker); |
| 39 other->setAllocator(fAllocator); | 39 other->setAllocator(fAllocator); |
| 40 other->setSampleSize(fSampleSize); | 40 other->setSampleSize(fSampleSize); |
| 41 other->setPreserveSrcDepth(fPreserveSrcDepth); | 41 other->setPreserveSrcDepth(fPreserveSrcDepth); |
| 42 other->setDitherImage(fDitherImage); | 42 other->setDitherImage(fDitherImage); |
| 43 other->setSkipWritingZeroes(fSkipWritingZeroes); | 43 other->setSkipWritingZeroes(fSkipWritingZeroes); |
| 44 other->setPreferQualityOverSpeed(fPreferQualityOverSpeed); | 44 other->setPreferQualityOverSpeed(fPreferQualityOverSpeed); |
| 45 other->setRequireUnpremultipliedColors(fRequireUnpremultipliedColors); | 45 other->setRequireUnpremultipliedColors(fRequireUnpremultipliedColors); |
| 46 } | 46 } |
| 47 | 47 |
| 48 SkImageDecoder::Format SkImageDecoder::getFormat() const { | 48 SkEncodedFormat SkImageDecoder::getFormat() const { |
| 49 return kUnknown_Format; | 49 return kUnknown_SkEncodedFormat; |
| 50 } | 50 } |
| 51 | 51 |
| 52 const char* SkImageDecoder::getFormatName() const { | 52 const char* SkImageDecoder::getFormatName() const { |
| 53 return GetFormatName(this->getFormat()); | 53 return GetFormatName(this->getFormat()); |
| 54 } | 54 } |
| 55 | 55 |
| 56 const char* SkImageDecoder::GetFormatName(Format format) { | 56 const char* SkImageDecoder::GetFormatName(SkEncodedFormat format) { |
| 57 switch (format) { | 57 switch (format) { |
| 58 case kUnknown_Format: | 58 case kUnknown_SkEncodedFormat: |
| 59 return "Unknown Format"; | 59 return "Unknown SkEncodedFormat"; |
| 60 case kBMP_Format: | 60 case kBMP_SkEncodedFormat: |
| 61 return "BMP"; | 61 return "BMP"; |
| 62 case kGIF_Format: | 62 case kGIF_SkEncodedFormat: |
| 63 return "GIF"; | 63 return "GIF"; |
| 64 case kICO_Format: | 64 case kICO_SkEncodedFormat: |
| 65 return "ICO"; | 65 return "ICO"; |
| 66 case kPKM_Format: | 66 case kPKM_SkEncodedFormat: |
| 67 return "PKM"; | 67 return "PKM"; |
| 68 case kKTX_Format: | 68 case kKTX_SkEncodedFormat: |
| 69 return "KTX"; | 69 return "KTX"; |
| 70 case kASTC_Format: | 70 case kASTC_SkEncodedFormat: |
| 71 return "ASTC"; | 71 return "ASTC"; |
| 72 case kJPEG_Format: | 72 case kJPEG_SkEncodedFormat: |
| 73 return "JPEG"; | 73 return "JPEG"; |
| 74 case kPNG_Format: | 74 case kPNG_SkEncodedFormat: |
| 75 return "PNG"; | 75 return "PNG"; |
| 76 case kWBMP_Format: | 76 case kWBMP_SkEncodedFormat: |
| 77 return "WBMP"; | 77 return "WBMP"; |
| 78 case kWEBP_Format: | 78 case kWEBP_SkEncodedFormat: |
| 79 return "WEBP"; | 79 return "WEBP"; |
| 80 default: | 80 default: |
| 81 SkDEBUGFAIL("Invalid format type!"); | 81 SkDEBUGFAIL("Invalid format type!"); |
| 82 } | 82 } |
| 83 return "Unknown Format"; | 83 return "Unknown Format"; |
| 84 } | 84 } |
| 85 | 85 |
| 86 SkImageDecoder::Peeker* SkImageDecoder::setPeeker(Peeker* peeker) { | 86 SkImageDecoder::Peeker* SkImageDecoder::setPeeker(Peeker* peeker) { |
| 87 SkRefCnt_SafeAssign(fPeeker, peeker); | 87 SkRefCnt_SafeAssign(fPeeker, peeker); |
| 88 return peeker; | 88 return peeker; |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 SkCanvas canvas(*dst); | 208 SkCanvas canvas(*dst); |
| 209 canvas.drawSprite(*src, (srcX - dstX) / sampleSize, | 209 canvas.drawSprite(*src, (srcX - dstX) / sampleSize, |
| 210 (srcY - dstY) / sampleSize, | 210 (srcY - dstY) / sampleSize, |
| 211 &paint); | 211 &paint); |
| 212 return true; | 212 return true; |
| 213 } | 213 } |
| 214 | 214 |
| 215 /////////////////////////////////////////////////////////////////////////////// | 215 /////////////////////////////////////////////////////////////////////////////// |
| 216 | 216 |
| 217 bool SkImageDecoder::DecodeFile(const char file[], SkBitmap* bm, SkColorType pre
f, Mode mode, | 217 bool SkImageDecoder::DecodeFile(const char file[], SkBitmap* bm, SkColorType pre
f, Mode mode, |
| 218 Format* format) { | 218 SkEncodedFormat* format) { |
| 219 SkASSERT(file); | 219 SkASSERT(file); |
| 220 SkASSERT(bm); | 220 SkASSERT(bm); |
| 221 | 221 |
| 222 SkAutoTDelete<SkStreamRewindable> stream(SkStream::NewFromFile(file)); | 222 SkAutoTDelete<SkStreamRewindable> stream(SkStream::NewFromFile(file)); |
| 223 if (stream.get()) { | 223 if (stream.get()) { |
| 224 if (SkImageDecoder::DecodeStream(stream, bm, pref, mode, format)) { | 224 if (SkImageDecoder::DecodeStream(stream, bm, pref, mode, format)) { |
| 225 if (SkPixelRef* pr = bm->pixelRef()) { | 225 if (SkPixelRef* pr = bm->pixelRef()) { |
| 226 pr->setURI(file); | 226 pr->setURI(file); |
| 227 } | 227 } |
| 228 return true; | 228 return true; |
| 229 } | 229 } |
| 230 } | 230 } |
| 231 return false; | 231 return false; |
| 232 } | 232 } |
| 233 | 233 |
| 234 bool SkImageDecoder::DecodeMemory(const void* buffer, size_t size, SkBitmap* bm,
SkColorType pref, | 234 bool SkImageDecoder::DecodeMemory(const void* buffer, size_t size, SkBitmap* bm,
SkColorType pref, |
| 235 Mode mode, Format* format) { | 235 Mode mode, SkEncodedFormat* format) { |
| 236 if (0 == size) { | 236 if (0 == size) { |
| 237 return false; | 237 return false; |
| 238 } | 238 } |
| 239 SkASSERT(buffer); | 239 SkASSERT(buffer); |
| 240 | 240 |
| 241 SkMemoryStream stream(buffer, size); | 241 SkMemoryStream stream(buffer, size); |
| 242 return SkImageDecoder::DecodeStream(&stream, bm, pref, mode, format); | 242 return SkImageDecoder::DecodeStream(&stream, bm, pref, mode, format); |
| 243 } | 243 } |
| 244 | 244 |
| 245 bool SkImageDecoder::DecodeStream(SkStreamRewindable* stream, SkBitmap* bm, SkCo
lorType pref, | 245 bool SkImageDecoder::DecodeStream(SkStreamRewindable* stream, SkBitmap* bm, SkCo
lorType pref, |
| 246 Mode mode, Format* format) { | 246 Mode mode, SkEncodedFormat* format) { |
| 247 SkASSERT(stream); | 247 SkASSERT(stream); |
| 248 SkASSERT(bm); | 248 SkASSERT(bm); |
| 249 | 249 |
| 250 bool success = false; | 250 bool success = false; |
| 251 SkImageDecoder* codec = SkImageDecoder::Factory(stream); | 251 SkImageDecoder* codec = SkImageDecoder::Factory(stream); |
| 252 | 252 |
| 253 if (codec) { | 253 if (codec) { |
| 254 success = codec->decode(stream, bm, pref, mode) != kFailure; | 254 success = codec->decode(stream, bm, pref, mode) != kFailure; |
| 255 if (success && format) { | 255 if (success && format) { |
| 256 *format = codec->getFormat(); | 256 *format = codec->getFormat(); |
| 257 if (kUnknown_Format == *format) { | 257 if (kUnknown_SkEncodedFormat == *format) { |
| 258 if (stream->rewind()) { | 258 if (stream->rewind()) { |
| 259 *format = GetStreamFormat(stream); | 259 *format = GetStreamFormat(stream); |
| 260 } | 260 } |
| 261 } | 261 } |
| 262 } | 262 } |
| 263 delete codec; | 263 delete codec; |
| 264 } | 264 } |
| 265 return success; | 265 return success; |
| 266 } | 266 } |
| 267 | 267 |
| 268 bool SkImageDecoder::decodeYUV8Planes(SkStream* stream, SkISize componentSizes[3
], void* planes[3], | 268 bool SkImageDecoder::decodeYUV8Planes(SkStream* stream, SkISize componentSizes[3
], void* planes[3], |
| 269 size_t rowBytes[3], SkYUVColorSpace* color
Space) { | 269 size_t rowBytes[3], SkYUVColorSpace* color
Space) { |
| 270 // we reset this to false before calling onDecodeYUV8Planes | 270 // we reset this to false before calling onDecodeYUV8Planes |
| 271 fShouldCancelDecode = false; | 271 fShouldCancelDecode = false; |
| 272 | 272 |
| 273 return this->onDecodeYUV8Planes(stream, componentSizes, planes, rowBytes, co
lorSpace); | 273 return this->onDecodeYUV8Planes(stream, componentSizes, planes, rowBytes, co
lorSpace); |
| 274 } | 274 } |
| OLD | NEW |