classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] Re: Missing GdkClasspathFontPeer files in classpath 0.10


From: Mark Wielaard
Subject: [cp-patches] Re: Missing GdkClasspathFontPeer files in classpath 0.10
Date: Sat, 14 Aug 2004 19:19:38 +0200

Hi,
(moved to classpath-patches)

On Tue, 2004-08-10 at 01:11, graydon hoare wrote:
> On Tue, 10 Aug 2004 00:25:53 +0200, Mark Wielaard <address@hidden> wrote:
> > Graydon, how ready is this code and how would people test it out?
> 
> it works, more or less. it's slower than gdk, but then, it's doing a lot
> more (and nobody's profiled or optimized it). also some of the font stuff
> is more fragile, and some of the fancier stuff (custom compositing operators)
> just fail outright.
> 
> to test it out, you have to get it built (and get the configury finding the
> appropriate cflags, etc. as in libgcj), and then there's a system property you
> set to switch between GdkGraphics and GdkGraphics2D (which uses cairo):
> 
>   -Dgnu.java.awt.peer.gtk.Graphics=Graphics     <- uses GDK (the default)
>   -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D   <- uses cairo

OK. The following patch adds all the configuration and build
configuration for this. This will also be needed to be able to do
something useful with the java.awt.geom stuff that Sven is hacking on. 

2004-08-14  Mark Wielaard  <address@hidden>

    * configure.ac: Add --enable-gtk-cairo checking (cairo, pangoft2).
    * include/Makefile.am: Add rules for
    gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h,
    gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h,
    gnu_java_awt_peer_gtk_GdkGlyphVector.h and
    gnu_java_awt_peer_gtk_GdkGraphics2D.h.
    * include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h: New generated file.
    * include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h: Idem.
    * include/gnu_java_awt_peer_gtk_GdkGlyphVector.h: Idem.
    * include/gnu_java_awt_peer_gtk_GdkGraphics.h: Regenerated.
    * include/gnu_java_awt_peer_gtk_GdkGraphics2D.h: New generated file.
    * include/gnu_java_awt_peer_gtk_GtkFramePeer.h: Regenerated.
    * native/jni/gtk-peer/Makefile.am: Add gtk_cairo_c_source_files when
    GTK_CAIRO is set.
    * native/jni/gtk-peer/
    gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c: Declare variables
    at top of functions/block.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c: Likewise.

Committed.

You will have to explicitly enable it with --enable-gtk-cairo
And then when running your program you will have to explicitly set
-Dgnu.java.awt.peer.gtk.Graphics=Graphics2D
If you do both then your Component.paint() method will get Graphics2D
objects and the fun can start!

It is still a bit fragile though. Our swing demo just crashes and burns:

$ /usr/local/jamvm/bin/jamvm -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D
-classpath /usr/local/classpath/share/classpath/examples/examples.zip
gnu.classpath.examples.swing.Demo

** ERROR **: file /home/mark/sources/pango/pango/shape.c: line 75
(pango_shape): assertion failed: (glyphs->num_glyphs > 0)
aborting...

And the RandomTest from our awt demo gives:

$ /usr/local/jamvm/bin/jamvm -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D
-classpath /usr/local/classpath/share/classpath/examples/examples.zip
gnu.classpath.examples.awt.Demo
java.lang.UnsupportedOperationException
   at gnu.java.awt.peer.gtk.GdkGraphics2D.setComposite (GdkGraphics2D.java:1273)
   at gnu.java.awt.peer.gtk.GdkGraphics2D.setXORMode (GdkGraphics2D.java:769)
   at gnu.classpath.examples.awt.Demo$TestWindow$2.paint (Demo.java:653)

So it is really crying for some loving and debugging.

Cheers,

Mark
Index: configure.ac
===================================================================
RCS file: /cvsroot/classpath/classpath/configure.ac,v
retrieving revision 1.43
diff -u -r1.43 configure.ac
--- configure.ac        1 Aug 2004 21:31:11 -0000       1.43
+++ configure.ac        14 Aug 2004 17:18:17 -0000
@@ -68,9 +68,23 @@
               [COMPILE_GTK_PEER=yes])
 AM_CONDITIONAL(CREATE_GTK_PEER_LIBRARIES, test "x${COMPILE_GTK_PEER}" = xyes)
 
