diff options
author | Nigel Tao <nigeltao@google.com> | 2018-11-09 10:10:31 +1100 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-11-09 14:48:44 +0000 |
commit | 612a65dd8b27761f2f9e4e68b3a861beb12ea2ed (patch) | |
tree | ff4c4303527452129dcbea5ea1feff7f3df61962 /src/codec | |
parent | c244c2fbbbf85c58a43c977c7c28109a5cdb9cd9 (diff) | |
download | skqp-612a65dd8b27761f2f9e4e68b3a861beb12ea2ed.tar.gz |
Merge SkFooAdapterCodec impls into one impl
Bug: skia:
Change-Id: I5071e45979c1bbfc56ad994367a039390e2519f9
Reviewed-on: https://skia-review.googlesource.com/c/169920
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/SkAndroidCodec.cpp | 12 | ||||
-rw-r--r-- | src/codec/SkAndroidCodecAdapter.cpp (renamed from src/codec/SkWebpAdapterCodec.cpp) | 11 | ||||
-rw-r--r-- | src/codec/SkAndroidCodecAdapter.h (renamed from src/codec/SkWebpAdapterCodec.h) | 18 | ||||
-rw-r--r-- | src/codec/SkRawAdapterCodec.cpp | 28 | ||||
-rw-r--r-- | src/codec/SkRawAdapterCodec.h | 41 |
5 files changed, 20 insertions, 90 deletions
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp index 10d19f34ee..581640f411 100644 --- a/src/codec/SkAndroidCodec.cpp +++ b/src/codec/SkAndroidCodec.cpp @@ -6,14 +6,13 @@ */ #include "SkAndroidCodec.h" +#include "SkAndroidCodecAdapter.h" #include "SkCodec.h" #include "SkCodecPriv.h" #include "SkMakeUnique.h" #include "SkPixmap.h" #include "SkPixmapPriv.h" -#include "SkRawAdapterCodec.h" #include "SkSampledCodec.h" -#include "SkWebpAdapterCodec.h" static bool is_valid_sample_size(int sampleSize) { // FIXME: As Leon has mentioned elsewhere, surely there is also a maximum sampleSize? @@ -97,16 +96,17 @@ std::unique_ptr<SkAndroidCodec> SkAndroidCodec::MakeFromCodec(std::unique_ptr<Sk case SkEncodedImageFormat::kWBMP: case SkEncodedImageFormat::kHEIF: return skstd::make_unique<SkSampledCodec>(codec.release(), orientationBehavior); + #ifdef SK_HAS_WEBP_LIBRARY case SkEncodedImageFormat::kWEBP: - return skstd::make_unique<SkWebpAdapterCodec>((SkWebpCodec*) codec.release(), - orientationBehavior); #endif #ifdef SK_CODEC_DECODES_RAW case SkEncodedImageFormat::kDNG: - return skstd::make_unique<SkRawAdapterCodec>((SkRawCodec*)codec.release(), - orientationBehavior); #endif +#if defined(SK_HAS_WEBP_LIBRARY) || defined(SK_CODEC_DECODES_RAW) + return skstd::make_unique<SkAndroidCodecAdapter>(codec.release(), orientationBehavior); +#endif + default: return nullptr; } diff --git a/src/codec/SkWebpAdapterCodec.cpp b/src/codec/SkAndroidCodecAdapter.cpp index 79a99a72f0..7f882e1f83 100644 --- a/src/codec/SkWebpAdapterCodec.cpp +++ b/src/codec/SkAndroidCodecAdapter.cpp @@ -5,24 +5,23 @@ * found in the LICENSE file. */ -#include "SkCodec.h" +#include "SkAndroidCodecAdapter.h" #include "SkCodecPriv.h" -#include "SkWebpAdapterCodec.h" -SkWebpAdapterCodec::SkWebpAdapterCodec(SkWebpCodec* codec, ExifOrientationBehavior behavior) +SkAndroidCodecAdapter::SkAndroidCodecAdapter(SkCodec* codec, ExifOrientationBehavior behavior) : INHERITED(codec, behavior) {} -SkISize SkWebpAdapterCodec::onGetSampledDimensions(int sampleSize) const { +SkISize SkAndroidCodecAdapter::onGetSampledDimensions(int sampleSize) const { float scale = get_scale_from_sample_size(sampleSize); return this->codec()->getScaledDimensions(scale); } -bool SkWebpAdapterCodec::onGetSupportedSubset(SkIRect* desiredSubset) const { +bool SkAndroidCodecAdapter::onGetSupportedSubset(SkIRect* desiredSubset) const { return this->codec()->getValidSubset(desiredSubset); } -SkCodec::Result SkWebpAdapterCodec::onGetAndroidPixels(const SkImageInfo& info, void* pixels, +SkCodec::Result SkAndroidCodecAdapter::onGetAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const AndroidOptions& options) { SkCodec::Options codecOptions; codecOptions.fZeroInitialized = options.fZeroInitialized; diff --git a/src/codec/SkWebpAdapterCodec.h b/src/codec/SkAndroidCodecAdapter.h index fc8328cf56..ac494c970c 100644 --- a/src/codec/SkWebpAdapterCodec.h +++ b/src/codec/SkAndroidCodecAdapter.h @@ -4,22 +4,22 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ -#ifndef SkWebpAdapterCodec_DEFINED -#define SkWebpAdapterCodec_DEFINED +#ifndef SkAndroidCodecAdapter_DEFINED +#define SkAndroidCodecAdapter_DEFINED #include "SkAndroidCodec.h" -#include "SkWebpCodec.h" /** - * This class implements the functionality of SkAndroidCodec. It uses an - * SkWebpCodec. + * This class wraps SkCodec to implement the functionality of SkAndroidCodec. + * The underlying SkCodec implements sampled decodes. SkCodec's that do not + * implement that are wrapped with SkSampledCodec instead. */ -class SkWebpAdapterCodec : public SkAndroidCodec { +class SkAndroidCodecAdapter : public SkAndroidCodec { public: - explicit SkWebpAdapterCodec(SkWebpCodec*, ExifOrientationBehavior); + explicit SkAndroidCodecAdapter(SkCodec*, ExifOrientationBehavior); - ~SkWebpAdapterCodec() override {} + ~SkAndroidCodecAdapter() override {} protected: @@ -34,4 +34,4 @@ private: typedef SkAndroidCodec INHERITED; }; -#endif // SkWebpAdapterCodec_DEFINED +#endif // SkAndroidCodecAdapter_DEFINED diff --git a/src/codec/SkRawAdapterCodec.cpp b/src/codec/SkRawAdapterCodec.cpp deleted file mode 100644 index d4b3149987..0000000000 --- a/src/codec/SkRawAdapterCodec.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkCodec.h" -#include "SkCodecPriv.h" -#include "SkRawAdapterCodec.h" - -SkRawAdapterCodec::SkRawAdapterCodec(SkRawCodec* codec, ExifOrientationBehavior behavior) - : INHERITED(codec, behavior) -{} - -SkISize SkRawAdapterCodec::onGetSampledDimensions(int sampleSize) const { - float scale = 1.f / static_cast<float>(sampleSize); - return this->codec()->getScaledDimensions(scale); -} - -SkCodec::Result SkRawAdapterCodec::onGetAndroidPixels( - const SkImageInfo& info, void* pixels, size_t rowBytes, - const AndroidOptions& options) { - SkCodec::Options codecOptions; - codecOptions.fZeroInitialized = options.fZeroInitialized; - codecOptions.fSubset = options.fSubset; - return this->codec()->getPixels(info, pixels, rowBytes, &codecOptions); -} diff --git a/src/codec/SkRawAdapterCodec.h b/src/codec/SkRawAdapterCodec.h deleted file mode 100644 index d4828ce2f7..0000000000 --- a/src/codec/SkRawAdapterCodec.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkRawAdapterCodec_DEFINED -#define SkRawAdapterCodec_DEFINED - -#include "SkAndroidCodec.h" -#include "SkCodec.h" -#include "SkEncodedImageFormat.h" -#include "SkRawCodec.h" -#include "SkStream.h" -#include "SkTypes.h" - -/** - * This class implements the functionality of SkAndroidCodec. It uses an - * SkRawCodec. - */ -class SkRawAdapterCodec : public SkAndroidCodec { -public: - explicit SkRawAdapterCodec(SkRawCodec*, ExifOrientationBehavior); - - ~SkRawAdapterCodec() override {} - -protected: - - SkISize onGetSampledDimensions(int sampleSize) const override; - - bool onGetSupportedSubset(SkIRect* /*desiredSubset*/) const override { return false; } - - SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, - const AndroidOptions& options) override; - -private: - - typedef SkAndroidCodec INHERITED; -}; -#endif // SkRawAdapterCodec_DEFINED |