35 |
obligated to do so. If you do not wish to do so, delete this |
obligated to do so. If you do not wish to do so, delete this |
36 |
exception statement from your version. */ |
exception statement from your version. */ |
37 |
|
|
38 |
|
#include "jcl.h" |
39 |
#include "gtkpeer.h" |
#include "gtkpeer.h" |
40 |
#include "gnu_java_awt_peer_gtk_GtkImage.h" |
#include "gnu_java_awt_peer_gtk_GtkImage.h" |
41 |
#include <gdk-pixbuf/gdk-pixbuf.h> |
#include <gdk-pixbuf/gdk-pixbuf.h> |
574 |
createRawData (JNIEnv * env, jobject obj, void *ptr) |
createRawData (JNIEnv * env, jobject obj, void *ptr) |
575 |
{ |
{ |
576 |
jclass cls; |
jclass cls; |
|
jmethodID method; |
|
577 |
jobject data; |
jobject data; |
578 |
jfieldID data_fid; |
jfieldID data_fid; |
579 |
|
|
580 |
cls = (*env)->GetObjectClass (env, obj); |
cls = (*env)->GetObjectClass (env, obj); |
581 |
data_fid = (*env)->GetFieldID (env, cls, "pixmap", |
data_fid = (*env)->GetFieldID (env, cls, "pixmap", |
582 |
"Lgnu/classpath/RawData;"); |
"Lgnu/classpath/Pointer;"); |
583 |
g_assert (data_fid != 0); |
g_assert (data_fid != 0); |
584 |
|
|
585 |
#if SIZEOF_VOID_P == 8 |
data = JCL_NewRawDataObject (env, ptr); |
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData64"); |
|
|
method = (*env)->GetMethodID (env, cls, "<init>", "(J)V"); |
|
|
data = (*env)->NewObject (env, cls, method, (jlong) ptr); |
|
|
#else |
|
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData32"); |
|
|
method = (*env)->GetMethodID (env, cls, "<init>", "(I)V"); |
|
|
data = (*env)->NewObject (env, cls, method, (jint) ptr); |
|
|
#endif |
|
586 |
|
|
587 |
(*env)->SetObjectField (env, obj, data_fid, data); |
(*env)->SetObjectField (env, obj, data_fid, data); |
588 |
} |
} |
591 |
getData (JNIEnv * env, jobject obj) |
getData (JNIEnv * env, jobject obj) |
592 |
{ |
{ |
593 |
jclass cls; |
jclass cls; |
|
jfieldID field; |
|
594 |
jfieldID data_fid; |
jfieldID data_fid; |
595 |
jobject data; |
jobject data; |
596 |
|
|
597 |
cls = (*env)->GetObjectClass (env, obj); |
cls = (*env)->GetObjectClass (env, obj); |
598 |
data_fid = (*env)->GetFieldID (env, cls, "pixmap", |
data_fid = (*env)->GetFieldID (env, cls, "pixmap", |
599 |
"Lgnu/classpath/RawData;"); |
"Lgnu/classpath/Pointer;"); |
600 |
g_assert (data_fid != 0); |
g_assert (data_fid != 0); |
601 |
data = (*env)->GetObjectField (env, obj, data_fid); |
data = (*env)->GetObjectField (env, obj, data_fid); |
602 |
|
|
603 |
#if SIZEOF_VOID_P == 8 |
return JCL_GetRawData (env, data); |
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData64"); |
|
|
field = (*env)->GetFieldID (env, cls, "data", "J"); |
|
|
return (void *) (*env)->GetLongField (env, data, field); |
|
|
#else |
|
|
cls = (*env)->FindClass (env, "gnu/classpath/RawData32"); |
|
|
field = (*env)->GetFieldID (env, cls, "data", "I"); |
|
|
return (void *) (*env)->GetIntField (env, data, field); |
|
|
#endif |
|
604 |
} |
} |