1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2020 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkImageGeneratorNDK_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define SkImageGeneratorNDK_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h" 12*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_ENABLE_NDK_IMAGES 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkData.h" 15*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkImageGenerator.h" 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker #include <memory> 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker namespace SkImageGeneratorNDK { 20*c8dee2aaSAndroid Build Coastguard Worker /** 21*c8dee2aaSAndroid Build Coastguard Worker * Create a generator that uses the Android NDK's APIs for decoding images. 22*c8dee2aaSAndroid Build Coastguard Worker * 23*c8dee2aaSAndroid Build Coastguard Worker * Only supported on devices where __ANDROID_API__ >= 30. 24*c8dee2aaSAndroid Build Coastguard Worker * 25*c8dee2aaSAndroid Build Coastguard Worker * As with SkCodec, the SkColorSpace passed to getPixels() determines the 26*c8dee2aaSAndroid Build Coastguard Worker * type of color space transformations to apply. A null SkColorSpace means to 27*c8dee2aaSAndroid Build Coastguard Worker * apply none. 28*c8dee2aaSAndroid Build Coastguard Worker * 29*c8dee2aaSAndroid Build Coastguard Worker * A note on scaling: Calling getPixels() on the resulting SkImageGenerator 30*c8dee2aaSAndroid Build Coastguard Worker * with dimensions that do not match getInfo() requests a scale. For WebP 31*c8dee2aaSAndroid Build Coastguard Worker * files, dimensions smaller than those of getInfo are supported. For Jpeg 32*c8dee2aaSAndroid Build Coastguard Worker * files, dimensions of 1/2, 1/4, and 1/8 are supported. TODO: Provide an 33*c8dee2aaSAndroid Build Coastguard Worker * API like SkCodecImageGenerator::getScaledDimensions() to report which 34*c8dee2aaSAndroid Build Coastguard Worker * dimensions are supported? 35*c8dee2aaSAndroid Build Coastguard Worker */ 36*c8dee2aaSAndroid Build Coastguard Worker SK_API std::unique_ptr<SkImageGenerator> MakeFromEncodedNDK(sk_sp<SkData>); 37*c8dee2aaSAndroid Build Coastguard Worker } 38*c8dee2aaSAndroid Build Coastguard Worker 39*c8dee2aaSAndroid Build Coastguard Worker #endif // SK_ENABLE_NDK_IMAGES 40*c8dee2aaSAndroid Build Coastguard Worker #endif // SkImageGeneratorNDK_DEFINED 41