| Index: src/ports/SkImageDecoder_CG.cpp
 | 
| diff --git a/src/ports/SkImageDecoder_CG.cpp b/src/ports/SkImageDecoder_CG.cpp
 | 
| index 9fc49a445f264ffab1f2431dbb9bc6ca43a6af37..5fe6fddf90835dda53a0cc7c57417d1ff7c56693 100644
 | 
| --- a/src/ports/SkImageDecoder_CG.cpp
 | 
| +++ b/src/ports/SkImageDecoder_CG.cpp
 | 
| @@ -245,3 +245,45 @@ static SkImageEncoder* sk_imageencoder_cg_factory(SkImageEncoder::Type t) {
 | 
|  }
 | 
|  
 | 
|  static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(sk_imageencoder_cg_factory);
 | 
| +
 | 
| +struct FormatConversion {
 | 
| +    CFStringRef             fUTType;
 | 
| +    SkImageDecoder::Format  fFormat;
 | 
| +};
 | 
| +
 | 
| +// Array of the types supported by the decoder.
 | 
| +static const FormatConversion gFormatConversions[] = {
 | 
| +    { kUTTypeBMP, SkImageDecoder::kBMP_Format },
 | 
| +    { kUTTypeGIF, SkImageDecoder::kGIF_Format },
 | 
| +    { kUTTypeICO, SkImageDecoder::kICO_Format },
 | 
| +    { kUTTypeJPEG, SkImageDecoder::kJPEG_Format },
 | 
| +    // Also include JPEG2000
 | 
| +    { kUTTypeJPEG2000, SkImageDecoder::kJPEG_Format },
 | 
| +    { kUTTypePNG, SkImageDecoder::kPNG_Format },
 | 
| +};
 | 
| +
 | 
| +static SkImageDecoder::Format UTType_to_Format(const CFStringRef uttype) {
 | 
| +    for (size_t i = 0; i < SK_ARRAY_COUNT(gFormatConversions); i++) {
 | 
| +        if (CFStringCompare(uttype, gFormatConversions[i].fUTType, 0) == kCFCompareEqualTo) {
 | 
| +            return gFormatConversions[i].fFormat;
 | 
| +        }
 | 
| +    }
 | 
| +    return SkImageDecoder::kUnknown_Format;
 | 
| +}
 | 
| +
 | 
| +static SkImageDecoder::Format get_format_cg(SkStream *stream) {
 | 
| +    CGImageSourceRef imageSrc = SkStreamToCGImageSource(stream);
 | 
| +
 | 
| +    if (NULL == imageSrc) {
 | 
| +        return SkImageDecoder::kUnknown_Format;
 | 
| +    }
 | 
| +
 | 
| +    SkAutoTCallVProc<const void, CFRelease> arsrc(imageSrc);
 | 
| +    const CFStringRef name = CGImageSourceGetType(imageSrc);
 | 
| +    if (NULL == name) {
 | 
| +        return SkImageDecoder::kUnknown_Format;
 | 
| +    }
 | 
| +    return UTType_to_Format(name);
 | 
| +}
 | 
| +
 | 
| +static SkTRegistry<SkImageDecoder::Format, SkStream*> gFormatReg(get_format_cg);
 | 
| 
 |