| /* | |
| * 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; | |
| // FIXME: These fields are necessary only until we change the API of SkImageGenerator | |
| // to match SkCodec. Once the API is changed, they should be removed. | |
| int fYWidth; | |
| int fUWidth; | |
| int fVWidth; | |
| typedef SkImageGenerator INHERITED; | |
| }; |