platform/cc/Data.cc (58 lines of code) (raw):
#include <jni.h>
#include "interop.hh"
#include "SkData.h"
static void deleteData(SkData* data) {
// std::cout << "Deleting [SkData " << data << "]" << std::endl;
data->unref();
}
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skija_Data__1nGetFinalizer(JNIEnv* env, jclass jclass) {
return static_cast<jlong>(reinterpret_cast<uintptr_t>(&deleteData));
}
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skija_Data__1nSize
(JNIEnv* env, jclass jclass, jlong ptr) {
SkData* instance = reinterpret_cast<SkData*>(static_cast<uintptr_t>(ptr));
return instance->size();
}
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skija_Data__1nToByteBuffer
(JNIEnv* env, jclass jclass, jlong ptr) {
SkData* instance = reinterpret_cast<SkData*>(static_cast<uintptr_t>(ptr));
return env->NewDirectByteBuffer(instance->writable_data(), instance->size());
}
extern "C" JNIEXPORT jbyteArray JNICALL Java_org_jetbrains_skija_Data__1nBytes
(JNIEnv* env, jclass jclass, jlong ptr, jlong offset, jlong length) {
SkData* instance = reinterpret_cast<SkData*>(static_cast<uintptr_t>(ptr));
jbyteArray bytesArray = env->NewByteArray((jsize) length);
const jbyte* bytes = reinterpret_cast<const jbyte*>(instance->bytes() + offset);
env->SetByteArrayRegion(bytesArray, 0, (jsize) length, bytes);
return bytesArray;
}
extern "C" JNIEXPORT jboolean JNICALL Java_org_jetbrains_skija_Data__1nEquals
(JNIEnv* env, jclass jclass, jlong ptr, jlong otherPtr) {
SkData* instance = reinterpret_cast<SkData*>(static_cast<uintptr_t>(ptr));
SkData* other = reinterpret_cast<SkData*>(static_cast<uintptr_t>(otherPtr));
return instance->equals(other);
}
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skija_Data__1nMakeFromBytes
(JNIEnv* env, jclass jclass, jbyteArray bytesArray, jlong offset, jlong length) {
jbyte* bytes = reinterpret_cast<jbyte*>(malloc(length));
if (!bytes) return 0;
env->GetByteArrayRegion(bytesArray, (jsize) offset, (jsize) length, bytes);
SkData* instance = SkData::MakeFromMalloc(bytes, length).release();
return reinterpret_cast<jlong>(instance);
}
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skija_Data__1nMakeFromFileName
(JNIEnv* env, jclass jclass, jstring pathStr) {
SkString path = skString(env, pathStr);
SkData* instance = SkData::MakeFromFileName(path.c_str()).release();
return reinterpret_cast<jlong>(instance);
}
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skija_Data__1nMakeSubset
(JNIEnv* env, jclass jclass, jlong ptr, jlong offset, jlong length) {
SkData* instance = reinterpret_cast<SkData*>(static_cast<uintptr_t>(ptr));
SkData* subset = SkData::MakeSubset(instance, offset, length).release();
return reinterpret_cast<jlong>(subset);
}
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skija_Data__1nMakeEmpty
(JNIEnv* env, jclass jclass) {
SkData* instance = SkData::MakeEmpty().release();
return reinterpret_cast<jlong>(instance);
}