1/* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7#ifndef SkCodecImageGenerator_DEFINED 8#define SkCodecImageGenerator_DEFINED 9 10#include "SkCodec.h" 11#include "SkColorTable.h" 12#include "SkData.h" 13#include "SkImageGenerator.h" 14 15class SkCodecImageGenerator : public SkImageGenerator { 16public: 17 /* 18 * If this data represents an encoded image that we know how to decode, 19 * return an SkCodecImageGenerator. Otherwise return nullptr. 20 */ 21 static std::unique_ptr<SkImageGenerator> MakeFromEncodedCodec(sk_sp<SkData>); 22 23protected: 24 SkData* onRefEncodedData() override; 25 26 bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options& opts) 27 override; 28 29 bool onQueryYUV8(SkYUVSizeInfo*, SkYUVColorSpace*) const override; 30 31 bool onGetYUV8Planes(const SkYUVSizeInfo&, void* planes[3]) override; 32 33private: 34 /* 35 * Takes ownership of codec 36 */ 37 SkCodecImageGenerator(std::unique_ptr<SkCodec>, sk_sp<SkData>); 38 39 std::unique_ptr<SkCodec> fCodec; 40 sk_sp<SkData> fData; 41 sk_sp<SkColorTable> fColorTable; 42 43 typedef SkImageGenerator INHERITED; 44}; 45#endif // SkCodecImageGenerator_DEFINED 46