CVSROOT: /sources/classpath Module name: classpath Changes by: Sven de Marothy <smarothy> 06/06/03 22:47:03
Modified files: . : ChangeLog gnu/java/awt/peer/gtk: CairoGraphics2D.java include : gnu_java_awt_peer_gtk_CairoGraphics2D.h native/jni/gtk-peer: gnu_java_awt_peer_gtk_CairoGraphics2D.c Log message: 2006-06-02 Sven de Marothy <[EMAIL PROTECTED]> * gnu/java/awt/peer/gtk/CairoGraphics2D.java (cairoPreserveClip, cairoResetClip): New methods. (setClip, clip): Reimplement. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h (cairoPreserveClip, cairoResetClip): New methods. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7641&r2=1.7642 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java?cvsroot=classpath&r1=1.13&r2=1.14 http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.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_CairoGraphics2D.c?cvsroot=classpath&r1=1.5&r2=1.6 Patches: Index: ChangeLog =================================================================== RCS file: /sources/classpath/classpath/ChangeLog,v retrieving revision 1.7641 retrieving revision 1.7642 diff -u -b -r1.7641 -r1.7642 --- ChangeLog 3 Jun 2006 22:41:40 -0000 1.7641 +++ ChangeLog 3 Jun 2006 22:47:03 -0000 1.7642 @@ -1,5 +1,14 @@ 2006-06-02 Sven de Marothy <[EMAIL PROTECTED]> + * gnu/java/awt/peer/gtk/CairoGraphics2D.java + (cairoPreserveClip, cairoResetClip): New methods. + (setClip, clip): Reimplement. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c + * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h + (cairoPreserveClip, cairoResetClip): New methods. + +2006-06-02 Sven de Marothy <[EMAIL PROTECTED]> + * gnu/java/awt/peer/gtk/VolatileImageGraphics.java * include/gnu_java_awt_peer_gtk_GtkVolatileImage.h * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c Index: gnu/java/awt/peer/gtk/CairoGraphics2D.java =================================================================== RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -b -r1.13 -r1.14 --- gnu/java/awt/peer/gtk/CairoGraphics2D.java 2 Jun 2006 22:57:31 -0000 1.13 +++ gnu/java/awt/peer/gtk/CairoGraphics2D.java 3 Jun 2006 22:47:03 -0000 1.14 @@ -411,6 +411,16 @@ private native void cairoClip(); /** + * Save clip + */ + private native void cairoPreserveClip(); + + /** + * Save clip + */ + private native void cairoResetClip(); + + /** * Set interpolation types */ private native void cairoSurfaceSetFilter(int filter); @@ -518,32 +528,10 @@ public void clip(Shape s) { - // update it - if (clip == null || s == null) - clip = s; - else if (s instanceof Rectangle2D && clip instanceof Rectangle2D) - { - Rectangle2D r = (Rectangle2D) s; - Rectangle2D curr = (Rectangle2D) clip; - clip = curr.createIntersection(r); - } - else - throw new UnsupportedOperationException(); - - // draw it - if (clip != null) - { - cairoNewPath(); - if (clip instanceof Rectangle2D) - { - Rectangle2D r = (Rectangle2D) clip; - cairoRectangle(r.getX(), r.getY(), r.getWidth(), r.getHeight()); - } - else - walkPath(clip.getPathIterator(null), false); + if( s == null ) + setClip( originalClip ); - cairoClip(); - } + setClip(s); } public Paint getPaint() @@ -706,17 +694,18 @@ public void setClip(int x, int y, int width, int height) { - setClip(new Rectangle2D.Double((double) x, (double) y, (double) width, - (double) height)); + if( width < 0 || height < 0 ) + return; + + setClip(new Rectangle2D.Double(x, y, width, height)); } public void setClip(Shape s) { - clip = s; - - // The first time the clip is set, save it as the original clip to reset to on - // s == null. We can rely on this being non-null because the constructor in - // subclasses is expected to set the initial clip properly. + // The first time the clip is set, save it as the original clip + // to reset to on s == null. We can rely on this being non-null + // because the constructor in subclasses is expected to set the + // initial clip properly. if( firstClip ) { originalClip = s; @@ -725,6 +714,10 @@ if (s == null) clip = originalClip; + else + clip = s; + + cairoResetClip(); cairoNewPath(); if (clip instanceof Rectangle2D) @@ -735,7 +728,6 @@ else walkPath(clip.getPathIterator(null), false); - // cairoClosePath (); cairoClip(); } Index: include/gnu_java_awt_peer_gtk_CairoGraphics2D.h =================================================================== RCS file: /sources/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 29 May 2006 16:14:59 -0000 1.1 +++ include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 3 Jun 2006 22:47:03 -0000 1.2 @@ -34,6 +34,8 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip (JNIEnv *env, jobject); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env, jobject); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, jobject, jint); #ifdef __cplusplus Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c =================================================================== RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -b -r1.5 -r1.6 --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c 31 May 2006 23:25:13 -0000 1.5 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c 3 Jun 2006 22:47:03 -0000 1.6 @@ -590,11 +590,30 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip (JNIEnv *env, jobject obj) { - struct cairographics2d *gr = getPointer (env, obj); + struct cairographics2d *gr = getPointer( env, obj ); + g_assert( gr != NULL ); + + cairo_clip( gr->cr ); +} + +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip + (JNIEnv *env, jobject obj) +{ + struct cairographics2d *gr = getPointer( env, obj ); + g_assert (gr != NULL); + + cairo_reset_clip( gr->cr ); +} + +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip +(JNIEnv *env, jobject obj) +{ + struct cairographics2d *gr = getPointer( env, obj ); g_assert (gr != NULL); - cairo_reset_clip (gr->cr); - cairo_clip (gr->cr); + cairo_clip_preserve( gr->cr ); } JNIEXPORT void JNICALL