1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2021 Google Inc.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#include <android/log.h>
9cb93a386Sopenharmony_ci#include <jni.h>
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci#define REGISTER_NATIVES(class_name)                     \
12cb93a386Sopenharmony_ciextern int register_androidkit_##class_name(JNIEnv*);    \
13cb93a386Sopenharmony_ciif (auto rc = register_androidkit_##class_name(env)) {   \
14cb93a386Sopenharmony_ci    __android_log_print(ANDROID_LOG_ERROR, "AndroidKit", \
15cb93a386Sopenharmony_ci        "Failed to load natives: " #class_name);         \
16cb93a386Sopenharmony_ci    return rc;                                           \
17cb93a386Sopenharmony_ci}
18cb93a386Sopenharmony_ci
19cb93a386Sopenharmony_ci
20cb93a386Sopenharmony_ciJNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
21cb93a386Sopenharmony_ci    JNIEnv* env;
22cb93a386Sopenharmony_ci    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
23cb93a386Sopenharmony_ci        return JNI_ERR;
24cb93a386Sopenharmony_ci    }
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci    REGISTER_NATIVES(Canvas)
27cb93a386Sopenharmony_ci    REGISTER_NATIVES(ColorFilter)
28cb93a386Sopenharmony_ci    REGISTER_NATIVES(ComposeColorFilter)
29cb93a386Sopenharmony_ci    REGISTER_NATIVES(Font)
30cb93a386Sopenharmony_ci    REGISTER_NATIVES(FontChain)
31cb93a386Sopenharmony_ci    REGISTER_NATIVES(HSLAMatrixColorFilter)
32cb93a386Sopenharmony_ci    REGISTER_NATIVES(Image)
33cb93a386Sopenharmony_ci    REGISTER_NATIVES(ImageFilter)
34cb93a386Sopenharmony_ci    REGISTER_NATIVES(LinearGradient)
35cb93a386Sopenharmony_ci    REGISTER_NATIVES(Matrix)
36cb93a386Sopenharmony_ci    REGISTER_NATIVES(MatrixColorFilter)
37cb93a386Sopenharmony_ci    REGISTER_NATIVES(Paint)
38cb93a386Sopenharmony_ci    REGISTER_NATIVES(Path)
39cb93a386Sopenharmony_ci    REGISTER_NATIVES(PathBuilder)
40cb93a386Sopenharmony_ci    REGISTER_NATIVES(RadialGradient)
41cb93a386Sopenharmony_ci    REGISTER_NATIVES(RuntimeShaderBuilder)
42cb93a386Sopenharmony_ci    REGISTER_NATIVES(Shader)
43cb93a386Sopenharmony_ci    REGISTER_NATIVES(SkottieAnimation)
44cb93a386Sopenharmony_ci    REGISTER_NATIVES(Surface)
45cb93a386Sopenharmony_ci    REGISTER_NATIVES(SweepGradient)
46cb93a386Sopenharmony_ci    REGISTER_NATIVES(Text)
47cb93a386Sopenharmony_ci    REGISTER_NATIVES(TwoPointConicalGradient)
48cb93a386Sopenharmony_ci
49cb93a386Sopenharmony_ci    return JNI_VERSION_1_6;
50cb93a386Sopenharmony_ci}
51