99 |
JNIEnv *env; |
JNIEnv *env; |
100 |
union env_union e; |
union env_union e; |
101 |
jint stride_bytes, stride_pixels, n_channels, n_pixels; |
jint stride_bytes, stride_pixels, n_channels, n_pixels; |
|
int i, px; |
|
102 |
jintArray jpixels; |
jintArray jpixels; |
103 |
jint *java_pixels; |
jint *java_pixels; |
104 |
guchar *gdk_pixels; |
guchar *gdk_pixels; |
105 |
|
|
106 |
GdkPixbuf *pixbuf_no_alpha = NULL; |
GdkPixbuf *pixbuf_no_alpha = NULL; |
107 |
GdkPixbuf *pixbuf = NULL; |
GdkPixbuf *pixbuf = NULL; |
108 |
|
|
109 |
|
#ifndef WORDS_BIGENDIAN |
110 |
|
int i; |
111 |
|
#endif |
112 |
|
|
113 |
pixbuf_no_alpha = gdk_pixbuf_loader_get_pixbuf (loader); |
pixbuf_no_alpha = gdk_pixbuf_loader_get_pixbuf (loader); |
114 |
if (pixbuf_no_alpha == NULL) |
if (pixbuf_no_alpha == NULL) |
115 |
return; |
return; |
132 |
gdk_pixels + (y * stride_bytes), |
gdk_pixels + (y * stride_bytes), |
133 |
(height * stride_bytes)); |
(height * stride_bytes)); |
134 |
|
|
135 |
|
#ifndef WORDS_BIGENDIAN |
136 |
|
/* convert pixels from 0xBBGGRRAA to 0xAARRGGBB */ |
137 |
for (i = 0; i < n_pixels; ++i) |
for (i = 0; i < n_pixels; ++i) |
138 |
{ |
{ |
139 |
px = java_pixels[i]; |
java_pixels[i] = SWAPU32 ((unsigned)java_pixels[i]); |
|
|
|
|
/* move alpha around (GdkPixbufLoader results are AGBR not GBRA, in |
|
|
the lsb sense) */ |
|
|
/* px = ((px >> 24) & 0xff) | ((px << 8) & 0xffffff00); */ |
|
|
|
|
|
/* it appears to require a full byte swap, now, not just a shift to |
|
|
the A channel. why did this change? don't know. */ |
|
|
px = ((px >> 8) & 0x00ff00ff) | ((px << 8) & 0xff00ff00); |
|
|
px = ((px >> 16) & 0x0000ffff) | ((px << 16) & 0xffff0000); |
|
|
|
|
|
java_pixels[i] = px; |
|
140 |
} |
} |
141 |
|
#endif |
142 |
|
|
143 |
g_object_unref (pixbuf); |
g_object_unref (pixbuf); |
144 |
|
|
171 |
|
|
172 |
|
|
173 |
|
|
174 |
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initState |
JNIEXPORT void JNICALL |
175 |
|
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initState |
176 |
(JNIEnv *env, jobject obj) |
(JNIEnv *env, jobject obj) |
177 |
{ |
{ |
178 |
GdkPixbufLoader *loader = NULL; |
GdkPixbufLoader *loader = NULL; |
193 |
NSA_SET_PB_PTR (env, obj, loader); |
NSA_SET_PB_PTR (env, obj, loader); |
194 |
} |
} |
195 |
|
|
196 |
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState |
JNIEXPORT void JNICALL |
197 |
|
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState |
198 |
(JNIEnv *env, jclass clazz) |
(JNIEnv *env, jclass clazz) |
199 |
{ |
{ |
200 |
(*env)->GetJavaVM(env, &vm); |
(*env)->GetJavaVM(env, &vm); |
210 |
} |
} |
211 |
|
|
212 |
|
|
213 |
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_finish |
JNIEXPORT void JNICALL |
214 |
|
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_finish |
215 |
(JNIEnv *env, jobject obj) |
(JNIEnv *env, jobject obj) |
216 |
{ |
{ |
217 |
GdkPixbufLoader *loader = NULL; |
GdkPixbufLoader *loader = NULL; |
227 |
} |
} |
228 |
|
|
229 |
|
|
230 |
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpBytes |
JNIEXPORT void JNICALL |
231 |
|
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpBytes |
232 |
(JNIEnv *env, jobject obj, jbyteArray jarr, jint len) |
(JNIEnv *env, jobject obj, jbyteArray jarr, jint len) |
233 |
{ |
{ |
234 |
GdkPixbufLoader *loader = NULL; |
GdkPixbufLoader *loader = NULL; |