From 94fd06f074016e3ca6a82b88dfdc0ec61d24e67e Mon Sep 17 00:00:00 2001 From: Matt Sarett Date: Mon, 8 May 2017 17:31:00 -0400 Subject: Move SkPngEncoder into public API Bug: 713862 Change-Id: I45068ed39affe41ffe0f29bf42c5ea1d9b0247ba Reviewed-on: https://skia-review.googlesource.com/15897 Reviewed-by: Mike Reed Reviewed-by: Mike Klein Reviewed-by: Leon Scroggins Commit-Queue: Matt Sarett --- src/images/SkEncoder.h | 41 -------------------- src/images/SkPngEncoder.h | 98 ----------------------------------------------- 2 files changed, 139 deletions(-) delete mode 100644 src/images/SkEncoder.h delete mode 100644 src/images/SkPngEncoder.h (limited to 'src/images') diff --git a/src/images/SkEncoder.h b/src/images/SkEncoder.h deleted file mode 100644 index e2686adb27..0000000000 --- a/src/images/SkEncoder.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkEncoder_DEFINED -#define SkEncoder_DEFINED - -#include "SkPixmap.h" -#include "SkTemplates.h" - -class SkEncoder : SkNoncopyable { -public: - - /** - * Encode |numRows| rows of input. If the caller requests more rows than are remaining - * in the src, this will encode all of the remaining rows. |numRows| must be greater - * than zero. - */ - bool encodeRows(int numRows); - - virtual ~SkEncoder() {} - -protected: - - virtual bool onEncodeRows(int numRows) = 0; - - SkEncoder(const SkPixmap& src, size_t storageBytes) - : fSrc(src) - , fCurrRow(0) - , fStorage(storageBytes) - {} - - const SkPixmap& fSrc; - int fCurrRow; - SkAutoTMalloc fStorage; -}; - -#endif diff --git a/src/images/SkPngEncoder.h b/src/images/SkPngEncoder.h deleted file mode 100644 index 0664c06149..0000000000 --- a/src/images/SkPngEncoder.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkPngEncoder_DEFINED -#define SkPngEncoder_DEFINED - -#include "SkEncoder.h" - -class SkPngEncoderMgr; -class SkWStream; - -class SkPngEncoder : public SkEncoder { -public: - - enum class FilterFlag : int { - kZero = 0x00, - kNone = 0x08, - kSub = 0x10, - kUp = 0x20, - kAvg = 0x40, - kPaeth = 0x80, - kAll = kNone | kSub | kUp | kAvg | kPaeth, - }; - - struct Options { - /** - * Selects which filtering strategies to use. - * - * If a single filter is chosen, libpng will use that filter for every row. - * - * If multiple filters are chosen, libpng will use a heuristic to guess which filter - * will encode smallest, then apply that filter. This happens on a per row basis, - * different rows can use different filters. - * - * Using a single filter (or less filters) is typically faster. Trying all of the - * filters may help minimize the output file size. - * - * Our default value matches libpng's default. - */ - FilterFlag fFilterFlags = FilterFlag::kAll; - - /** - * Must be in [0, 9] where 9 corresponds to maximal compression. This value is passed - * directly to zlib. 0 is a special case to skip zlib entirely, creating dramatically - * larger pngs. - * - * Our default value matches libpng's default. - */ - int fZLibLevel = 6; - - /** - * If the input is premultiplied, this controls the unpremultiplication behavior. - * The encoder can convert to linear before unpremultiplying or ignore the transfer - * function and unpremultiply the input as is. - */ - SkTransferFunctionBehavior fUnpremulBehavior = SkTransferFunctionBehavior::kRespect; - }; - - /** - * Encode the |src| pixels to the |dst| stream. - * |options| may be used to control the encoding behavior. - * - * Returns true on success. Returns false on an invalid or unsupported |src|. - */ - static bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options); - - /** - * Create a png encoder that will encode the |src| pixels to the |dst| stream. - * |options| may be used to control the encoding behavior. - * - * |dst| is unowned but must remain valid for the lifetime of the object. - * - * This returns nullptr on an invalid or unsupported |src|. - */ - static std::unique_ptr Make(SkWStream* dst, const SkPixmap& src, - const Options& options); - - ~SkPngEncoder() override; - -protected: - bool onEncodeRows(int numRows) override; - - SkPngEncoder(std::unique_ptr, const SkPixmap& src); - - std::unique_ptr fEncoderMgr; - typedef SkEncoder INHERITED; -}; - -static inline SkPngEncoder::FilterFlag operator|(SkPngEncoder::FilterFlag x, - SkPngEncoder::FilterFlag y) { - return (SkPngEncoder::FilterFlag)((int)x | (int)y); -} - -#endif -- cgit v1.2.3