Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
ColorFilters.cpp
Go to the documentation of this file.
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
12
13namespace {
14
15static jlong MakeMatrix(JNIEnv* env, jobject, jfloatArray jcm) {
16 SkASSERT(env->GetArrayLength(jcm) == 20);
17
19
20 return reinterpret_cast<jlong>(cf.release());
21}
22
23static jlong MakeHSLAMatrix(JNIEnv* env, jobject, jfloatArray jcm) {
24 SkASSERT(env->GetArrayLength(jcm) == 20);
25
27
28 return reinterpret_cast<jlong>(cf.release());
29}
30
31static 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
38static void ColorFilter_Release(JNIEnv*, jobject, jlong native_cf) {
39 SkSafeUnref(reinterpret_cast<SkColorFilter*>(native_cf));
40}
41
42} // namespace
43
45 static const JNINativeMethod methods[] = {
46 {"nRelease" , "(J)V" , reinterpret_cast<void*>(ColorFilter_Release) },
47 };
48
49 const auto clazz = env->FindClass("org/skia/jetski/ColorFilter");
50 return clazz
51 ? env->RegisterNatives(clazz, methods, std::size(methods))
52 : JNI_ERR;
53}
54
56 static const JNINativeMethod methods[] = {
57 {"nMakeMatrix", "([F)J", reinterpret_cast<void*>(MakeMatrix)},
58 };
59
60 const auto clazz = env->FindClass("org/skia/jetski/MatrixColorFilter");
61 return clazz
62 ? env->RegisterNatives(clazz, methods, std::size(methods))
63 : JNI_ERR;
64}
65
67 static const JNINativeMethod methods[] = {
68 {"nMakeHSLAMatrix", "([F)J", reinterpret_cast<void*>(MakeHSLAMatrix)},
69 };
70
71 const auto clazz = env->FindClass("org/skia/jetski/HSLAMatrixColorFilter");
72 return clazz
73 ? env->RegisterNatives(clazz, methods, std::size(methods))
74 : JNI_ERR;
75}
76
78 static const JNINativeMethod methods[] = {
79 {"nMakeCompose", "(JJ)J", reinterpret_cast<void*>(MakeCompose)},
80 };
81
82 const auto clazz = env->FindClass("org/skia/jetski/ComposeColorFilter");
83 return clazz
84 ? env->RegisterNatives(clazz, methods, std::size(methods))
85 : JNI_ERR;
86}
int register_jetski_MatrixColorFilter(JNIEnv *env)
int register_jetski_HSLAMatrixColorFilter(JNIEnv *env)
int register_jetski_ColorFilter(JNIEnv *env)
int register_jetski_ComposeColorFilter(JNIEnv *env)
#define SkASSERT(cond)
Definition SkAssert.h:116
static sk_sp< SkColorFilter > MakeMatrix(const float array[20], SkMatrixColorFilter::Domain domain)
static void SkSafeUnref(T *obj)
Definition SkRefCnt.h:149
sk_sp< T > sk_ref_sp(T *obj)
Definition SkRefCnt.h:381
static sk_sp< SkColorFilter > Compose(const sk_sp< SkColorFilter > &outer, sk_sp< SkColorFilter > inner)
static sk_sp< SkColorFilter > Matrix(const SkColorMatrix &)
static sk_sp< SkColorFilter > HSLAMatrix(const SkColorMatrix &)
Definition __init__.py:1