JNIEXPORT jlong JNICALL
Java_org_freedesktop_cairo_CairoPatternOverride_cairo_1pattern_1get_1surface
(
	JNIEnv* env,
	jclass cls,
	jlong _self
)
{
	cairo_status_t result;
	cairo_pattern_t* self;
	cairo_surface_t* surface;

	// convert parameter self
	self = (cairo_pattern_t*) _self;

	// call function
	result = cairo_pattern_get_surface(self, &surface);

	// cleanup parameter self

	/*
	 * Check return value
	 */
	if (result != CAIRO_STATUS_SUCCESS) {
		bindings_java_throwByName(env, "org/freedesktop/cairo/FatalError", "Not a SurfacePatten!");
		return 0L;
	}

	return (jlong) surface;
}
Esempio n. 2
0
JNIEXPORT void JNICALL
Java_org_freedesktop_cairo_CairoSurfaceOverride_cairo_1surface_1set_1mime_1data
(
	JNIEnv* env,
	jclass cls,
	jlong _self,
	jstring _mimeType,
	jbyteArray _data
)
{
	cairo_status_t result;
	cairo_surface_t* self;
	const char* mimeType;
	unsigned char* data;
	long length;
	ImageCleanup* cleanup;

	// convert parameter self
	self = (cairo_surface_t*) _self;

	// convert parameter mimeType
	mimeType = (const char*) bindings_java_getString(env, _mimeType);
	if (mimeType == NULL) {
		return; // Java Exception already thrown
	}

	// convert parameter data
	// set up the data and length parameters.
	length = (*env)->GetArrayLength(env, _data);
	data = (unsigned char*) (*env)->GetByteArrayElements(env, _data, NULL);
	if (data == NULL) {
		return; // Java Exception already thrown
	}

	/*
	 * Setup transfer object
	 */

	cleanup = g_malloc(sizeof(ImageCleanup));
	cleanup->array = (jbyteArray) (*env)->NewGlobalRef(env, _data);
	cleanup->data = (jbyte*) data;

	// call function
	result = cairo_surface_set_mime_data(self, mimeType, data, length, release_image_data, cleanup);

	// cleanup parameter self

	// cleanup parameter mimeType
	bindings_java_releaseString(mimeType);

	// cleanup parameter data
	// done in callback

	/*
	 * Check return value
	 */
	if (result != CAIRO_STATUS_SUCCESS) {
		bindings_java_throwByName(env, "org/freedesktop/cairo/FatalError", "Out of memory");
		return;
	}
}