Index: gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,v retrieving revision 1.3 diff -u -r1.3 GdkGraphicsEnvironment.java --- gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java 8 Oct 2004 22:49:27 -0000 1.3 +++ gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java 22 Oct 2004 10:09:44 -0000 @@ -68,16 +68,25 @@ { return new GdkGraphics2D (image); } + native private int nativeGetNumFontFamilies (); + native private void nativeGetFontFamilies (String[] family_names); public Font[] getAllFonts () { throw new java.lang.UnsupportedOperationException (); } - public String[] getAvailableFontFamilyNames () - { - throw new java.lang.UnsupportedOperationException (); - } + public String[] getAvailableFontFamilyNames () + { + String[] family_names; + int array_size; + + array_size = nativeGetNumFontFamilies(); + family_names = new String[array_size]; + + nativeGetFontFamilies(family_names); + return family_names; + } public String[] getAvailableFontFamilyNames (Locale l) { Index: include/Makefile.am =================================================================== RCS file: /cvsroot/classpath/classpath/include/Makefile.am,v retrieving revision 1.31 diff -u -r1.31 Makefile.am --- include/Makefile.am 9 Oct 2004 16:38:56 -0000 1.31 +++ include/Makefile.am 22 Oct 2004 10:09:44 -0000 @@ -10,6 +10,7 @@ $(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_GdkGraphicsEnvironment.h \ $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h \ $(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkTextLayout.h \ $(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h \ @@ -80,6 +81,8 @@ $(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_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java + $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphicsEnvironment $(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_GdkTextLayout.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkTextLayout.java Index: include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h =================================================================== RCS file: include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h diff -N include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h 22 Oct 2004 10:09:44 -0000 @@ -0,0 +1,20 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ + +#ifndef __gnu_java_awt_peer_gtk_GdkGraphicsEnvironment__ +#define __gnu_java_awt_peer_gtk_GdkGraphicsEnvironment__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetNumFontFamilies (JNIEnv *env, jobject); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetFontFamilies (JNIEnv *env, jobject, jobjectArray); + +#ifdef __cplusplus +} +#endif + +#endif /* __gnu_java_awt_peer_gtk_GdkGraphicsEnvironment__ */ Index: include/gnu_java_awt_peer_gtk_GtkButtonPeer.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h,v retrieving revision 1.11 diff -u -r1.11 gnu_java_awt_peer_gtk_GtkButtonPeer.h --- include/gnu_java_awt_peer_gtk_GtkButtonPeer.h 8 Oct 2004 22:27:35 -0000 1.11 +++ include/gnu_java_awt_peer_gtk_GtkButtonPeer.h 22 Oct 2004 10:09:44 -0000 @@ -18,6 +18,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetSetBackground (JNIEnv *env, jobject, jint, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkActivate (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetRequestFocus (JNIEnv *env, jobject); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_setNativeBounds (JNIEnv *env, jobject, jint, jint, jint, jint); #ifdef __cplusplus } Index: include/gnu_java_awt_peer_gtk_GtkLabelPeer.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h,v retrieving revision 1.7 diff -u -r1.7 gnu_java_awt_peer_gtk_GtkLabelPeer.h --- include/gnu_java_awt_peer_gtk_GtkLabelPeer.h 23 Sep 2004 22:57:12 -0000 1.7 +++ include/gnu_java_awt_peer_gtk_GtkLabelPeer.h 22 Oct 2004 10:09:44 -0000 @@ -14,6 +14,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_gtkWidgetModifyFont (JNIEnv *env, jobject, jstring, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_nativeSetAlignment (JNIEnv *env, jobject, jfloat); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText (JNIEnv *env, jobject, jstring); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeBounds (JNIEnv *env, jobject, jint, jint, 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.16 diff -u -r1.16 Makefile.am --- native/jni/gtk-peer/Makefile.am 8 Oct 2004 22:56:00 -0000 1.16 +++ native/jni/gtk-peer/Makefile.am 22 Oct 2004 10:09:44 -0000 @@ -14,6 +14,7 @@ gnu_java_awt_peer_gtk_GdkFontMetrics.c \ gnu_java_awt_peer_gtk_GdkFontPeer.c \ gnu_java_awt_peer_gtk_GdkGraphics.c \ + gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c \ gnu_java_awt_peer_gtk_GdkPixbufDecoder.c \ gnu_java_awt_peer_gtk_GdkTextLayout.c \ gnu_java_awt_peer_gtk_GtkButtonPeer.c \ Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c =================================================================== RCS file: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c diff -N native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c 22 Oct 2004 10:09:44 -0000 @@ -0,0 +1,97 @@ +/* gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c + Copyright (C) 2004 Free Software Foundation, Inc. + + This file is part of GNU Classpath. + + GNU Classpath is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU Classpath is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Classpath; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from + or based on this library. If you modify this library, you may extend + this exception to your version of the library, but you are not + obligated to do so. If you do not wish to do so, delete this + exception statement from your version. */ + +#include "gdkfont.h" +#include "gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h" + + +static gint +cmp_families (const void *a, const void *b) +{ + const char *a_name = pango_font_family_get_name (*(PangoFontFamily **)a); + const char *b_name = pango_font_family_get_name (*(PangoFontFamily **)b); + + return g_utf8_collate (a_name, b_name); +} + +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetFontFamilies +(JNIEnv *env, jobject self __attribute__((unused)), jobjectArray family_name) +{ + PangoContext *context; + PangoFontFamily **families; + int n_families, idx; + + gdk_threads_enter (); + + context = gdk_pango_context_get(); + g_assert (context != NULL); + + pango_context_list_families (context, &families, &n_families); + + qsort (families, n_families, sizeof (PangoFontFamily *), cmp_families); + + for (idx = 0; idx < n_families; idx++) + { + const char *name_tmp = pango_font_family_get_name (families[idx]); + jstring name = (*env)->NewStringUTF (env, name_tmp); + (*env)->SetObjectArrayElement (env, family_name, idx, name); + } + g_free (families); + gdk_threads_leave (); +} + +JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetNumFontFamilies +(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused))) +{ + PangoContext *context; + PangoFontFamily **families; + gint n_families; + jint num; + + gdk_threads_enter (); + + context = gdk_pango_context_get(); + g_assert (context != NULL); + + pango_context_list_families (context, &families, &n_families); + + num = n_families; + g_free (families); + gdk_threads_leave (); + + return num; +}