+dnl -----------------------------------------------------------
 dnl GTK native peer error checking 
+dnl -----------------------------------------------------------
 AC_ARG_ENABLE([gtk-peers],,AC_MSG_ERROR([No --enable-gtk-peers (or 
--disable-gtk-peers) option; you want --enable-gtk-peer]))
 
+dnl ------------------------------------------------------------
+dnl determine whether to enable the cairo GTK Graphics2D backend
+dnl ------------------------------------------------------------
+AC_ARG_ENABLE([gtk-cairo],
+              [AS_HELP_STRING(--enable-gtk-cairo,build the cairo Graphics2D 
implementation on GTK [default=no])],
+              [case "${enableval}" in
+                yes) GTK_CAIRO=yes ;;
+                no) GTK_CAIRO=no ;;
+                *) GTK_CAIRO=yes ;;
+              esac],
+              [GTK_CAIRO=no])
+AM_CONDITIONAL(GTK_CAIRO, test "x${enable_gtk_cairo}" = xyes)
 
 dnl -----------------------------------------------------------
 dnl Regenerate headers at build time (disabled by default)
@@ -146,6 +160,15 @@
      AC_SUBST(GTK_LIBS)
   fi
 
+  if test "x${enable_gtk_cairo}" = xyes
+  then
+    PKG_CHECK_MODULES(CAIRO, cairo)
+    PKG_CHECK_MODULES(PANGOFT2, pangoft2)
+  fi
+  AC_SUBST(CAIRO_LIBS)
+  AC_SUBST(CAIRO_CFLAGS)
+  AC_SUBST(PANGOFT2_LIBS)
+  AC_SUBST(PANGOFT2_CFLAGS)
 fi
 
 CLASSPATH_WITH_JAVAH
Index: include/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/include/Makefile.am,v
retrieving revision 1.27
diff -u -r1.27 Makefile.am
--- include/Makefile.am 31 Jul 2004 16:07:21 -0000      1.27
+++ include/Makefile.am 14 Aug 2004 17:18:17 -0000
@@ -5,8 +5,12 @@
 JAVAH = $(USER_JAVAH) $(ARG_JNI_JAVAH) $(ARG_CLASSPATH_JAVAH) 
