hackthelobby/libcaca/java/org_zoy_caca_Dither.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);
}