xref: /aosp_15_r20/external/skia/include/ports/SkImageGeneratorNDK.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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