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 |