Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Side by Side Diff: src/images/SkImageDecoder.cpp

Issue 1018953003: Add SkEncodedFormat, used by SkCodec. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Use a common enum for SkImageEncoder and SkImageDecoder and SkCodec Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698