diff options
author | msarett <msarett@google.com> | 2016-01-14 13:12:26 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-14 13:12:26 -0800 |
commit | edd2dcf08224fc6c313610bfc9f9f8257e0e85ef (patch) | |
tree | 2de508045eb035a5298e3e60bfc8f288a4de159a /src/codec/SkCodecImageGenerator.h | |
parent | 973ed24fcb58db36588a19c18ae56af8f8adbba3 (diff) |
Create an SkCodecImageGenerator
BUG=skia:
patch from issue 1396323007 at patchset 120001 (http://crrev.com/1396323007#ps120001)
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1487683004
Committed: https://skia.googlesource.com/skia/+/e1102ce1d3d0895e840e756e155ec56b5a1a7540
Review URL: https://codereview.chromium.org/1487683004
Diffstat (limited to 'src/codec/SkCodecImageGenerator.h')
-rw-r--r-- | src/codec/SkCodecImageGenerator.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/codec/SkCodecImageGenerator.h b/src/codec/SkCodecImageGenerator.h new file mode 100644 index 0000000000..80eacb19c8 --- /dev/null +++ b/src/codec/SkCodecImageGenerator.h @@ -0,0 +1,43 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkCodec.h" +#include "SkData.h" +#include "SkImageGenerator.h" + +class SkCodecImageGenerator : public SkImageGenerator { +public: + /* + * If this data represents an encoded image that we know how to decode, + * return an SkCodecImageGenerator. Otherwise return nullptr. + * + * Refs the data if an image generator can be returned. Otherwise does + * not affect the data. + */ + static SkImageGenerator* NewFromEncodedCodec(SkData* data); + +protected: + SkData* onRefEncodedData(SK_REFENCODEDDATA_CTXPARAM) override; + + bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, SkPMColor ctable[], + int* ctableCount) override; + + bool onGetYUV8Planes(SkISize sizes[3], void* planes[3], size_t rowBytes[3], + SkYUVColorSpace* colorSpace) override; + +private: + /* + * Takes ownership of codec + * Refs the data + */ + SkCodecImageGenerator(SkCodec* codec, SkData* data); + + SkAutoTDelete<SkCodec> fCodec; + SkAutoTUnref<SkData> fData; + + typedef SkImageGenerator INHERITED; +}; |