classpath-patches
[Top][All Lists]
Advanced

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

[cp-patches] GtkToolkit createImage() returning ErrorImages


From: Mark Wielaard
Subject: [cp-patches] GtkToolkit createImage() returning ErrorImages
Date: Sat, 03 Sep 2005 21:56:31 +0200

Hi,

Is there a reason why the GtkToolkit createImage() methods only return
an ErrorImage on failure in the case of Graphics2D/BufferedImage
availability? This patch makes them behave similar:

2005-09-03  Mark Wielaard  <address@hidden>

        * gnu/java/awt/peer/gtk/GtkToolkit.java (bufferedImageOrError):
        Renamed to ...
        (imageOrError): Renamed from bufferedImageOrError, takes Image.
        (createImage(String)): Always use imageOrError.
        (createImage(URL)): Likewise.
        (createImage(ImageProducer)): Likewise.
        (createImage(byte[],int,int)): Likewise.

Does that makes sense?

Cheers,

Mark
Index: gnu/java/awt/peer/gtk/GtkToolkit.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java,v
retrieving revision 1.79
diff -u -r1.79 GtkToolkit.java
--- gnu/java/awt/peer/gtk/GtkToolkit.java       2 Sep 2005 09:15:22 -0000       
1.79
+++ gnu/java/awt/peer/gtk/GtkToolkit.java       3 Sep 2005 19:54:24 -0000
@@ -237,11 +237,10 @@
 
 
   /** 
-   * Helper to return either a BufferedImage -- the argument -- or a
+   * Helper to return either a Image -- the argument -- or a
    * GtkErrorImage if the argument is null.
    */
-
-  private Image bufferedImageOrError(BufferedImage b)
+  private Image imageOrError(Image b)
   {
     if (b == null) 
       return new GtkErrorImage();
@@ -249,47 +248,82 @@
       return b;
   }
 
-
   public Image createImage (String filename)
   {
     if (filename.length() == 0)
       return new GtkImage ();
-
-    if (useGraphics2D())
-      return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage 
(filename));
-    else
-      return new GtkImage (filename);
+    
+    Image image;
+    try
+      {
+       if (useGraphics2D())
+         image = GdkPixbufDecoder.createBufferedImage(filename);
+       else
+         image = new GtkImage(filename);
+      }
+    catch (IllegalArgumentException iae)
+      {
+       image = null;
+      }
+    return imageOrError(image);
   }
 
   public Image createImage (URL url)
   {
-    if (useGraphics2D())
-      return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage (url));
-    else
-      return new GtkImage (url);
+    Image image;
+    try
+      {
+       if (useGraphics2D())
+         image = GdkPixbufDecoder.createBufferedImage(url);
+       else
+         image = new GtkImage(url);
+      }
+    catch (IllegalArgumentException iae)
+      {
+       image = null;
+      }
+    return imageOrError(image);
   }
 
   public Image createImage (ImageProducer producer) 
   {
-    if (useGraphics2D())
-      return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage 
(producer));
-    else
-      return new GtkImage (producer);
+    Image image;
+    try
+      {
+       if (useGraphics2D())
+         image = GdkPixbufDecoder.createBufferedImage(producer);
+       else
+         image = new GtkImage(producer);
+      }
+    catch (IllegalArgumentException iae)
+      {
+       image = null;
+      }
+    return imageOrError(image);
   }
 
   public Image createImage (byte[] imagedata, int imageoffset,
                            int imagelength)
   {
-    if (useGraphics2D())
-      return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage 
(imagedata,
-                                                   imageoffset, 
-                                                                        
imagelength));
-    else
+    Image image;
+    try
+      {
+       if (useGraphics2D())
+         image = GdkPixbufDecoder.createBufferedImage(imagedata,
+                                                      imageoffset, 
+                                                      imagelength);
+       else
+         {
+           byte[] datacopy = new byte[imagelength];
+           System.arraycopy(imagedata, imageoffset, datacopy, 0, imagelength);
+           return new GtkImage(datacopy);
+         }
+      }
+    catch (IllegalArgumentException iae)
       {
-        byte[] datacopy = new byte[imagelength];
-        System.arraycopy (imagedata, imageoffset, datacopy, 0, imagelength);
-        return new GtkImage (datacopy);
+       image = null;
       }
+    return imageOrError(image);
   }
   
   /**

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


reply via email to

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