diff options
author | msarett <msarett@google.com> | 2016-01-14 13:12:26 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-14 13:12:26 -0800 |
commit | edd2dcf08224fc6c313610bfc9f9f8257e0e85ef (patch) | |
tree | 2de508045eb035a5298e3e60bfc8f288a4de159a /src/codec/SkCodecImageGenerator.cpp | |
parent | 973ed24fcb58db36588a19c18ae56af8f8adbba3 (diff) |
Create an SkCodecImageGenerator
BUG=skia:
patch from issue 1396323007 at patchset 120001 (http://crrev.com/1396323007#ps120001)
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1487683004
Committed: https://skia.googlesource.com/skia/+/e1102ce1d3d0895e840e756e155ec56b5a1a7540
Review URL: https://codereview.chromium.org/1487683004
Diffstat (limited to 'src/codec/SkCodecImageGenerator.cpp')
-rw-r--r-- | src/codec/SkCodecImageGenerator.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/codec/SkCodecImageGenerator.cpp b/src/codec/SkCodecImageGenerator.cpp new file mode 100644 index 0000000000..2fef381ec1 --- /dev/null +++ b/src/codec/SkCodecImageGenerator.cpp @@ -0,0 +1,46 @@ +/* + * 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 "SkCodecImageGenerator.h" + +SkImageGenerator* SkCodecImageGenerator::NewFromEncodedCodec(SkData* data) { + SkCodec* codec = SkCodec::NewFromData(data); + if (nullptr == codec) { + return nullptr; + } + + return new SkCodecImageGenerator(codec, data); +} + +SkCodecImageGenerator::SkCodecImageGenerator(SkCodec* codec, SkData* data) + : INHERITED(codec->getInfo()) + , fCodec(codec) + , fData(SkRef(data)) +{} + +SkData* SkCodecImageGenerator::onRefEncodedData(SK_REFENCODEDDATA_CTXPARAM) { + return SkRef(fData.get()); +} + +bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, + SkPMColor ctable[], int* ctableCount) { + + SkCodec::Result result = fCodec->getPixels(info, pixels, rowBytes, nullptr, ctable, + ctableCount); + switch (result) { + case SkCodec::kSuccess: + case SkCodec::kIncompleteInput: + return true; + default: + return false; + } +} + +bool SkCodecImageGenerator::onGetYUV8Planes(SkISize sizes[3], void* planes[3], size_t rowBytes[3], + SkYUVColorSpace* colorSpace) { + return false; +} |