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>
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp
index 10d19f3..581640f 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 @@
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
similarity index 62%
rename from src/codec/SkWebpAdapterCodec.cpp
rename to src/codec/SkAndroidCodecAdapter.cpp
index 79a99a7..7f882e1 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/SkAndroidCodecAdapter.h b/src/codec/SkAndroidCodecAdapter.h
new file mode 100644
index 0000000..ac494c9
--- /dev/null
+++ b/src/codec/SkAndroidCodecAdapter.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#ifndef SkAndroidCodecAdapter_DEFINED
+#define SkAndroidCodecAdapter_DEFINED
+
+#include "SkAndroidCodec.h"
+
+/**
+ * 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 SkAndroidCodecAdapter : public SkAndroidCodec {
+public:
+
+ explicit SkAndroidCodecAdapter(SkCodec*, ExifOrientationBehavior);
+
+ ~SkAndroidCodecAdapter() override {}
+
+protected:
+
+ SkISize onGetSampledDimensions(int sampleSize) const override;
+
+ bool onGetSupportedSubset(SkIRect* desiredSubset) const override;
+
+ SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
+ const AndroidOptions& options) override;
+
+private:
+
+ typedef SkAndroidCodec INHERITED;
+};
+#endif // SkAndroidCodecAdapter_DEFINED
diff --git a/src/codec/SkRawAdapterCodec.cpp b/src/codec/SkRawAdapterCodec.cpp
deleted file mode 100644
index d4b3149..0000000
--- 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 d4828ce..0000000
--- 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
diff --git a/src/codec/SkWebpAdapterCodec.h b/src/codec/SkWebpAdapterCodec.h
deleted file mode 100644
index fc8328c..0000000
--- a/src/codec/SkWebpAdapterCodec.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2015 Google Inc.
- *
- * 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
-
-#include "SkAndroidCodec.h"
-#include "SkWebpCodec.h"
-
-/**
- * This class implements the functionality of SkAndroidCodec. It uses an
- * SkWebpCodec.
- */
-class SkWebpAdapterCodec : public SkAndroidCodec {
-public:
-
- explicit SkWebpAdapterCodec(SkWebpCodec*, ExifOrientationBehavior);
-
- ~SkWebpAdapterCodec() override {}
-
-protected:
-
- SkISize onGetSampledDimensions(int sampleSize) const override;
-
- bool onGetSupportedSubset(SkIRect* desiredSubset) const override;
-
- SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
- const AndroidOptions& options) override;
-
-private:
-
- typedef SkAndroidCodec INHERITED;
-};
-#endif // SkWebpAdapterCodec_DEFINED