diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2017-07-24 13:29:29 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-02-03 10:03:50 +0100 |
commit | 3e0351aa49be56434df121d9b4d9f283c422a670 (patch) | |
tree | 66e587490ddf75684fa3657486e99b56a8db8626 /image/DecoderFactory.cpp | |
parent | b094b135956829a293dd409eefa39f2912434fd9 (diff) | |
download | UXP-3e0351aa49be56434df121d9b4d9f283c422a670.tar UXP-3e0351aa49be56434df121d9b4d9f283c422a670.tar.gz UXP-3e0351aa49be56434df121d9b4d9f283c422a670.tar.lz UXP-3e0351aa49be56434df121d9b4d9f283c422a670.tar.xz UXP-3e0351aa49be56434df121d9b4d9f283c422a670.zip |
Implement WebP image decoder.
Diffstat (limited to 'image/DecoderFactory.cpp')
-rw-r--r-- | image/DecoderFactory.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/image/DecoderFactory.cpp b/image/DecoderFactory.cpp index 1c51d2fbc..2085fb7c4 100644 --- a/image/DecoderFactory.cpp +++ b/image/DecoderFactory.cpp @@ -5,6 +5,7 @@ #include "DecoderFactory.h" +#include "gfxPrefs.h" #include "nsMimeTypes.h" #include "mozilla/RefPtr.h" @@ -17,6 +18,7 @@ #include "nsBMPDecoder.h" #include "nsICODecoder.h" #include "nsIconDecoder.h" +#include "nsWebPDecoder.h" namespace mozilla { @@ -65,8 +67,12 @@ DecoderFactory::GetDecoderType(const char* aMimeType) // Icon } else if (!strcmp(aMimeType, IMAGE_ICON_MS)) { type = DecoderType::ICON; - } + // WebP + } else if (!strcmp(aMimeType, IMAGE_WEBP) && + gfxPrefs::ImageWebPEnabled()) { + type = DecoderType::WEBP; + } return type; } @@ -100,6 +106,9 @@ DecoderFactory::GetDecoder(DecoderType aType, case DecoderType::ICON: decoder = new nsIconDecoder(aImage); break; + case DecoderType::WEBP: + decoder = new nsWebPDecoder(aImage); + break; default: MOZ_ASSERT_UNREACHABLE("Unknown decoder type"); } @@ -171,7 +180,8 @@ DecoderFactory::CreateAnimationDecoder(DecoderType aType, return nullptr; } - MOZ_ASSERT(aType == DecoderType::GIF || aType == DecoderType::PNG, + MOZ_ASSERT(aType == DecoderType::GIF || aType == DecoderType::PNG || + aType == DecoderType::WEBP, "Calling CreateAnimationDecoder for non-animating DecoderType"); // Create an anonymous decoder. Interaction with the SurfaceCache and the |