diff options
author | Francis Kung <fkung@redhat.com> | 2006-10-03 19:47:58 +0000 |
---|---|---|
committer | Francis Kung <fkung@redhat.com> | 2006-10-03 19:47:58 +0000 |
commit | d0ef88c643b4afb829369e643e81ba8cfc0f4121 (patch) | |
tree | 4520ccf674dae8de42a9d0c7a424bb041983537a /native | |
parent | 437b2d1a67bdbfda53581d69c49b8eaf65b8f8a9 (diff) | |
download | classpath-d0ef88c643b4afb829369e643e81ba8cfc0f4121.tar.gz |
2006-10-03 Francis Kung <fkung@redhat.com>
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
(compCtx): New field for composite context.
(copy): Copy composite.
(dispose): Dispose of composite context.
(getNativeCM): New method.
(setComposite): Discard old composite context and set up new context.
(setRenderingHints): Update composite context.
* gnu/java/awt/peer/gtk/CairoSurface.java
(nativeColorModel): New field, renamed from nativeModel.
(nativeModel): Renamed field to nativeColorModel.
(CairoSurface(int, int)): Call new method to create sample model.
(createNativeSampleModel): New method.
(getBufferedImage): Updated variable name.
* gnu/java/awt/peer/gtk/VolatileImageGraphics.java
(buffer): New field.
(createBuffer): New method.
(draw): New method.
(drawComposite): New method.
(drawGlyphVector): New method.
(drawImage(Image, AffineTransform, Color, ImageObserver)): New method.
(drawImage(Image, int, int, ImageObserver)): Check composite.
(drawImage(Image, int, int, int, int, ImageObserver)): Check composite.
(fill): New method.
(getNativeCM): New method.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c
(Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels): Use
intermediary pixbuf to grab on-screen pixels.
Diffstat (limited to 'native')
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c index 33080e6fc..3fb5331a2 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c @@ -110,10 +110,12 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels /* jint *pixeldata, *jpixdata; */ jint *jpixdata; GdkPixmap *pixmap; + GdkPixbuf *pixbuf; jintArray jpixels; int width, height, depth, size; jclass cls; jfieldID field; + guchar *pixels; cls = (*env)->GetObjectClass (env, obj); field = (*env)->GetFieldID (env, cls, "width", "I"); @@ -131,11 +133,19 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels /* get depth in bytes */ depth = gdk_drawable_get_depth( pixmap ) >> 3; - size = width * height * 4; + size = width * height; jpixels = (*env)->NewIntArray ( env, size ); jpixdata = (*env)->GetIntArrayElements (env, jpixels, NULL); - /* memcpy (jpixdata, pixeldata, size * sizeof( jint )); */ - + + pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, TRUE, 8, width, height ); + gdk_pixbuf_get_from_drawable( pixbuf, pixmap, NULL, 0, 0, 0, 0, width, height ); + + if (pixbuf != NULL) + { + pixels = gdk_pixbuf_get_pixels(pixbuf); + memcpy (jpixdata, pixels, size * sizeof(jint)); + } + (*env)->ReleaseIntArrayElements (env, jpixels, jpixdata, 0); gdk_threads_leave(); |