174 lines
5.8 KiB
C
174 lines
5.8 KiB
C
/**
|
|
* libcaca Java bindings for libcaca
|
|
* Copyright (c) 2009 Adrien Grand <jpountz@dinauz.org>
|
|
*
|
|
* This library is free software. It comes without any warranty, to
|
|
* the extent permitted by applicable law. You can redistribute it
|
|
* and/or modify it under the terms of the Do What the Fuck You Want
|
|
* to Public License, Version 2, as published by Sam Hocevar. See
|
|
* http://www.wtfpl.net/ for more details.
|
|
*/
|
|
|
|
#include "org_zoy_caca_Dither.h"
|
|
#include "caca_java_common.h"
|
|
|
|
#include "caca.h"
|
|
|
|
JNIEXPORT jlong JNICALL
|
|
Java_org_zoy_caca_Dither_createDither(JNIEnv *env, jclass cls, jint bpp, jint w, jint h,
|
|
jint pitch, jint rmask, jint gmask, jint bmask, jint amask)
|
|
{
|
|
caca_dither_t *dither = caca_create_dither(bpp, w, h, pitch, rmask, gmask, bmask, amask);
|
|
|
|
if(dither == NULL) {
|
|
THROW_EX("Cannot create a new Dither");
|
|
return 0;
|
|
}
|
|
|
|
return (jlong)dither;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherPalette(JNIEnv *env, jclass vls, jlong ptr, jintArray red,
|
|
jintArray green, jintArray blue, jintArray alpha)
|
|
{
|
|
jint *relems, *gelems, *belems, *aelems;
|
|
|
|
relems = (*env)->GetIntArrayElements(env, red, 0);
|
|
gelems = (*env)->GetIntArrayElements(env, green, 0);
|
|
belems = (*env)->GetIntArrayElements(env, blue, 0);
|
|
aelems = (*env)->GetIntArrayElements(env, alpha, 0);
|
|
caca_set_dither_palette((caca_dither_t *)ptr, relems, gelems, belems, aelems);
|
|
(*env)->ReleaseIntArrayElements(env, red, relems, 0);
|
|
(*env)->ReleaseIntArrayElements(env, green, gelems, 0);
|
|
(*env)->ReleaseIntArrayElements(env, blue, belems, 0);
|
|
(*env)->ReleaseIntArrayElements(env, alpha, aelems, 0);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherBrightness(JNIEnv *env, jclass cls, jlong ptr, jfloat v)
|
|
{
|
|
caca_set_dither_brightness((caca_dither_t *)ptr, v);
|
|
}
|
|
|
|
JNIEXPORT jfloat JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherBrightness(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return caca_get_dither_brightness((caca_dither_t *)ptr);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherGamma(JNIEnv *env, jclass cls, jlong ptr, jfloat v)
|
|
{
|
|
caca_set_dither_gamma((caca_dither_t *)ptr, v);
|
|
}
|
|
|
|
JNIEXPORT jfloat JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherGamma(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return caca_get_dither_gamma((caca_dither_t *)ptr);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherContrast(JNIEnv *env, jclass cls, jlong ptr, jfloat v)
|
|
{
|
|
caca_set_dither_contrast((caca_dither_t *)ptr, v);
|
|
}
|
|
|
|
JNIEXPORT jfloat JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherContrast(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return caca_get_dither_contrast((caca_dither_t *)ptr);
|
|
}
|
|
|
|
JNIEXPORT jobjectArray JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherAntiAliasingList(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
const char *const *antialias_list = caca_get_dither_antialias_list((caca_dither_t *)ptr);
|
|
return caca_java_to_string_array(env, antialias_list);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherAntiAliasing(JNIEnv *env, jclass cls, jlong ptr, jstring aa)
|
|
{
|
|
const char *aa_chars = (*env)->GetStringUTFChars(env, aa, 0);
|
|
caca_set_dither_antialias((caca_dither_t *)ptr, aa_chars);
|
|
(*env)->ReleaseStringUTFChars(env, aa, aa_chars);
|
|
}
|
|
|
|
JNIEXPORT jstring JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherAntiAliasing(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return (*env)->NewStringUTF(env, caca_get_dither_antialias((caca_dither_t *)ptr));
|
|
}
|
|
|
|
JNIEXPORT jobjectArray
|
|
JNICALL Java_org_zoy_caca_Dither_getDitherColorList(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
const char *const *color_list = caca_get_dither_color_list((caca_dither_t *)ptr);
|
|
return caca_java_to_string_array(env, color_list);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherColor(JNIEnv *env, jclass cls, jlong ptr, jstring color)
|
|
{
|
|
const char *color_chars = (*env)->GetStringUTFChars(env, color, 0);
|
|
caca_set_dither_color((caca_dither_t *)ptr, color_chars);
|
|
(*env)->ReleaseStringUTFChars(env, color, color_chars);
|
|
}
|
|
|
|
JNIEXPORT jstring JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherColor(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return (*env)->NewStringUTF(env, caca_get_dither_color((caca_dither_t *)ptr));
|
|
}
|
|
|
|
JNIEXPORT jobjectArray JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherCharsetList(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
const char *const *color_list = caca_get_dither_color_list((caca_dither_t *)ptr);
|
|
return caca_java_to_string_array(env, color_list);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherCharset(JNIEnv *env, jclass cls, jlong ptr, jstring charset)
|
|
{
|
|
const char *charset_chars = (*env)->GetStringUTFChars(env, charset, 0);
|
|
caca_set_dither_charset((caca_dither_t *)ptr, charset_chars);
|
|
(*env)->ReleaseStringUTFChars(env, charset, charset_chars);
|
|
}
|
|
|
|
JNIEXPORT jstring JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherCharset(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return (*env)->NewStringUTF(env, caca_get_dither_charset((caca_dither_t *)ptr));
|
|
}
|
|
|
|
JNIEXPORT jobjectArray JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherAlgorithmList(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
const char *const *algorithm_list = caca_get_dither_algorithm_list((caca_dither_t *)ptr);
|
|
return caca_java_to_string_array(env, algorithm_list);
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_setDitherAlgorithm(JNIEnv *env, jclass cls, jlong ptr, jstring algorithm)
|
|
{
|
|
const char *algorithm_chars = (*env)->GetStringUTFChars(env, algorithm, 0);
|
|
caca_set_dither_algorithm((caca_dither_t *)ptr, algorithm_chars);
|
|
(*env)->ReleaseStringUTFChars(env, algorithm, algorithm_chars);
|
|
}
|
|
|
|
JNIEXPORT jstring JNICALL
|
|
Java_org_zoy_caca_Dither_getDitherAlgorithm(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
return (*env)->NewStringUTF(env, caca_get_dither_algorithm((caca_dither_t *)ptr));
|
|
}
|
|
|
|
JNIEXPORT void JNICALL
|
|
Java_org_zoy_caca_Dither_freeDither(JNIEnv *env, jclass cls, jlong ptr)
|
|
{
|
|
caca_free_dither((caca_dither_t *)ptr);
|
|
}
|
|
|