1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2015 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkBitmapRegionCodec.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkBitmapRegionDecoder.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkAndroidCodec.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCodec.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCodecPriv.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSkBitmapRegionDecoder* SkBitmapRegionDecoder::Create( 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkData> data, Strategy strategy) { 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return SkBitmapRegionDecoder::Create(new SkMemoryStream(data), 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot strategy); 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSkBitmapRegionDecoder* SkBitmapRegionDecoder::Create( 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkStreamRewindable* stream, Strategy strategy) { 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot std::unique_ptr<SkStreamRewindable> streamDeleter(stream); 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot switch (strategy) { 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case kAndroidCodec_Strategy: { 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot auto codec = SkAndroidCodec::MakeFromStream(std::move(streamDeleter)); 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (nullptr == codec) { 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkCodecPrintf("Error: Failed to create codec.\n"); 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return nullptr; 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot switch ((SkEncodedImageFormat)codec->getEncodedFormat()) { 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkEncodedImageFormat::kJPEG: 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkEncodedImageFormat::kPNG: 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkEncodedImageFormat::kWEBP: 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkEncodedImageFormat::kHEIF: 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot break; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot default: 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return nullptr; 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return new SkBitmapRegionCodec(codec.release()); 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot default: 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkASSERT(false); 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return nullptr; 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 48