1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*
- * 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 "include/android/SkBitmapRegionDecoder.h"
- #include "include/codec/SkAndroidCodec.h"
- #include "include/codec/SkCodec.h"
- #include "src/android/SkBitmapRegionCodec.h"
- #include "src/codec/SkCodecPriv.h"
- SkBitmapRegionDecoder* SkBitmapRegionDecoder::Create(
- sk_sp<SkData> data, Strategy strategy) {
- return SkBitmapRegionDecoder::Create(new SkMemoryStream(data),
- strategy);
- }
- SkBitmapRegionDecoder* SkBitmapRegionDecoder::Create(
- SkStreamRewindable* stream, Strategy strategy) {
- std::unique_ptr<SkStreamRewindable> streamDeleter(stream);
- switch (strategy) {
- case kAndroidCodec_Strategy: {
- auto codec = SkAndroidCodec::MakeFromStream(std::move(streamDeleter));
- if (nullptr == codec) {
- SkCodecPrintf("Error: Failed to create codec.\n");
- return nullptr;
- }
- switch ((SkEncodedImageFormat)codec->getEncodedFormat()) {
- case SkEncodedImageFormat::kJPEG:
- case SkEncodedImageFormat::kPNG:
- case SkEncodedImageFormat::kWEBP:
- case SkEncodedImageFormat::kHEIF:
- break;
- default:
- return nullptr;
- }
- return new SkBitmapRegionCodec(codec.release());
- }
- default:
- SkASSERT(false);
- return nullptr;
- }
- }
|