diff options
author | Matt Sarett <msarett@google.com> | 2017-05-08 17:31:00 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-09 17:46:30 +0000 |
commit | 94fd06f074016e3ca6a82b88dfdc0ec61d24e67e (patch) | |
tree | f46f54e2d8066a749c29e277da2e38c3e6fc4cca /src/images | |
parent | 6dfcecad33c949e775a3fd0a58637721ab5e295e (diff) |
Move SkPngEncoder into public API
Bug: 713862
Change-Id: I45068ed39affe41ffe0f29bf42c5ea1d9b0247ba
Reviewed-on: https://skia-review.googlesource.com/15897
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/images')
-rw-r--r-- | src/images/SkEncoder.h | 41 | ||||
-rw-r--r-- | src/images/SkPngEncoder.h | 98 |
2 files changed, 0 insertions, 139 deletions
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<uint8_t> 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<SkPngEncoder> Make(SkWStream* dst, const SkPixmap& src, - const Options& options); - - ~SkPngEncoder() override; - -protected: - bool onEncodeRows(int numRows) override; - - SkPngEncoder(std::unique_ptr<SkPngEncoderMgr>, const SkPixmap& src); - - std::unique_ptr<SkPngEncoderMgr> fEncoderMgr; - typedef SkEncoder INHERITED; -}; - -static inline SkPngEncoder::FilterFlag operator|(SkPngEncoder::FilterFlag x, - SkPngEncoder::FilterFlag y) { - return (SkPngEncoder::FilterFlag)((int)x | (int)y); -} - -#endif |