Index: src/images/SkImageDecoder.cpp |
diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp |
deleted file mode 100644 |
index 221faf74d5e33cf0160e765c3887c69a7e7b3a45..0000000000000000000000000000000000000000 |
--- a/src/images/SkImageDecoder.cpp |
+++ /dev/null |
@@ -1,204 +0,0 @@ |
-/* |
- * Copyright 2006 The Android Open Source Project |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
- |
-#include "SkImageDecoder.h" |
-#include "SkBitmap.h" |
-#include "SkImagePriv.h" |
-#include "SkPixelRef.h" |
-#include "SkStream.h" |
-#include "SkTemplates.h" |
-#include "SkCanvas.h" |
- |
-SkImageDecoder::SkImageDecoder() |
- : fPeeker(nullptr) |
- , fAllocator(nullptr) |
- , fSampleSize(1) |
- , fDefaultPref(kUnknown_SkColorType) |
- , fPreserveSrcDepth(false) |
- , fDitherImage(true) |
- , fSkipWritingZeroes(false) |
- , fPreferQualityOverSpeed(false) |
- , fRequireUnpremultipliedColors(false) { |
-} |
- |
-SkImageDecoder::~SkImageDecoder() { |
- SkSafeUnref(fPeeker); |
- SkSafeUnref(fAllocator); |
-} |
- |
-void SkImageDecoder::copyFieldsToOther(SkImageDecoder* other) { |
- if (nullptr == other) { |
- return; |
- } |
- other->setPeeker(fPeeker); |
- other->setAllocator(fAllocator); |
- other->setSampleSize(fSampleSize); |
- other->setPreserveSrcDepth(fPreserveSrcDepth); |
- other->setDitherImage(fDitherImage); |
- other->setSkipWritingZeroes(fSkipWritingZeroes); |
- other->setPreferQualityOverSpeed(fPreferQualityOverSpeed); |
- other->setRequireUnpremultipliedColors(fRequireUnpremultipliedColors); |
-} |
- |
-SkImageDecoder::Format SkImageDecoder::getFormat() const { |
- return kUnknown_Format; |
-} |
- |
-const char* SkImageDecoder::getFormatName() const { |
- return GetFormatName(this->getFormat()); |
-} |
- |
-const char* SkImageDecoder::GetFormatName(Format format) { |
- switch (format) { |
- case kUnknown_Format: |
- return "Unknown Format"; |
- case kBMP_Format: |
- return "BMP"; |
- case kGIF_Format: |
- return "GIF"; |
- case kICO_Format: |
- return "ICO"; |
- case kPKM_Format: |
- return "PKM"; |
- case kKTX_Format: |
- return "KTX"; |
- case kASTC_Format: |
- return "ASTC"; |
- case kJPEG_Format: |
- return "JPEG"; |
- case kPNG_Format: |
- return "PNG"; |
- case kWBMP_Format: |
- return "WBMP"; |
- case kWEBP_Format: |
- return "WEBP"; |
- default: |
- SkDEBUGFAIL("Invalid format type!"); |
- } |
- return "Unknown Format"; |
-} |
- |
-SkPngChunkReader* SkImageDecoder::setPeeker(SkPngChunkReader* peeker) { |
- SkRefCnt_SafeAssign(fPeeker, peeker); |
- return peeker; |
-} |
- |
-SkBitmap::Allocator* SkImageDecoder::setAllocator(SkBitmap::Allocator* alloc) { |
- SkRefCnt_SafeAssign(fAllocator, alloc); |
- return alloc; |
-} |
- |
-void SkImageDecoder::setSampleSize(int size) { |
- if (size < 1) { |
- size = 1; |
- } |
- fSampleSize = size; |
-} |
- |
-bool SkImageDecoder::allocPixelRef(SkBitmap* bitmap, |
- SkColorTable* ctable) const { |
- return bitmap->tryAllocPixels(fAllocator, ctable); |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-SkColorType SkImageDecoder::getPrefColorType(SrcDepth srcDepth, bool srcHasAlpha) const { |
- SkColorType ct = fDefaultPref; |
- if (fPreserveSrcDepth) { |
- switch (srcDepth) { |
- case kIndex_SrcDepth: |
- ct = kIndex_8_SkColorType; |
- break; |
- case k8BitGray_SrcDepth: |
- ct = kN32_SkColorType; |
- break; |
- case k32Bit_SrcDepth: |
- ct = kN32_SkColorType; |
- break; |
- } |
- } |
- return ct; |
-} |
- |
-SkImageDecoder::Result SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref, |
- Mode mode) { |
- // we reset this to false before calling onDecode |
- fShouldCancelDecode = false; |
- // assign this, for use by getPrefColorType(), in case fUsePrefTable is false |
- fDefaultPref = pref; |
- |
- // pass a temporary bitmap, so that if we return false, we are assured of |
- // leaving the caller's bitmap untouched. |
- SkBitmap tmp; |
- const Result result = this->onDecode(stream, &tmp, mode); |
- if (kFailure != result) { |
- bm->swap(tmp); |
- } |
- return result; |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-bool SkImageDecoder::DecodeFile(const char file[], SkBitmap* bm, SkColorType pref, Mode mode, |
- Format* format) { |
- SkASSERT(file); |
- SkASSERT(bm); |
- |
- SkAutoTDelete<SkStreamRewindable> stream(SkStream::NewFromFile(file)); |
- if (stream.get()) { |
- if (SkImageDecoder::DecodeStream(stream, bm, pref, mode, format)) { |
- if (SkPixelRef* pr = bm->pixelRef()) { |
- pr->setURI(file); |
- } |
- return true; |
- } |
- } |
- return false; |
-} |
- |
-bool SkImageDecoder::DecodeMemory(const void* buffer, size_t size, SkBitmap* bm, SkColorType pref, |
- Mode mode, Format* format) { |
- if (0 == size) { |
- return false; |
- } |
- SkASSERT(buffer); |
- |
- SkMemoryStream stream(buffer, size); |
- return SkImageDecoder::DecodeStream(&stream, bm, pref, mode, format); |
-} |
- |
-bool SkImageDecoder::DecodeStream(SkStreamRewindable* stream, SkBitmap* bm, SkColorType pref, |
- Mode mode, Format* format) { |
- SkASSERT(stream); |
- SkASSERT(bm); |
- |
- bool success = false; |
- SkImageDecoder* codec = SkImageDecoder::Factory(stream); |
- |
- if (codec) { |
- success = codec->decode(stream, bm, pref, mode) != kFailure; |
- if (success && format) { |
- *format = codec->getFormat(); |
- if (kUnknown_Format == *format) { |
- if (stream->rewind()) { |
- *format = GetStreamFormat(stream); |
- } |
- } |
- } |
- delete codec; |
- } |
- return success; |
-} |
- |
-bool SkImageDecoder::decodeYUV8Planes(SkStream* stream, SkISize componentSizes[3], void* planes[3], |
- size_t rowBytes[3], SkYUVColorSpace* colorSpace) { |
- // we reset this to false before calling onDecodeYUV8Planes |
- fShouldCancelDecode = false; |
- |
- return this->onDecodeYUV8Planes(stream, componentSizes, planes, rowBytes, colorSpace); |
-} |