Chromium Code Reviews| Index: third_party/WebKit/Source/platform/image-encoders/ImageEncoder.h |
| diff --git a/third_party/WebKit/Source/platform/image-encoders/ImageEncoder.h b/third_party/WebKit/Source/platform/image-encoders/ImageEncoder.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d2817140b7fae724a71f8ab823f7c3380ea5093c |
| --- /dev/null |
| +++ b/third_party/WebKit/Source/platform/image-encoders/ImageEncoder.h |
| @@ -0,0 +1,63 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef ImageEncoder_h |
| +#define ImageEncoder_h |
| + |
| +#include "platform/PlatformExport.h" |
| +#include "platform/wtf/Vector.h" |
| +#include "third_party/skia/include/core/SkStream.h" |
| +#include "third_party/skia/include/encode/SkJpegEncoder.h" |
| +#include "third_party/skia/include/encode/SkPngEncoder.h" |
| + |
| +namespace blink { |
| + |
| +class VectorWStream : public SkWStream { |
| + public: |
| + VectorWStream(Vector<unsigned char>* dst) : dst_(dst) { |
| + DCHECK(dst_); |
| + DCHECK_EQ(0UL, dst->size()); |
| + } |
| + |
| + bool write(const void* buffer, size_t size) override { |
| + dst_->Append((const unsigned char*)buffer, size); |
| + return true; |
| + } |
| + |
| + size_t bytesWritten() const override { return dst_->size(); } |
| + |
| + private: |
| + // Does not have ownership. |
| + Vector<unsigned char>* dst_; |
| +}; |
| + |
| +class PLATFORM_EXPORT ImageEncoder { |
| + public: |
| + static bool Encode(Vector<unsigned char>* dst, |
| + const SkPixmap& src, |
| + const SkJpegEncoder::Options&); |
| + |
| + static bool Encode(Vector<unsigned char>* dst, |
| + const SkPixmap& src, |
| + const SkPngEncoder::Options&); |
| + |
| + static std::unique_ptr<ImageEncoder> Make(Vector<unsigned char>* dst, |
| + const SkPixmap& src, |
| + const SkJpegEncoder::Options&); |
| + |
| + static std::unique_ptr<ImageEncoder> Make(Vector<unsigned char>* dst, |
| + const SkPixmap& src, |
| + const SkPngEncoder::Options&); |
| + |
| + bool encodeRows(int numRows) { return encoder_->encodeRows(numRows); } |
| + |
| + private: |
| + ImageEncoder(Vector<unsigned char>* dst) : dst_(dst) {} |
| + |
| + VectorWStream dst_; |
|
msarett1
2017/05/15 23:49:08
If I were to make this a ptr, I think I could move
|
| + std::unique_ptr<SkEncoder> encoder_; |
| +}; |
| +}; |
| + |
| +#endif |