diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkImageGenerator.cpp | 26 | ||||
-rw-r--r-- | src/image/SkImage.cpp | 2 | ||||
-rw-r--r-- | src/lazy/SkDiscardablePixelRef.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkImageGenerator_none.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkImageGenerator_skia.cpp | 6 |
5 files changed, 30 insertions, 8 deletions
diff --git a/src/core/SkImageGenerator.cpp b/src/core/SkImageGenerator.cpp index b4a3fc21c8..7da4d40b0c 100644 --- a/src/core/SkImageGenerator.cpp +++ b/src/core/SkImageGenerator.cpp @@ -130,3 +130,29 @@ bool SkImageGenerator::onGetPixels(const SkImageInfo& info, void* dst, size_t rb return false; } #endif + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +#include "SkGraphics.h" + +static SkGraphics::ImageGeneratorFromEncodedFactory gImageGeneratorFromEncodedFactory; + +SkGraphics::ImageGeneratorFromEncodedFactory SkGraphics::GetImageGeneratorFromEncodedFactory() { + return gImageGeneratorFromEncodedFactory; +} + +void SkGraphics::SetImageGeneratorFromEncodedFactory(ImageGeneratorFromEncodedFactory factory) { + gImageGeneratorFromEncodedFactory = factory; +} + +SkImageGenerator* SkImageGenerator::NewFromEncoded(SkData* data) { + if (NULL == data) { + return NULL; + } + if (gImageGeneratorFromEncodedFactory) { + if (SkImageGenerator* generator = gImageGeneratorFromEncodedFactory(data)) { + return generator; + } + } + return SkImageGenerator::NewFromEncodedImpl(data); +} diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index e8a3ead2b1..ff0b8c9819 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -76,7 +76,7 @@ SkImage* SkImage::NewFromEncoded(SkData* encoded, const SkIRect* subset) { if (NULL == encoded || 0 == encoded->size()) { return NULL; } - SkImageGenerator* generator = SkImageGenerator::NewFromData(encoded); + SkImageGenerator* generator = SkImageGenerator::NewFromEncoded(encoded); return generator ? SkImage::NewFromGenerator(generator, subset) : NULL; } diff --git a/src/lazy/SkDiscardablePixelRef.cpp b/src/lazy/SkDiscardablePixelRef.cpp index 19bfc8ccc7..4f9178e6e1 100644 --- a/src/lazy/SkDiscardablePixelRef.cpp +++ b/src/lazy/SkDiscardablePixelRef.cpp @@ -150,6 +150,6 @@ bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst) { } bool SkInstallDiscardablePixelRef(SkData* encoded, SkBitmap* dst) { - SkImageGenerator* generator = SkImageGenerator::NewFromData(encoded); + SkImageGenerator* generator = SkImageGenerator::NewFromEncoded(encoded); return generator ? SkInstallDiscardablePixelRef(generator, NULL, dst, NULL) : false; } diff --git a/src/ports/SkImageGenerator_none.cpp b/src/ports/SkImageGenerator_none.cpp index 78d408aa35..c0126cae79 100644 --- a/src/ports/SkImageGenerator_none.cpp +++ b/src/ports/SkImageGenerator_none.cpp @@ -7,6 +7,6 @@ #include "SkImageGenerator.h" -SkImageGenerator* SkImageGenerator::NewFromData(SkData*) { +SkImageGenerator* SkImageGenerator::NewFromEncodedImpl(SkData*) { return NULL; } diff --git a/src/ports/SkImageGenerator_skia.cpp b/src/ports/SkImageGenerator_skia.cpp index f972253306..1dbc9a5f33 100644 --- a/src/ports/SkImageGenerator_skia.cpp +++ b/src/ports/SkImageGenerator_skia.cpp @@ -108,11 +108,7 @@ private: typedef SkImageGenerator INHERITED; }; -SkImageGenerator* SkImageGenerator::NewFromData(SkData* data) { - if (NULL == data) { - return NULL; - } - +SkImageGenerator* SkImageGenerator::NewFromEncodedImpl(SkData* data) { SkMemoryStream stream(data->data(), data->size(), false); SkImageDecoder* decoder = SkImageDecoder::Factory(&stream); if (NULL == decoder) { |