diff options
author | Hal Canary <halcanary@google.com> | 2016-11-23 08:55:18 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-23 16:40:32 +0000 |
commit | db6830162eca5b94e61d9825ec93306fc615d204 (patch) | |
tree | 02be1aa930879c2b389e80beb4910c8d27027257 /tools/sk_tool_utils.h | |
parent | 45580d3e3024c1536e8e1b2017b704805442b634 (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 'tools/sk_tool_utils.h')
-rw-r--r-- | tools/sk_tool_utils.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/sk_tool_utils.h b/tools/sk_tool_utils.h index c6abbcf7c2..526f0ef505 100644 --- a/tools/sk_tool_utils.h +++ b/tools/sk_tool_utils.h @@ -225,6 +225,31 @@ namespace sk_tool_utils { SkTDArray<TopoTestNode*> fDependencies; }; + template <typename T> + inline bool EncodeImageToFile(const char* path, const T& src, SkEncodedImageFormat f, int q) { + SkFILEWStream file(path); + return file.isValid() && SkEncodeImage(&file, src, f, q); + } + + template <typename T> + inline sk_sp<SkData> EncodeImageToData(const T& src, SkEncodedImageFormat f, int q) { + SkDynamicMemoryWStream buf; + return SkEncodeImage(&buf, src , f, q) ? buf.detachAsData() : nullptr; + } + + /** + * Uses SkEncodeImage to serialize images that are not already + * encoded as SkEncodedImageFormat::kPNG images. + */ + inline sk_sp<SkPixelSerializer> MakePixelSerializer() { + struct EncodeImagePixelSerializer final : SkPixelSerializer { + bool onUseEncodedData(const void*, size_t) override { return true; } + SkData* onEncode(const SkPixmap& pmap) override { + return EncodeImageToData(pmap, SkEncodedImageFormat::kPNG, 100).release(); + } + }; + return sk_make_sp<EncodeImagePixelSerializer>(); + } } // namespace sk_tool_utils #endif // sk_tool_utils_DEFINED |