../lib:$(USER_CLASSLIB)
 
 H_FILES = \
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h \
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h \
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontMetrics.h \
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGlyphVector.h \
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphics.h \
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphics2D.h \
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h \
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h \
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h \
@@ -66,10 +70,18 @@
 
 all-local: $(H_FILES)
 
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java
+       $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkClasspathFontPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java
+       $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkClasspathFontPeerMetrics
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontMetrics.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontMetrics.java
        $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkFontMetrics
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGlyphVector.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkGlyphVector.java
+       $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGlyphVector
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphics.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphics.java
        $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphics
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphics2D.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphics2D.java
+       $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphics2D
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
        $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkPixbufDecoder
 $(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h: 
$(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
Index: include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h
===================================================================
RCS file: include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h
diff -N include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.h        14 Aug 2004 
17:18:17 -0000
@@ -0,0 +1,22 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __gnu_java_awt_peer_gtk_GdkClasspathFontPeer__
+#define __gnu_java_awt_peer_gtk_GdkClasspathFontPeer__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeer_initStaticState (JNIEnv *env, 
jclass);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeer_initState (JNIEnv *env, 
jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeer_dispose 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeer_setFont 
(JNIEnv *env, jobject, jstring, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_java_awt_peer_gtk_GdkClasspathFontPeer__ */
Index: include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h
===================================================================
RCS file: include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h
diff -N include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.h 14 Aug 2004 
17:18:17 -0000
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics__
+#define __gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jintArray JNICALL 
Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics_initState (JNIEnv *env, 
jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics__ */
Index: include/gnu_java_awt_peer_gtk_GdkGlyphVector.h
===================================================================
RCS file: include/gnu_java_awt_peer_gtk_GdkGlyphVector.h
diff -N include/gnu_java_awt_peer_gtk_GdkGlyphVector.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/gnu_java_awt_peer_gtk_GdkGlyphVector.h      14 Aug 2004 17:18:17 
-0000
@@ -0,0 +1,32 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __gnu_java_awt_peer_gtk_GdkGlyphVector__
+#define __gnu_java_awt_peer_gtk_GdkGlyphVector__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_initStaticState (JNIEnv *env, jclass);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_initState 
(JNIEnv *env, jobject, jobject, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_setChars 
(JNIEnv *env, jobject, jstring);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_setGlyphCodes 
(JNIEnv *env, jobject, jintArray);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_dispose 
(JNIEnv *env, jobject);
+JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphCode 
(JNIEnv *env, jobject, jint);
+JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_numGlyphs 
(JNIEnv *env, jobject);
+JNIEXPORT jint JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphCharIndex (JNIEnv *env, jobject, 
jint);
+JNIEXPORT jdoubleArray JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_allLogicalExtents (JNIEnv *env, 
jobject);
+JNIEXPORT jdoubleArray JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_allInkExtents (JNIEnv *env, jobject);
+JNIEXPORT jdoubleArray JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphLogicalExtents (JNIEnv *env, 
jobject, jint);
+JNIEXPORT jdoubleArray JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphInkExtents (JNIEnv *env, 
jobject, jint);
+JNIEXPORT jboolean JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphIsHorizontal (JNIEnv *env, 
jobject, jint);
+JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_gtk_GdkGlyphVector_isEqual 
(JNIEnv *env, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_java_awt_peer_gtk_GdkGlyphVector__ */
Index: include/gnu_java_awt_peer_gtk_GdkGraphics.h
===================================================================
RCS file: 
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GdkGraphics.h,v
retrieving revision 1.7
diff -u -r1.7 gnu_java_awt_peer_gtk_GdkGraphics.h
--- include/gnu_java_awt_peer_gtk_GdkGraphics.h 9 Aug 2004 16:54:09 -0000       
1.7
+++ include/gnu_java_awt_peer_gtk_GdkGraphics.h 14 Aug 2004 17:18:17 -0000
@@ -17,7 +17,7 @@
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyArea (JNIEnv 
*env, jobject, jint, jint, jint, jint, jint, jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_dispose (JNIEnv 
*env, jobject);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyPixmap 
(JNIEnv *env, jobject, jobject, jint, jint, jint, jint);
-JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics_copyAndScalePixmap(JNIEnv *env, jobject, 
jobject, jboolean, jboolean, jint, jint, jint, jint, jint, jint, jint, jint);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics_copyAndScalePixmap (JNIEnv *env, 
jobject, jobject, jboolean, jboolean, jint, jint, jint, jint, jint, jint, jint, 
jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawLine (JNIEnv 
*env, jobject, jint, jint, jint, jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawArc (JNIEnv 
*env, jobject, jint, jint, jint, jint, jint, jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillArc (JNIEnv 
*env, jobject, jint, jint, jint, jint, jint, jint);
Index: include/gnu_java_awt_peer_gtk_GdkGraphics2D.h
===================================================================
RCS file: include/gnu_java_awt_peer_gtk_GdkGraphics2D.h
diff -N include/gnu_java_awt_peer_gtk_GdkGraphics2D.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/gnu_java_awt_peer_gtk_GdkGraphics2D.h       14 Aug 2004 17:18:17 
-0000
@@ -0,0 +1,55 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __gnu_java_awt_peer_gtk_GdkGraphics2D__
+#define __gnu_java_awt_peer_gtk_GdkGraphics2D__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initStaticState (JNIEnv *env, jclass);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2
 (JNIEnv *env, jobject, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__II 
(JNIEnv *env, jobject, jint, jint);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_copyState 
(JNIEnv *env, jobject, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_dispose 
(JNIEnv *env, jobject);
+JNIEXPORT jintArray JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getImagePixels (JNIEnv *env, jobject);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, 
jobject, jint);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_gdkDrawDrawable (JNIEnv *env, jobject, 
jobject, jint, jint);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_drawPixels 
(JNIEnv *env, jobject, jintArray, jint, jint, jint, jdoubleArray);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setTexturePixels (JNIEnv *env, 
jobject, jintArray, jint, jint, jint);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setGradient 
(JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jint, jint, jint, 
jint, jint, jint, jint, jint, jboolean);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSave 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRestore 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMatrix 
(JNIEnv *env, jobject, jdoubleArray);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetFont 
(JNIEnv *env, jobject, jobject);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoShowGlyphs (JNIEnv *env, jobject, 
jintArray, jfloatArray);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetOperator (JNIEnv *env, 
jobject, jint);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetRGBColor (JNIEnv *env, 
jobject, jdouble, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetAlpha 
(JNIEnv *env, jobject, jdouble);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetFillRule (JNIEnv *env, 
jobject, jint);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineWidth (JNIEnv *env, 
jobject, jdouble);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineCap (JNIEnv *env, jobject, 
jint);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineJoin (JNIEnv *env, 
jobject, jint);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetDash 
(JNIEnv *env, jobject, jdoubleArray, jint, jdouble);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMiterLimit (JNIEnv *env, 
jobject, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoNewPath 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoMoveTo 
(JNIEnv *env, jobject, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoLineTo 
(JNIEnv *env, jobject, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoCurveTo 
(JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelMoveTo 
(JNIEnv *env, jobject, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelLineTo 
(JNIEnv *env, jobject, jdouble, jdouble);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelCurveTo (JNIEnv *env, jobject, 
jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRectangle 
(JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoClosePath 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoStroke 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoFill 
(JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoClip 
(JNIEnv *env, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_java_awt_peer_gtk_GdkGraphics2D__ */
Index: include/gnu_java_awt_peer_gtk_GtkFramePeer.h
===================================================================
RCS file: 
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkFramePeer.h,v
retrieving revision 1.7
diff -u -r1.7 gnu_java_awt_peer_gtk_GtkFramePeer.h
--- include/gnu_java_awt_peer_gtk_GtkFramePeer.h        28 May 2004 17:27:53 
-0000      1.7
+++ include/gnu_java_awt_peer_gtk_GtkFramePeer.h        14 Aug 2004 17:18:17 
-0000
@@ -15,6 +15,8 @@
 JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GtkFramePeer_removeMenuBarPeer (JNIEnv *env, 
jobject);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout 
(JNIEnv *env, jobject, jint);
 JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GtkFramePeer_gtkLayoutSetVisible (JNIEnv *env, 
jobject, jboolean);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GtkFramePeer_nativeSetIconImageFromDecoder (JNIEnv 
*env, jobject, jobject);
+JNIEXPORT void JNICALL 
Java_gnu_java_awt_peer_gtk_GtkFramePeer_nativeSetIconImageFromData (JNIEnv 
*env, jobject, jintArray, jint, jint);
 
 #ifdef __cplusplus
 }
Index: native/jni/gtk-peer/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/Makefile.am,v
retrieving revision 1.12
diff -u -r1.12 Makefile.am
--- native/jni/gtk-peer/Makefile.am     1 Aug 2004 08:31:17 -0000       1.12
+++ native/jni/gtk-peer/Makefile.am     14 Aug 2004 17:18:17 -0000
@@ -1,10 +1,21 @@
 pkglib_LTLIBRARIES = libgtkpeer.la
 
-libgtkpeer_la_SOURCES = \
+# Gtk/Cairo JNI sources.
+if GTK_CAIRO
+  gtk_cairo_c_source_files = \
+    gnu_java_awt_peer_gtk_GdkClasspathFontPeer.c \
+    gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c \
+    gnu_java_awt_peer_gtk_GdkGlyphVector.c \
+    gnu_java_awt_peer_gtk_GdkGraphics2D.c
+else
+  gtk_cairo_c_source_files =
+endif
+
+libgtkpeer_la_SOURCES = $(gtk_cairo_c_source_files) \
+                       gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c \
                        gnu_java_awt_peer_gtk_GdkFontMetrics.c \
                        gnu_java_awt_peer_gtk_GdkGraphics.c \
                        gnu_java_awt_peer_gtk_GdkPixbufDecoder.c \
-                       gnu_java_awt_peer_gtk_GtkFileDialogPeer.c \
                        gnu_java_awt_peer_gtk_GtkButtonPeer.c \
                        gnu_java_awt_peer_gtk_GtkCanvasPeer.c \
                        gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.c \
@@ -13,15 +24,16 @@
                        gnu_java_awt_peer_gtk_GtkChoicePeer.c \
                        gnu_java_awt_peer_gtk_GtkClipboard.c \
                        gnu_java_awt_peer_gtk_GtkComponentPeer.c \
-                       gnu_java_awt_peer_gtk_GtkEvents.c \
                        gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.c \
-                       gnu_java_awt_peer_gtk_GtkGenericPeer.c  \
+                       gnu_java_awt_peer_gtk_GtkEvents.c \
+                       gnu_java_awt_peer_gtk_GtkFileDialogPeer.c \
+                       gnu_java_awt_peer_gtk_GtkGenericPeer.c \
                        gnu_java_awt_peer_gtk_GtkImagePainter.c \
                        gnu_java_awt_peer_gtk_GtkLabelPeer.c \
-                       gnu_java_awt_peer_gtk_GtkListPeer.c     \
+                       gnu_java_awt_peer_gtk_GtkListPeer.c \
                        gnu_java_awt_peer_gtk_GtkMainThread.c \
                        gnu_java_awt_peer_gtk_GtkMenuBarPeer.c \
-                        gnu_java_awt_peer_gtk_GtkMenuComponentPeer.c \
+                       gnu_java_awt_peer_gtk_GtkMenuComponentPeer.c \
                        gnu_java_awt_peer_gtk_GtkMenuItemPeer.c \
                        gnu_java_awt_peer_gtk_GtkMenuPeer.c \
                        gnu_java_awt_peer_gtk_GtkPanelPeer.c \
@@ -33,11 +45,14 @@
                        gnu_java_awt_peer_gtk_GtkTextFieldPeer.c \
                        gnu_java_awt_peer_gtk_GtkToolkit.c \
                        gnu_java_awt_peer_gtk_GtkWindowPeer.c \
-                       gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c \
                        gthread-jni.c \
+                       gdkfont.h \
                        gthread-jni.h \
-                       gtkpeer.h 
+                       gtkcairopeer.h \
+                       gtkpeer.h
 
-libgtkpeer_la_CPPFLAGS = $(AM_CPPFLAGS) @GTK_CFLAGS@
+libgtkpeer_la_CPPFLAGS = $(AM_CPPFLAGS) @GTK_CFLAGS@ \
+                         @CAIRO_CFLAGS@ @PANGOFT2_CFLAGS@
 libgtkpeer_la_LIBADD = $(top_builddir)/native/jni/classpath/native_state.lo
-libgtkpeer_la_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@
+libgtkpeer_la_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ \
+                        @CAIRO_LIBS@ @PANGOFT2_LIBS@
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c,v
retrieving revision 1.5
diff -u -r1.5 gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c     
29 Mar 2004 07:07:26 -0000      1.5
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c     
14 Aug 2004 17:18:17 -0000
@@ -54,6 +54,8 @@
   jint *metrics;
   struct peerfont *pf = NULL;
   FT_Matrix mat;
+  double pointsize;
+  FT_Face face;
 
   pf = NSA_GET_FONT_PTR(env, font);
   g_assert (pf != NULL);
@@ -68,7 +70,7 @@
 #define DOUBLE_TO_16_16(d) ((FT_Fixed)((d) * 65536.0))
 #define DOUBLE_FROM_16_16(t) ((double)(t) / 65536.0)
 
-  double pointsize = pango_font_description_get_size (pf->desc);
+  pointsize = pango_font_description_get_size (pf->desc);
   pointsize /= (double) PANGO_SCALE;
 
   mat.xx = DOUBLE_TO_16_16(1);
@@ -76,7 +78,7 @@
   mat.yx = DOUBLE_TO_16_16(0);
   mat.yy = DOUBLE_TO_16_16(1);  
   
-  FT_Face face = pango_ft2_font_get_face (pf->font);  
+  face = pango_ft2_font_get_face (pf->font);  
   FT_Set_Transform(face, &mat, NULL);
   FT_Set_Char_Size( face, 
                    DOUBLE_TO_26_6 (pointsize),
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c,v
retrieving revision 1.9
diff -u -r1.9 gnu_java_awt_peer_gtk_GdkGraphics2D.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c   30 Jul 2004 
16:01:47 -0000      1.9
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c   14 Aug 2004 
17:18:17 -0000
@@ -400,7 +400,6 @@
   struct graphics2d *src = NULL, *dst = NULL;
   gint s_height, s_width, d_height, d_width, height, width;
   cairo_matrix_t *matrix;
-  GdkGC *gc;
   cairo_operator_t tmp_op;
 
   gdk_threads_enter();
@@ -605,20 +604,21 @@
      negate offsets. oh well.
      
    */
-
-  double a = (x2 - x1 == 0.) ? 0. : ((cyclic ? 3.0 : 2.0) / (x2 - x1));
-  double c = (y2 - y1 == 0.) ? 0. : (1. / (y2 - y1));
-  double dx = (x1 == 0.) ? 0. : 1. / x1;
-  double dy = (y1 == 0.) ? 0. : 1. / y1;
-
-  cairo_matrix_set_affine (mat,
-                          a, 0.,
-                          c, 0.,
-                          dx, dy);
-
-  cairo_surface_set_matrix (surf, mat);
-  cairo_matrix_destroy (mat);
-  cairo_surface_set_filter (surf, CAIRO_FILTER_BILINEAR);
+  {
+    double a = (x2 - x1 == 0.) ? 0. : ((cyclic ? 3.0 : 2.0) / (x2 - x1));
+    double c = (y2 - y1 == 0.) ? 0. : (1. / (y2 - y1));
+    double dx = (x1 == 0.) ? 0. : 1. / x1;
+    double dy = (y1 == 0.) ? 0. : 1. / y1;
+    
+    cairo_matrix_set_affine (mat,
+                            a, 0.,
+                            c, 0.,
+                            dx, dy);
+    
+    cairo_surface_set_matrix (surf, mat);
+    cairo_matrix_destroy (mat);
+    cairo_surface_set_filter (surf, CAIRO_FILTER_BILINEAR);
+  }
 
   /* FIXME: repeating gradients (not to mention hold gradients) don't seem to 
work. */
   /*   cairo_surface_set_repeat (surf, cyclic ? 1 : 0); */
@@ -751,7 +751,7 @@
   jint i, px;
 
   gdk_threads_enter();
-  if (peer_is_disposed(env, obj)) { gdk_threads_leave(); return; }
+  if (peer_is_disposed(env, obj)) { gdk_threads_leave(); return NULL; }
 
   gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj);
   g_assert (gr != NULL);

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]