| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef SkCodecImageGenerator_DEFINED |
| #define SkCodecImageGenerator_DEFINED |
| |
| #include "SkCodec.h" |
| #include "SkColorTable.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. |
| */ |
| static std::unique_ptr<SkImageGenerator> MakeFromEncodedCodec(sk_sp<SkData>); |
| |
| protected: |
| SkData* onRefEncodedData(GrContext* ctx) override; |
| |
| bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, SkPMColor ctable[], |
| int* ctableCount) override; |
| bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options& opts) |
| override; |
| |
| bool onQueryYUV8(SkYUVSizeInfo*, SkYUVColorSpace*) const override; |
| |
| bool onGetYUV8Planes(const SkYUVSizeInfo&, void* planes[3]) override; |
| |
| private: |
| /* |
| * Takes ownership of codec |
| */ |
| SkCodecImageGenerator(SkCodec* codec, sk_sp<SkData>); |
| |
| std::unique_ptr<SkCodec> fCodec; |
| sk_sp<SkData> fData; |
| sk_sp<SkColorTable> fColorTable; |
| |
| typedef SkImageGenerator INHERITED; |
| }; |
| #endif // SkCodecImageGenerator_DEFINED |