/* * 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 "include/codec/SkCodec.h" #include "include/core/SkData.h" #include "include/core/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 MakeFromEncodedCodec(sk_sp); static std::unique_ptr MakeFromCodec(std::unique_ptr); protected: sk_sp onRefEncodedData() override; bool onGetPixels( const SkImageInfo& info, void* pixels, size_t rowBytes, const Options& opts) override; bool onQueryYUVA8( SkYUVASizeInfo*, SkYUVAIndex[SkYUVAIndex::kIndexCount], SkYUVColorSpace*) const override; bool onGetYUVA8Planes(const SkYUVASizeInfo&, const SkYUVAIndex[SkYUVAIndex::kIndexCount], void* planes[]) override; private: /* * Takes ownership of codec */ SkCodecImageGenerator(std::unique_ptr, sk_sp); std::unique_ptr fCodec; sk_sp fData; typedef SkImageGenerator INHERITED; }; #endif // SkCodecImageGenerator_DEFINED