This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[gui][PATCH] GdkGraphics fixes
- From: Thomas Fitzsimmons <fitzsim at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: Sat, 24 Jul 2004 00:27:11 -0400
- Subject: [gui][PATCH] GdkGraphics fixes
Hi,
I committed the attached patch to java-gui-branch.
It fixes some default GdkGraphics settings and makes
GtkOffScreenImage.getGraphics return a new Graphics object every time
it's called. The patch also fixes Graphics' and Font's toString
methods.
Tom
2004-07-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GdkGraphics.java,
gnu_java_awt_peer_gtk_GdkGraphics.c
(initState(GtkComponentPeer)): Don't return array of colour
values.
(GdkGraphics(int,int)): Set default font to size 12.
(GdkGraphics(GtkComponentPeer)): Set graphics colour to
component's foreground colour.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java,
gnu_java_awt_peer_gtk_GdkGraphics2D.c
(initState(GtkComponentPeer)): Don't return array of colour
values.
(GdkGraphics2D(GtkComponentPeer)): Set foreground and background
colours to component's colours.
(current_colors_of_widget): Remove function.
* gnu/java/awt/peer/gtk/GtkOffScreenImage.java (getGraphics):
Return a new graphics object.
* java/awt/Font.java (toString): Fix format.
* java/awt/Graphics.java (toString): Likewise.
Index: gnu/java/awt/peer/gtk/GdkGraphics.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java,v
retrieving revision 1.4.16.3
diff -u -r1.4.16.3 GdkGraphics.java
--- gnu/java/awt/peer/gtk/GdkGraphics.java 5 May 2004 20:57:13 -0000 1.4.16.3
+++ gnu/java/awt/peer/gtk/GdkGraphics.java 24 Jul 2004 04:19:42 -0000
@@ -64,7 +64,7 @@
static final int GDK_COPY = 0, GDK_XOR = 2;
- native int[] initState (GtkComponentPeer component);
+ native void initState (GtkComponentPeer component);
native void initState (int width, int height);
native void copyState (GdkGraphics g);
@@ -84,15 +84,15 @@
initState (width, height);
color = Color.black;
clip = new Rectangle (0, 0, width, height);
- font = new Font ("Dialog", Font.PLAIN, 10);
+ font = new Font ("Dialog", Font.PLAIN, 12);
}
GdkGraphics (GtkComponentPeer component)
{
this.component = component;
- int rgb[] = initState (component);
- color = new Color (rgb[0], rgb[1], rgb[2]);
- font = component.awtComponent.getFont();
+ initState (component);
+ color = component.awtComponent.getForeground ();
+ font = component.awtComponent.getFont ();
Dimension d = component.awtComponent.getSize ();
clip = new Rectangle (0, 0, d.width, d.height);
}
Index: gnu/java/awt/peer/gtk/GdkGraphics2D.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java,v
retrieving revision 1.7.2.12
diff -u -r1.7.2.12 GdkGraphics2D.java
--- gnu/java/awt/peer/gtk/GdkGraphics2D.java 16 Jun 2004 19:05:54 -0000 1.7.2.12
+++ gnu/java/awt/peer/gtk/GdkGraphics2D.java 24 Jul 2004 04:19:44 -0000
@@ -88,7 +88,7 @@
private Stack stateStack;
- native private int[] initState (GtkComponentPeer component);
+ native private void initState (GtkComponentPeer component);
native private void initState (int width, int height);
native private void copyState (GdkGraphics2D g);
native public void dispose ();
@@ -169,10 +169,10 @@
GdkGraphics2D (GtkComponentPeer component)
{
this.component = component;
- int rgb[] = initState (component);
+ initState (component);
- setColor (new Color (rgb[0], rgb[1], rgb[2]));
- setBackground (new Color (rgb[3], rgb[4], rgb[5]));
+ setColor (component.awtComponent.getForeground ());
+ setBackground (component.awtComponent.getBackground ());
setPaint (getColor());
setFont (new Font("SansSerif", Font.PLAIN, 12));
setTransform (new AffineTransform ());
Index: gnu/java/awt/peer/gtk/GtkOffScreenImage.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkOffScreenImage.java,v
retrieving revision 1.2
diff -u -r1.2 GtkOffScreenImage.java
--- gnu/java/awt/peer/gtk/GtkOffScreenImage.java 13 Jul 2003 15:09:20 -0000 1.2
+++ gnu/java/awt/peer/gtk/GtkOffScreenImage.java 24 Jul 2004 04:19:44 -0000
@@ -76,7 +76,10 @@
public Graphics getGraphics ()
{
- return g;
+ if (g instanceof GdkGraphics2D)
+ return new GdkGraphics2D ((GdkGraphics2D) this.g);
+ else
+ return new GdkGraphics ((GdkGraphics) this.g);
}
public Object getProperty (String name, ImageObserver observer)
Index: java/awt/Font.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Font.java,v
retrieving revision 1.16.8.3
diff -u -r1.16.8.3 Font.java
--- java/awt/Font.java 12 Jul 2004 03:26:59 -0000 1.16.8.3
+++ java/awt/Font.java 24 Jul 2004 04:19:44 -0000
@@ -1265,12 +1265,28 @@
public String
toString()
{
- return(getClass().getName()
- + "(logical=" + getName ()
- + ",family=" + getFamily ()
- + ",name=" + getFontName ()
- + ",style=" + getStyle ()
- + ",size=" + getSize ());
+ String styleString = "";
+
+ switch (getStyle ())
+ {
+ case 0:
+ styleString = "plain";
+ break;
+ case 1:
+ styleString = "bold";
+ break;
+ case 2:
+ styleString = "italic";
+ break;
+ default:
+ styleString = "unknown";
+ }
+
+ return getClass ().getName ()
+ + "[family=" + getFamily ()
+ + ",name=" + getFontName ()
+ + ",style=" + styleString
+ + ",size=" + getSize () + "]";
}
Index: java/awt/Graphics.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Graphics.java,v
retrieving revision 1.6.18.2
diff -u -r1.6.18.2 Graphics.java
--- java/awt/Graphics.java 24 Jun 2004 05:30:16 -0000 1.6.18.2
+++ java/awt/Graphics.java 24 Jul 2004 04:19:46 -0000
@@ -732,14 +732,14 @@
/*************************************************************************/
/**
- * Returns a string representation of this object.
- *
- * @param A string representation of this object.
- */
+ * Returns a string representation of this object.
+ *
+ * @param A string representation of this object.
+ */
public String
toString()
{
- return(super.toString());
+ return getClass ().getName () + "[font=" + getFont () + ",color=" + getColor () + "]";
}
public boolean
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c,v
retrieving revision 1.5.2.4
diff -u -r1.5.2.4 gnu_java_awt_peer_gtk_GdkGraphics.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c 15 Jun 2004 03:27:09 -0000 1.5.2.4
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c 24 Jul 2004 04:19:47 -0000
@@ -94,15 +94,13 @@
/* copy the native state of the peer (GtkWidget *) to the native state
of the graphics object */
-JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2
(JNIEnv *env, jobject obj, jobject peer)
{
struct graphics *g = (struct graphics *) malloc (sizeof (struct graphics));
void *ptr;
GtkWidget *widget;
GdkColor color;
- jintArray array;
- jint *rgb;
ptr = NSA_GET_PTR (env, peer);
g->x_offset = g->y_offset = 0;
@@ -133,16 +131,7 @@
gdk_threads_leave ();
- array = (*env)->NewIntArray (env, 3);
- rgb = (*env)->GetIntArrayElements (env, array, NULL);
- rgb[0] = color.red >> 8;
- rgb[1] = color.green >> 8;
- rgb[2] = color.blue >> 8;
- (*env)->ReleaseIntArrayElements (env, array, rgb, 0);
-
NSA_SET_PTR (env, obj, g);
-
- return array;
}
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_dispose
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c,v
retrieving revision 1.5.8.4
diff -u -r1.5.8.4 gnu_java_awt_peer_gtk_GdkGraphics2D.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c 21 May 2004 23:34:16 -0000 1.5.8.4
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c 24 Jul 2004 04:19:47 -0000
@@ -443,41 +443,12 @@
gdk_threads_leave();
}
-static jintArray
-current_colors_of_widget (GtkWidget *widget, JNIEnv *env)
-{
- GdkColor color;
- jintArray array;
- jint *rgb;
-
- g_assert (widget != NULL);
- g_assert (env != NULL);
-
- color = widget->style->fg[GTK_STATE_NORMAL];
- array = (*env)->NewIntArray (env, 6);
-
- rgb = (*env)->GetIntArrayElements (env, array, NULL);
- rgb[0] = color.red >> 8;
- rgb[1] = color.green >> 8;
- rgb[2] = color.blue >> 8;
-
- color = widget->style->bg[GTK_STATE_NORMAL];
- rgb[3] = color.red >> 8;
- rgb[4] = color.green >> 8;
- rgb[5] = color.blue >> 8;
-
- (*env)->ReleaseIntArrayElements (env, array, rgb, 0);
-
- return array;
-}
-
-JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2
(JNIEnv *env, jobject obj, jobject peer)
{
struct graphics2d *gr = NULL;
GtkWidget *widget = NULL;
void *ptr = NULL;
- jintArray color;
gdk_threads_enter();
if (peer_is_disposed(env, obj)) { gdk_threads_leave(); return; }
@@ -504,11 +475,8 @@
else
init_graphics2d_as_pixbuf (gr);
- color = current_colors_of_widget (widget, env);
-
NSA_SET_G2D_PTR (env, obj, gr);
gdk_threads_leave();
- return color;
}
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_dispose