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 |