/* * 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 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