| OLD | NEW |
| 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 Loading... |
| 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); |
| OLD | NEW |