aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images/SkImageEncoder.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2016-11-23 08:55:18 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-23 16:40:32 +0000
commitdb6830162eca5b94e61d9825ec93306fc615d204 (patch)
tree02be1aa930879c2b389e80beb4910c8d27027257 /src/images/SkImageEncoder.cpp
parent45580d3e3024c1536e8e1b2017b704805442b634 (diff)
SkImageEncoder: simplify API
(re-land 248ff02 & 2cb6cb7, with changes) - Hide SkImageEncoder class in private header. - SkImageEncoder::Type becomes SkEncodedImageFormat - SkEncodedFormat becomes SkEncodedImageFormat - SkImageEncoder static functions replaced with single function EncodeImage() - utility wrappers for EncodeImage() are in sk_tool_utils.h TODO: remove link-time registration mechanism. TODO: clean up clients use of API and flip the flag. TODO: implement EncodeImage() in chromeium/skia/ext Change-Id: I47d451e50be4d5c6c130869c7fa7c2857243d9f0 Reviewed-on: https://skia-review.googlesource.com/4909 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com> Reviewed-on: https://skia-review.googlesource.com/5186 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Hal Canary <halcanary@google.com>
Diffstat (limited to 'src/images/SkImageEncoder.cpp')
-rw-r--r--src/images/SkImageEncoder.cpp83
1 files changed, 7 insertions, 76 deletions
diff --git a/src/images/SkImageEncoder.cpp b/src/images/SkImageEncoder.cpp
index 787ff8ef62..c137bc5e0a 100644
--- a/src/images/SkImageEncoder.cpp
+++ b/src/images/SkImageEncoder.cpp
@@ -5,84 +5,15 @@
* found in the LICENSE file.
*/
-#include "SkImageEncoder.h"
-#include "SkBitmap.h"
-#include "SkPixelSerializer.h"
-#include "SkPixmap.h"
-#include "SkStream.h"
-#include "SkTemplates.h"
+#include "SkImageEncoderPriv.h"
-SkImageEncoder::~SkImageEncoder() {}
-
-bool SkImageEncoder::encodeStream(SkWStream* stream, const SkBitmap& bm,
- int quality) {
- quality = SkMin32(100, SkMax32(0, quality));
- return this->onEncode(stream, bm, quality);
-}
-
-bool SkImageEncoder::encodeFile(const char file[], const SkBitmap& bm,
- int quality) {
- quality = SkMin32(100, SkMax32(0, quality));
- SkFILEWStream stream(file);
- return this->onEncode(&stream, bm, quality);
-}
-
-SkData* SkImageEncoder::encodeData(const SkBitmap& bm, int quality) {
- SkDynamicMemoryWStream stream;
- quality = SkMin32(100, SkMax32(0, quality));
- if (this->onEncode(&stream, bm, quality)) {
- return stream.detachAsData().release();
- }
- return nullptr;
-}
-
-bool SkImageEncoder::EncodeFile(const char file[], const SkBitmap& bm, Type t,
- int quality) {
- std::unique_ptr<SkImageEncoder> enc(SkImageEncoder::Create(t));
- return enc.get() && enc.get()->encodeFile(file, bm, quality);
-}
-
-bool SkImageEncoder::EncodeStream(SkWStream* stream, const SkBitmap& bm, Type t,
- int quality) {
- std::unique_ptr<SkImageEncoder> enc(SkImageEncoder::Create(t));
- return enc.get() && enc.get()->encodeStream(stream, bm, quality);
-}
-
-SkData* SkImageEncoder::EncodeData(const SkBitmap& bm, Type t, int quality) {
- std::unique_ptr<SkImageEncoder> enc(SkImageEncoder::Create(t));
- return enc.get() ? enc.get()->encodeData(bm, quality) : nullptr;
-}
-
-SkData* SkImageEncoder::EncodeData(const SkImageInfo& info, const void* pixels, size_t rowBytes,
- Type t, int quality) {
+bool SkEncodeImage(SkWStream* dst, const SkPixmap& src,
+ SkEncodedImageFormat format, int quality) {
SkBitmap bm;
- if (!bm.installPixels(info, const_cast<void*>(pixels), rowBytes)) {
- return nullptr;
+ if (!bm.installPixels(src)) {
+ return false;
}
bm.setImmutable();
- return SkImageEncoder::EncodeData(bm, t, quality);
-}
-
-SkData* SkImageEncoder::EncodeData(const SkPixmap& pixmap,
- Type t, int quality) {
- SkBitmap bm;
- if (!bm.installPixels(pixmap)) {
- return nullptr;
- }
- bm.setImmutable();
- return SkImageEncoder::EncodeData(bm, t, quality);
-}
-
-namespace {
-class ImageEncoderPixelSerializer final : public SkPixelSerializer {
-protected:
- bool onUseEncodedData(const void*, size_t) override { return true; }
- SkData* onEncode(const SkPixmap& pmap) override {
- return SkImageEncoder::EncodeData(pmap, SkImageEncoder::kPNG_Type, 100);
- }
-};
-} // namespace
-
-SkPixelSerializer* SkImageEncoder::CreatePixelSerializer() {
- return new ImageEncoderPixelSerializer;
+ std::unique_ptr<SkImageEncoder> enc(SkImageEncoder::Create((SkImageEncoder::Type)format));
+ return enc && enc->encodeStream(dst, bm, quality);
}