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; }
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; } }