[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commit-cp] classpath ChangeLog gnu/java/awt/peer/gtk/Compo...
From: |
Sven de Marothy |
Subject: |
[commit-cp] classpath ChangeLog gnu/java/awt/peer/gtk/Compo... |
Date: |
Tue, 06 Jun 2006 02:22:29 +0000 |
CVSROOT: /sources/classpath
Module name: classpath
Changes by: Sven de Marothy <smarothy> 06/06/06 02:22:29
Modified files:
. : ChangeLog
gnu/java/awt/peer/gtk: ComponentGraphics.java
GtkVolatileImage.java
VolatileImageGraphics.java
include : gnu_java_awt_peer_gtk_ComponentGraphics.h
gnu_java_awt_peer_gtk_GtkVolatileImage.h
native/jni/gtk-peer: gnu_java_awt_peer_gtk_ComponentGraphics.c
gnu_java_awt_peer_gtk_GtkVolatileImage.c
Log message:
2006-06-05 Sven de Marothy <address@hidden>
* include/gnu_java_awt_peer_gtk_ComponentGraphics.h
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
* gnu/java/awt/peer/gtk/ComponentGraphics.java
(initFromVolatile): New method.
* gnu/java/awt/peer/gtk/GtkVolatileImage.java
* gnu/java/awt/peer/gtk/VolatileImageGraphics.java
Reimplement.
* include/gnu_java_awt_peer_gtk_GtkVolatileImage.h
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c
(copyArea, drawVolatileImage): New methods.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7661&r2=1.7662
http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java?cvsroot=classpath&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java?cvsroot=classpath&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java?cvsroot=classpath&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h?cvsroot=classpath&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h?cvsroot=classpath&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c?cvsroot=classpath&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c?cvsroot=classpath&r1=1.2&r2=1.3
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/classpath/classpath/ChangeLog,v
retrieving revision 1.7661
retrieving revision 1.7662
diff -u -b -r1.7661 -r1.7662
--- ChangeLog 5 Jun 2006 20:36:21 -0000 1.7661
+++ ChangeLog 6 Jun 2006 02:22:27 -0000 1.7662
@@ -1,3 +1,16 @@
+2006-06-05 Sven de Marothy <address@hidden>
+
+ * include/gnu_java_awt_peer_gtk_ComponentGraphics.h
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
+ * gnu/java/awt/peer/gtk/ComponentGraphics.java
+ (initFromVolatile): New method.
+ * gnu/java/awt/peer/gtk/GtkVolatileImage.java
+ * gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+ Reimplement.
+ * include/gnu_java_awt_peer_gtk_GtkVolatileImage.h
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c
+ (copyArea, drawVolatileImage): New methods.
+
2006-06-05 Tania Bento <address@hidden>
* javax/swing/JFrame.java
Index: gnu/java/awt/peer/gtk/ComponentGraphics.java
===================================================================
RCS file:
/sources/classpath/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- gnu/java/awt/peer/gtk/ComponentGraphics.java 5 Jun 2006 03:39:14
-0000 1.9
+++ gnu/java/awt/peer/gtk/ComponentGraphics.java 6 Jun 2006 02:22:28
-0000 1.10
@@ -46,6 +46,7 @@
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Shape;
+import java.awt.Point;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
@@ -64,7 +65,11 @@
public class ComponentGraphics extends CairoGraphics2D
{
private GtkComponentPeer component;
- private long cairo_t;
+ protected long cairo_t;
+
+ ComponentGraphics()
+ {
+ }
private ComponentGraphics(GtkComponentPeer component)
{
@@ -94,6 +99,11 @@
private native long initState(GtkComponentPeer component);
/**
+ * Creates a cairo_t for a volatile image
+ */
+ protected native long initFromVolatile( long pixmapPtr, int width, int
height);
+
+ /**
* Grab lock
*/
private native void start_gdk_drawing();
@@ -194,8 +204,7 @@
{
if( img instanceof GtkVolatileImage )
{
- ((GtkVolatileImage)img).validate( null );
- drawVolatile( component, img, x, y-20 ,
+ drawVolatile( component, img, x, y - 20,
((GtkVolatileImage)img).width,
((GtkVolatileImage)img).height );
return true;
@@ -208,8 +217,7 @@
{
if( img instanceof GtkVolatileImage )
{
- ((GtkVolatileImage)img).validate( null );
- drawVolatile( component, img, x, y-20,
+ drawVolatile( component, img, x, y - 20,
width, height );
return true;
}
Index: gnu/java/awt/peer/gtk/GtkVolatileImage.java
===================================================================
RCS file:
/sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- gnu/java/awt/peer/gtk/GtkVolatileImage.java 4 Jun 2006 19:44:39 -0000
1.5
+++ gnu/java/awt/peer/gtk/GtkVolatileImage.java 6 Jun 2006 02:22:28 -0000
1.6
@@ -53,14 +53,7 @@
/**
* Don't touch, accessed from native code.
*/
- private long nativePointer;
-
- /**
- * Offscreen image we draw to.
- */
- CairoSurface offScreen;
-
- private boolean needsUpdate = false;
+ long nativePointer;
native long init(GtkComponentPeer component, int width, int height);
@@ -68,7 +61,9 @@
native int[] getPixels();
- native void update(GtkImage image);
+ native void copyArea( int x, int y, int w, int h, int dx, int dy );
+
+ native void drawVolatile( long ptr, int x, int y, int w, int h );
public GtkVolatileImage(GtkComponentPeer component,
int width, int height, ImageCapabilities caps)
@@ -77,7 +72,6 @@
this.height = height;
this.caps = caps;
nativePointer = init( component, width, height );
- offScreen = new CairoSurface( width, height );
}
public GtkVolatileImage(int width, int height, ImageCapabilities caps)
@@ -100,11 +94,6 @@
destroy();
}
- void invalidate()
- {
- needsUpdate = true;
- }
-
public BufferedImage getSnapshot()
{
CairoSurface cs = new CairoSurface( width, height );
@@ -119,24 +108,17 @@
public Graphics2D createGraphics()
{
- invalidate();
- return offScreen.getGraphics();
+ return new VolatileImageGraphics( this );
}
public int validate(GraphicsConfiguration gc)
{
- if( needsUpdate )
- {
- update( offScreen.getGtkImage() );
- needsUpdate = false;
- return VolatileImage.IMAGE_RESTORED;
- }
return VolatileImage.IMAGE_OK;
}
public boolean contentsLost()
{
- return needsUpdate;
+ return false;
}
public ImageCapabilities getCapabilities()
Index: gnu/java/awt/peer/gtk/VolatileImageGraphics.java
===================================================================
RCS file:
/sources/classpath/classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- gnu/java/awt/peer/gtk/VolatileImageGraphics.java 3 Jun 2006 22:41:41
-0000 1.1
+++ gnu/java/awt/peer/gtk/VolatileImageGraphics.java 6 Jun 2006 02:22:28
-0000 1.2
@@ -58,72 +58,65 @@
import java.awt.image.ImageObserver;
import java.util.WeakHashMap;
-public class VolatileImageGraphics extends CairoSurfaceGraphics
+public class VolatileImageGraphics extends ComponentGraphics
{
private GtkVolatileImage owner;
- public VolatileImageGraphics(GtkVolatileImage owner)
+ public VolatileImageGraphics(GtkVolatileImage img)
{
- super( owner.offScreen );
- this.owner = owner;
+ this.owner = img;
+ cairo_t = initFromVolatile( owner.nativePointer, img.width, img.height );
+ setup( cairo_t );
+ setClip( new Rectangle( 0, 0, img.width, img.height) );
}
- VolatileImageGraphics(VolatileImageGraphics copyFrom)
+ private VolatileImageGraphics(VolatileImageGraphics copy)
{
- super( copyFrom.owner.offScreen );
- owner = copyFrom.owner;
- }
-
- /**
- * Abstract methods.
- */
- public Graphics create()
- {
- return new VolatileImageGraphics( this );
+ this.owner = copy.owner;
+ initFromVolatile( owner.nativePointer, owner.width, owner.height );
+ setClip( new Rectangle( 0, 0, owner.width, owner.height) );
+ copy( copy, cairo_t );
}
public void copyAreaImpl(int x, int y, int width, int height, int dx, int dy)
{
- surface.copyAreaNative(x, y, width, height, dx, dy, surface.width);
- owner.invalidate();
+ owner.copyArea(x, y, width, height, dx, dy);
}
- /**
- * Overloaded methods that do actual drawing need to enter the gdk threads
- * and also do certain things before and after.
- */
- public void draw(Shape s)
+ public GraphicsConfiguration getDeviceConfiguration()
{
- super.draw(s);
- Rectangle r = s.getBounds();
- owner.invalidate();
+ return null;
}
- public void fill(Shape s)
+ public Graphics create()
{
- super.fill(s);
- Rectangle r = s.getBounds();
- owner.invalidate();
+ return new VolatileImageGraphics( this );
}
- public void drawRenderedImage(RenderedImage image, AffineTransform xform)
- {
- super.drawRenderedImage(image, xform);
- owner.invalidate();
- }
- protected boolean drawImage(Image img, AffineTransform xform,
- Color bgcolor, ImageObserver obs)
+ public boolean drawImage(Image img, int x, int y, ImageObserver observer)
+ {
+ if( img instanceof GtkVolatileImage )
{
- boolean rv = super.drawImage(img, xform, bgcolor, obs);
- owner.invalidate();
- return rv;
+ owner.drawVolatile( ((GtkVolatileImage)img).nativePointer,
+ x, y,
+ ((GtkVolatileImage)img).width,
+ ((GtkVolatileImage)img).height );
+ return true;
+ }
+ return super.drawImage( img, x, y, observer );
}
- public void drawGlyphVector(GlyphVector gv, float x, float y)
+ public boolean drawImage(Image img, int x, int y, int width, int height,
+ ImageObserver observer)
+ {
+ if( img instanceof GtkVolatileImage )
{
- super.drawGlyphVector(gv, x, y);
- owner.invalidate();
+ owner.drawVolatile( ((GtkVolatileImage)img).nativePointer,
+ x, y, width, height );
+ return true;
+ }
+ return super.drawImage( img, x, y, width, height, observer );
}
}
Index: include/gnu_java_awt_peer_gtk_ComponentGraphics.h
===================================================================
RCS file:
/sources/classpath/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- include/gnu_java_awt_peer_gtk_ComponentGraphics.h 3 Jun 2006 22:41:41
-0000 1.3
+++ include/gnu_java_awt_peer_gtk_ComponentGraphics.h 6 Jun 2006 02:22:28
-0000 1.4
@@ -11,6 +11,7 @@
#endif
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState
(JNIEnv *env, jobject, jobject);
+JNIEXPORT jlong JNICALL
Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile(JNIEnv *env,
jobject, jlong, jint, jint);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_ComponentGraphics_start_1gdk_1drawing (JNIEnv *env,
jobject);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_ComponentGraphics_end_1gdk_1drawing (JNIEnv *env,
jobject);
JNIEXPORT jboolean JNICALL
Java_gnu_java_awt_peer_gtk_ComponentGraphics_hasXRender (JNIEnv *env, jclass);
Index: include/gnu_java_awt_peer_gtk_GtkVolatileImage.h
===================================================================
RCS file:
/sources/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- include/gnu_java_awt_peer_gtk_GtkVolatileImage.h 3 Jun 2006 22:41:41
-0000 1.1
+++ include/gnu_java_awt_peer_gtk_GtkVolatileImage.h 6 Jun 2006 02:22:28
-0000 1.2
@@ -13,7 +13,8 @@
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_init
(JNIEnv *env, jobject, jobject, jint, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy
(JNIEnv *env, jobject);
JNIEXPORT jintArray JNICALL
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels (JNIEnv *env, jobject);
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_update
(JNIEnv *env, jobject, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea
(JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint);
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile (JNIEnv *env, jobject,
jlong, jint, jint, jint, jint);
#ifdef __cplusplus
}
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
===================================================================
RCS file:
/sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 4 Jun
2006 19:44:39 -0000 1.12
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 6 Jun
2006 02:22:28 -0000 1.13
@@ -163,6 +163,43 @@
return PTR_TO_JLONG(cr);
}
+JNIEXPORT jlong JNICALL
+Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile
+ (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
+ jlong ptr, jint width, jint height)
+{
+ Drawable draw;
+ Display * dpy;
+ Visual * vis;
+ GdkDrawable *drawable;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ gdk_threads_enter();
+
+ drawable = JLONG_TO_PTR(GdkDrawable, ptr);
+ g_assert (drawable != NULL);
+
+ draw = gdk_x11_drawable_get_xid(drawable);
+ g_assert (draw != (XID) 0);
+
+ dpy = gdk_x11_drawable_get_xdisplay(drawable);
+ g_assert (dpy != NULL);
+
+ vis = gdk_x11_visual_get_xvisual(gdk_drawable_get_visual(drawable));
+ g_assert (vis != NULL);
+
+ surface = cairo_xlib_surface_create (dpy, draw, vis, width, height);
+ g_assert (surface != NULL);
+
+ cr = cairo_create (surface);
+ g_assert(cr != NULL);
+
+ gdk_threads_leave();
+
+ return PTR_TO_JLONG(cr);
+}
+
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_ComponentGraphics_start_1gdk_1drawing
(JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)))
@@ -220,7 +257,6 @@
GdkGC *gc;
gdk_threads_enter();
-
ptr = NSA_GET_PTR (env, peer);
g_assert (ptr != NULL);
@@ -229,14 +265,16 @@
pixmap = cp_gtk_get_pixmap( env, img );
- gc = gdk_gc_new(GDK_DRAWABLE(widget->window));
- gdk_draw_drawable(GDK_DRAWABLE(widget->window),
+ gc = gdk_gc_new(widget->window);
+ gdk_draw_drawable(widget->window,
gc,
pixmap,
0, 0,
x, y,
w, h);
+ g_object_unref( gc );
+
schedule_flush ();
gdk_threads_leave();
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c
===================================================================
RCS file:
/sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c 4 Jun
2006 17:52:05 -0000 1.2
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c 6 Jun
2006 02:22:29 -0000 1.3
@@ -146,28 +146,54 @@
}
/**
- * Update the pixels.
+ * Copy area
*/
JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkVolatileImage_update
-(JNIEnv *env, jobject obj, jobject gtkimage)
+Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea
+(JNIEnv *env, jobject obj, jint x, jint y, jint w, jint h, jint dx, jint dy)
{
- GdkPixmap *pixmap = getNativeObject(env, obj);
GdkPixbuf *pixbuf;
+ GdkPixmap* pixmap = getNativeObject(env, obj);
- gdk_threads_enter();
- g_assert( pixmap != NULL );
+ g_assert (pixmap != NULL);
- pixbuf = cp_gtk_image_get_pixbuf (env, gtkimage);
- g_assert( pixbuf != NULL );
+ gdk_threads_enter();
+ pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, TRUE, 8, w, h );
+ gdk_pixbuf_get_from_drawable( pixbuf, pixmap, NULL, x, y, 0, 0, w, h );
gdk_draw_pixbuf (pixmap, NULL, pixbuf,
- 0, 0, 0, 0, /* src and dest x, y */
- -1, -1, /* full width, height */
+ 0, 0, x + dx, y + dy,
+ w, h,
GDK_RGB_DITHER_NORMAL, 0, 0);
gdk_threads_leave();
}
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile
+(JNIEnv *env, jobject obj, jlong ptr, jint x, jint y, jint w, jint h)
+{
+ GdkPixmap *dst, *src;
+ GdkGC *gc;
+
+ src = JLONG_TO_PTR(GdkPixmap, ptr);
+ dst = getNativeObject(env, obj);
+ g_assert (src != NULL);
+ g_assert (dst != NULL);
+
+ gdk_threads_enter();
+
+ gc = gdk_gc_new( dst );
+ gdk_draw_drawable(dst,
+ gc,
+ src,
+ 0, 0,
+ x, y,
+ w, h);
+ g_object_unref( gc );
+
+ gdk_threads_leave();
+}
+
GdkPixmap *cp_gtk_get_pixmap( JNIEnv *env, jobject obj)
{
return (GdkPixmap *)getNativeObject(env, obj);