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

Side by Side Diff: src/ports/SkImageDecoder_CG.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 2008 The Android Open Source Project 2 * Copyright 2008 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 #include "SkCGUtils.h" 8 #include "SkCGUtils.h"
9 #include "SkColorPriv.h" 9 #include "SkColorPriv.h"
10 #include "SkImageDecoder.h" 10 #include "SkImageDecoder.h"
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 return false; 315 return false;
316 } 316 }
317 SkAutoTCallVProc<CGImage, CGImageRelease> agimage(image); 317 SkAutoTCallVProc<CGImage, CGImageRelease> agimage(image);
318 318
319 CGImageDestinationAddImage(dst, image, NULL); 319 CGImageDestinationAddImage(dst, image, NULL);
320 return CGImageDestinationFinalize(dst); 320 return CGImageDestinationFinalize(dst);
321 } 321 }
322 322
323 /////////////////////////////////////////////////////////////////////////////// 323 ///////////////////////////////////////////////////////////////////////////////
324 324
325 static SkImageEncoder* sk_imageencoder_cg_factory(SkImageEncoder::Type t) { 325 static SkImageEncoder* sk_imageencoder_cg_factory(SkEncodedFormat t) {
326 switch (t) { 326 switch (t) {
327 case SkImageEncoder::kICO_Type: 327 case kBMP_SkEncodedFormat:
328 case SkImageEncoder::kBMP_Type: 328 case kGIF_SkEncodedFormat:
329 case SkImageEncoder::kGIF_Type: 329 case kICO_SkEncodedFormat:
330 case SkImageEncoder::kJPEG_Type: 330 case kJPEG_SkEncodedFormat:
331 case SkImageEncoder::kPNG_Type: 331 case kPNG_SkEncodedFormat:
332 break; 332 break;
333 default: 333 default:
334 return NULL; 334 return NULL;
335 } 335 }
336 return SkNEW_ARGS(SkImageEncoder_CG, (t)); 336 return SkNEW_ARGS(SkImageEncoder_CG, (t));
337 } 337 }
338 338
339 static SkImageEncoder_EncodeReg gEReg(sk_imageencoder_cg_factory); 339 static SkImageEncoder_EncodeReg gEReg(sk_imageencoder_cg_factory);
340 340
341 #ifdef SK_BUILD_FOR_IOS 341 #ifdef SK_BUILD_FOR_IOS
342 class SkPNGImageEncoder_IOS : public SkImageEncoder_CG { 342 class SkPNGImageEncoder_IOS : public SkImageEncoder_CG {
343 public: 343 public:
344 SkPNGImageEncoder_IOS() 344 SkPNGImageEncoder_IOS()
345 : SkImageEncoder_CG(kPNG_Type) { 345 : SkImageEncoder_CG(kPNG_Type) {
346 } 346 }
347 }; 347 };
348 348
349 DEFINE_ENCODER_CREATOR(PNGImageEncoder_IOS); 349 DEFINE_ENCODER_CREATOR(PNGImageEncoder_IOS);
350 #endif 350 #endif
351 351
352 struct FormatConversion { 352 struct FormatConversion {
353 CFStringRef fUTType; 353 CFStringRef fUTType;
354 SkImageDecoder::Format fFormat; 354 SkEncodedFormat fFormat;
355 }; 355 };
356 356
357 // Array of the types supported by the decoder. 357 // Array of the types supported by the decoder.
358 static const FormatConversion gFormatConversions[] = { 358 static const FormatConversion gFormatConversions[] = {
359 { kUTTypeBMP, SkImageDecoder::kBMP_Format }, 359 { kUTTypeBMP, kBMP_SkEncodedFormat },
360 { kUTTypeGIF, SkImageDecoder::kGIF_Format }, 360 { kUTTypeGIF, kGIF_SkEncodedFormat },
361 { kUTTypeICO, SkImageDecoder::kICO_Format }, 361 { kUTTypeICO, kICO_SkEncodedFormat },
362 { kUTTypeJPEG, SkImageDecoder::kJPEG_Format }, 362 { kUTTypeJPEG, kJPEG_SkEncodedFormat },
363 // Also include JPEG2000 363 // Also include JPEG2000
364 { kUTTypeJPEG2000, SkImageDecoder::kJPEG_Format }, 364 { kUTTypeJPEG2000, kJPEG_SkEncodedFormat },
365 { kUTTypePNG, SkImageDecoder::kPNG_Format }, 365 { kUTTypePNG, kPNG_SkEncodedFormat },
366 }; 366 };
367 367
368 static SkImageDecoder::Format UTType_to_Format(const CFStringRef uttype) { 368 static SkEncodedFormat UTType_to_Format(const CFStringRef uttype) {
369 for (size_t i = 0; i < SK_ARRAY_COUNT(gFormatConversions); i++) { 369 for (size_t i = 0; i < SK_ARRAY_COUNT(gFormatConversions); i++) {
370 if (CFStringCompare(uttype, gFormatConversions[i].fUTType, 0) == kCFComp areEqualTo) { 370 if (CFStringCompare(uttype, gFormatConversions[i].fUTType, 0) == kCFComp areEqualTo) {
371 return gFormatConversions[i].fFormat; 371 return gFormatConversions[i].fFormat;
372 } 372 }
373 } 373 }
374 return SkImageDecoder::kUnknown_Format; 374 return kUnknown_SkEncodedFormat;
375 } 375 }
376 376
377 static SkImageDecoder::Format get_format_cg(SkStreamRewindable* stream) { 377 static SkEncodedFormat get_format_cg(SkStreamRewindable* stream) {
378 CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream); 378 CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream);
379 379
380 if (NULL == imageSrc) { 380 if (NULL == imageSrc) {
381 return SkImageDecoder::kUnknown_Format; 381 return kUnknown_SkEncodedFormat;
382 } 382 }
383 383
384 SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc); 384 SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc);
385 const CFStringRef name = CGImageSourceGetType(imageSrc); 385 const CFStringRef name = CGImageSourceGetType(imageSrc);
386 if (NULL == name) { 386 if (NULL == name) {
387 return SkImageDecoder::kUnknown_Format; 387 return kUnknown_SkEncodedFormat;
388 } 388 }
389 return UTType_to_Format(name); 389 return UTType_to_Format(name);
390 } 390 }
391 391
392 static SkImageDecoder_FormatReg gFormatReg(get_format_cg); 392 static SkImageDecoder_FormatReg gFormatReg(get_format_cg);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698