diff options
Diffstat (limited to 'WebCore/platform/image-decoders/ImageDecoder.cpp')
-rw-r--r-- | WebCore/platform/image-decoders/ImageDecoder.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/WebCore/platform/image-decoders/ImageDecoder.cpp b/WebCore/platform/image-decoders/ImageDecoder.cpp index 1c3dcf8..10c0b3b 100644 --- a/WebCore/platform/image-decoders/ImageDecoder.cpp +++ b/WebCore/platform/image-decoders/ImageDecoder.cpp @@ -31,6 +31,7 @@ #include "ICOImageDecoder.h" #include "JPEGImageDecoder.h" #include "PNGImageDecoder.h" +#include "WEBPImageDecoder.h" #include "SharedBuffer.h" using namespace std; @@ -78,6 +79,19 @@ ImageDecoder* ImageDecoder::create(const SharedBuffer& data, bool premultiplyAlp if (!memcmp(contents, "\xFF\xD8\xFF", 3)) return new JPEGImageDecoder(premultiplyAlpha); +#if USE(WEBP) + if (!memcmp(contents, "RIFF", 4)) { + static const unsigned webpExtraMarker = 6; + static const unsigned webpExtraMarkeroffset = 8; + char header[webpExtraMarker]; + unsigned length = copyFromSharedBuffer(header, webpExtraMarker, data, webpExtraMarkeroffset); + if (length >= webpExtraMarker) { + if (!memcmp(header, "WEBPVP", webpExtraMarker)) + return new WEBPImageDecoder(premultiplyAlpha); + } + } +#endif + // BMP if (strncmp(contents, "BM", 2) == 0) return new BMPImageDecoder(premultiplyAlpha); |