From d15750c0c7766ecab7022ea9b2f9e89a9132cbc2 Mon Sep 17 00:00:00 2001 From: msarett Date: Fri, 18 Mar 2016 15:48:49 -0700 Subject: Remove uses of SkImageDecoder from samplecode BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1812323003 Review URL: https://codereview.chromium.org/1812323003 --- samplecode/DecodeFile.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 samplecode/DecodeFile.h (limited to 'samplecode/DecodeFile.h') diff --git a/samplecode/DecodeFile.h b/samplecode/DecodeFile.h new file mode 100644 index 0000000000..26d5d2dc26 --- /dev/null +++ b/samplecode/DecodeFile.h @@ -0,0 +1,31 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkBitmap.h" +#include "SkCodec.h" +#include "SkData.h" + +inline bool decode_file(const char* filename, SkBitmap* bitmap, + SkColorType colorType = kN32_SkColorType, bool requireUnpremul = false) { + SkASSERT(kIndex_8_SkColorType != colorType); + SkAutoTUnref data(SkData::NewFromFileName(filename)); + SkAutoTDelete codec(SkCodec::NewFromData(data)); + if (!codec) { + return false; + } + + SkImageInfo info = codec->getInfo().makeColorType(colorType); + if (requireUnpremul && kPremul_SkAlphaType == info.alphaType()) { + info = info.makeAlphaType(kUnpremul_SkAlphaType); + } + + if (!bitmap->tryAllocPixels(info)) { + return false; + } + + return SkCodec::kSuccess == codec->getPixels(info, bitmap->getPixels(), bitmap->rowBytes()); +} -- cgit v1.2.3