Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / modules / androidkit / src / ColorFilters.cpp
1 /*
2  * Copyright 2021 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7
8 #include <jni.h>
9
10 #include "include/core/SkColorFilter.h"
11 #include "modules/androidkit/src/Utils.h"
12
13 namespace {
14
15 static jlong MakeMatrix(JNIEnv* env, jobject, jfloatArray jcm) {
16     SkASSERT(env->GetArrayLength(jcm) == 20);
17
18     auto cf = SkColorFilters::Matrix(androidkit::utils::CFloats(env, jcm));
19
20     return reinterpret_cast<jlong>(cf.release());
21 }
22
23 static jlong MakeHSLAMatrix(JNIEnv* env, jobject, jfloatArray jcm) {
24     SkASSERT(env->GetArrayLength(jcm) == 20);
25
26     auto cf = SkColorFilters::HSLAMatrix(androidkit::utils::CFloats(env, jcm));
27
28     return reinterpret_cast<jlong>(cf.release());
29 }
30
31 static jlong MakeCompose(JNIEnv*, jobject, jlong outer, jlong inner) {
32     auto cf = SkColorFilters::Compose(sk_ref_sp(reinterpret_cast<SkColorFilter*>(outer)),
33                                       sk_ref_sp(reinterpret_cast<SkColorFilter*>(inner)));
34
35     return reinterpret_cast<jlong>(cf.release());
36 }
37
38 static void ColorFilter_Release(JNIEnv*, jobject, jlong native_cf) {
39     SkSafeUnref(reinterpret_cast<SkColorFilter*>(native_cf));
40 }
41
42 }  // namespace
43
44 int register_androidkit_ColorFilter(JNIEnv* env) {
45     static const JNINativeMethod methods[] = {
46         {"nRelease"         , "(J)V" , reinterpret_cast<void*>(ColorFilter_Release)         },
47     };
48
49     const auto clazz = env->FindClass("org/skia/androidkit/ColorFilter");
50     return clazz
51         ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
52         : JNI_ERR;
53 }
54
55 int register_androidkit_MatrixColorFilter(JNIEnv* env) {
56     static const JNINativeMethod methods[] = {
57         {"nMakeMatrix", "([F)J", reinterpret_cast<void*>(MakeMatrix)},
58     };
59
60     const auto clazz = env->FindClass("org/skia/androidkit/MatrixColorFilter");
61     return clazz
62         ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
63         : JNI_ERR;
64 }
65
66 int register_androidkit_HSLAMatrixColorFilter(JNIEnv* env) {
67     static const JNINativeMethod methods[] = {
68         {"nMakeHSLAMatrix", "([F)J", reinterpret_cast<void*>(MakeHSLAMatrix)},
69     };
70
71     const auto clazz = env->FindClass("org/skia/androidkit/HSLAMatrixColorFilter");
72     return clazz
73         ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
74         : JNI_ERR;
75 }
76
77 int register_androidkit_ComposeColorFilter(JNIEnv* env) {
78     static const JNINativeMethod methods[] = {
79         {"nMakeCompose", "(JJ)J", reinterpret_cast<void*>(MakeCompose)},
80     };
81
82     const auto clazz = env->FindClass("org/skia/androidkit/ComposeColorFilter");
83     return clazz
84         ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
85         : JNI_ERR;
86 }