This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]