blob: 2fef381ec1ffa332f5d62c8eb30d6b7eebcbe909 [file] [log] [blame]
msarettedd2dcf2016-01-14 13:12:26 -08001/*
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
8#include "SkCodecImageGenerator.h"
9
10SkImageGenerator* SkCodecImageGenerator::NewFromEncodedCodec(SkData* data) {
11 SkCodec* codec = SkCodec::NewFromData(data);
12 if (nullptr == codec) {
13 return nullptr;
14 }
15
16 return new SkCodecImageGenerator(codec, data);
17}
18
19SkCodecImageGenerator::SkCodecImageGenerator(SkCodec* codec, SkData* data)
20 : INHERITED(codec->getInfo())
21 , fCodec(codec)
22 , fData(SkRef(data))
23{}
24
25SkData* SkCodecImageGenerator::onRefEncodedData(SK_REFENCODEDDATA_CTXPARAM) {
26 return SkRef(fData.get());
27}
28
29bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
30 SkPMColor ctable[], int* ctableCount) {
31
32 SkCodec::Result result = fCodec->getPixels(info, pixels, rowBytes, nullptr, ctable,
33 ctableCount);
34 switch (result) {
35 case SkCodec::kSuccess:
36 case SkCodec::kIncompleteInput:
37 return true;
38 default:
39 return false;
40 }
41}
42
43bool SkCodecImageGenerator::onGetYUV8Planes(SkISize sizes[3], void* planes[3], size_t rowBytes[3],
44 SkYUVColorSpace* colorSpace) {
45 return false;
46}