Re: Patch to compile Escher with Classpath.

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

 



Hello all.

First I would like to apologize my absense these days, I had some exams on univ. :/
But I cleaned up the patch, it's on the attach.

I also created a google code page
Should I clone and put the escher repo there (? - I'm still learning mercury ^_^, it's cool) .

I also found this excellent book: Xlib Programming Manual it's about Xlib but address lots of stuff on X.
I'm reading and it's an excellent reference.

Regards,
Marcos Roriz


2010/5/3 Mario Torre <neugens@xxxxxxxxxxxxxxxx>
Il giorno dom, 02/05/2010 alle 02.57 -0300, Marcos Roriz ha scritto:
> I finished up a patch that compiles the current Escher (Hg) with the
> current GNU Classpath (CVS). The major problems in the compilation was
> the difference between method name and the number/types of parameters
> in classpath and escher. After some fixing everything is fine. Now
> I'll generate some simple application tests (Hello World GUI, as Mario
> Torre said =D).
>
> Regards,
>
> Marcos Roriz

Hi Marcos,

Thanks for the patch!

I see there are a number of white space changes that make difficult to
read the patch.

Those white space changes are also affecting the formatting, so it's not
OK, because they break the GNU coding guidelines.

Please, try to export the patch ignoring white spaces changes and
resubmit.

Other than that, it looks good though, so now post a screen shot of your
first Escher based HelloWorld somewhere!! :)

Cheers,
Mario
--
pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF
Fingerprint: BA39 9666 94EC 8B73 27FA  FC7C 4086 63E3 80F2 40CF

Proud GNU Classpath developer: http://www.classpath.org/
Read About us at: http://planet.classpath.org
OpenJDK: http://openjdk.java.net/projects/caciocavallo/

Please, support open standards:
http://endsoftpatents.org/




--
Marcos Roriz
Bacharelando em Ciência da Computação
Universidade Federal de Goiás

E-mail: marcosrorizinf@xxxxxxxxx
Home Page:http://marcosroriz.wordpress.com
### Eclipse Workspace Patch 1.0
#P classpath
Index: gnu/java/awt/peer/x/PixmapVolatileImage.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java,v
retrieving revision 1.2
diff -u -r1.2 PixmapVolatileImage.java
--- gnu/java/awt/peer/x/PixmapVolatileImage.java	16 Jul 2007 15:04:53 -0000	1.2
+++ gnu/java/awt/peer/x/PixmapVolatileImage.java	5 May 2010 02:02:57 -0000
@@ -37,6 +37,7 @@
 
 package gnu.java.awt.peer.x;
 
+import gnu.x11.EscherUnsupportedScreenBitDepthException;
 import gnu.x11.GC;
 import gnu.x11.Pixmap;
 import gnu.x11.image.Image;
@@ -124,6 +125,8 @@
   @Override
   public BufferedImage getSnapshot()
   {
+    try
+    {
     // TODO: Support non-24-bit resolutions.
     int w = pixmap.width;
     int h = pixmap.height;
@@ -140,8 +143,15 @@
     WritableRaster raster = Raster.createWritableRaster(sm, buffer,
                                                         new Point(0, 0));
     return new BufferedImage(cm, raster, false, null);
+    }
+    catch (EscherUnsupportedScreenBitDepthException e)
+    {
+      // TODO See this exception
+      e.printStackTrace();
+      return null;
+    }
   }
-
+  
   @Override
   public int getWidth()
   {
Index: gnu/java/awt/peer/x/XGraphics2D.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/x/XGraphics2D.java,v
retrieving revision 1.12
diff -u -r1.12 XGraphics2D.java
--- gnu/java/awt/peer/x/XGraphics2D.java	15 Jun 2008 18:14:55 -0000	1.12
+++ gnu/java/awt/peer/x/XGraphics2D.java	5 May 2010 02:02:59 -0000
@@ -62,7 +62,9 @@
 import gnu.java.awt.java2d.ScanlineCoverage;
 import gnu.x11.Colormap;
 import gnu.x11.Drawable;
+import gnu.x11.EscherUnsupportedScreenBitDepthException;
 import gnu.x11.GC;
+import gnu.x11.RGB;
 import gnu.x11.image.ZPixmap;
 
 public class XGraphics2D
@@ -215,10 +217,12 @@
    */
   protected void updateRaster(Raster raster, int x, int y, int w, int h)
   {
+    try
+    {
     if (w > 0 && h > 0)
       {
-        ZPixmap zPixmap = new ZPixmap(xdrawable.display, w, h,
-                                      xdrawable.display.default_pixmap_format);
+        ZPixmap zPixmap = new ZPixmap(xdrawable.display, w, h, xdrawable.display.default_pixmap_format, 
+            xdrawable.display.getVisualInfo(xdrawable.display.display_no));
         int[] pixel = null;
         int x1 = x + w;
         int y1 = y + h;
@@ -231,13 +235,17 @@
 //              System.err.print("r: " + pixel[0]);
 //              System.err.print(", g: " + pixel[1]);
 //              System.err.println(", b: " + pixel[2]);
-                zPixmap.set_red(tx - x, ty - y, pixel[0]);
-                zPixmap.set_green(tx - x, ty - y, pixel[1]);
-                zPixmap.set_blue(tx - x, ty - y, pixel[2]);
+                zPixmap.putRGB(tx - x, ty - y, new RGB(pixel[0], pixel[1], pixel[2]));
               }
           }
         xdrawable.put_image(xgc, zPixmap, x, y);
       }
+    }
+    catch (EscherUnsupportedScreenBitDepthException e)
+    {
+      // TODO See this exception
+      e.printStackTrace();
+    }
   }
 
   @Override
@@ -264,6 +272,8 @@
           }
         else if (coverageAlpha > 0)
           {
+          try
+          {
             // Composite the current color with the existing pixels.
             int x1 = x0 + l;
             x0 = Math.min(Math.max(0, x0), xdrawable.width - 1);
@@ -284,9 +294,10 @@
                 int red = col.getRed();
                 int green = col.getGreen();
                 int blue = col.getBlue();
-                int redOut = existing.get_red(x, 0);
-                int greenOut = existing.get_green(x, 0);
-                int blueOut = existing.get_blue(x, 0);
+                RGB exRGB = existing.getRGB(x, 0);
+                int redOut = exRGB.red;
+                int greenOut = exRGB.green;
+                int blueOut = exRGB.blue;
                 int outAlpha = maxCoverage - coverageAlpha;
                 redOut = redOut * outAlpha + red * coverageAlpha;
                 redOut = redOut / maxCoverage;
@@ -294,10 +305,16 @@
                 greenOut = greenOut / maxCoverage;
                 blueOut = blueOut * outAlpha + blue * coverageAlpha;
                 blueOut = blueOut / maxCoverage;
-                existing.set(x, 0, redOut, greenOut, blueOut);
+                existing.putRGB(x, 0, redOut, greenOut, blueOut);
               }
             xdrawable.put_image(xgc, existing, x0, y);
-          }
+        }
+        catch (EscherUnsupportedScreenBitDepthException e)
+        {
+          // TODO See this exception
+          e.printStackTrace();
+        }
+      }
       }
   }
 
@@ -381,20 +398,34 @@
               }
             else if (transparency == Transparency.OPAQUE || RENDER_OPAQUE)
               {
+              try
+              {
                 XGraphicsDevice gd = XToolkit.getDefaultDevice();
-                ZPixmap zpixmap = new ZPixmap(gd.getDisplay(), w, h);
+                ZPixmap zpixmap = new ZPixmap(gd.getDisplay(), w, h,
+                    xdrawable.display.getVisualInfo(xdrawable.display.display_no));
                 for (int yy = 0; yy < h; yy++)
                   {
                     for (int xx = 0; xx < w; xx++)
                       {
                         int rgb = bi.getRGB(xx, yy);
-                        zpixmap.set(xx, yy, rgb);
+                        int currentRed = 0xFF & (rgb >> 16);
+                        int currentGreen = 0xFF & (rgb >> 8);
+                        int currentBlue = 0xFF & rgb;
+                        zpixmap.putRGB(xx, yy, currentRed, currentGreen, currentBlue);
                       }
                   }
                 xdrawable.put_image(xgc, zpixmap, x, y);
                 imageCache.put(image, zpixmap);
-              } else {
-                
+              }
+              catch (EscherUnsupportedScreenBitDepthException e)
+              {
+                e.printStackTrace();
+              }
+              }
+              else
+              {  
+                try
+                {
                 // TODO optimize reusing the rectangles
                 Rectangle source =
                   new Rectangle(0, 0, xdrawable.width, xdrawable.height);
@@ -416,40 +447,49 @@
                     for (int xx = 0; xx < w; xx++)
                       {
                         int rgb = bi.getRGB(xx, yy);
+                        int currentRed = 0xFF & (rgb >> 16);
+                        int currentGreen = 0xFF & (rgb >> 8);
+                        int currentBlue = 0xFF & rgb;
                         int alpha = 0xff & (rgb >> 24);
                         if (alpha == 0)
                           {
                             // Completely translucent.
-                            rgb = zpixmap.get_red(xx, yy) << 16
-                                  | zpixmap.get_green(xx, yy) << 8
-                                  | zpixmap.get_blue(xx, yy);
+                            //rgb = zpixmap.get_red(xx, yy) << 16
+                            //      | zpixmap.get_green(xx, yy) << 8
+                            //      | zpixmap.get_blue(xx, yy);
                           }
                         else if (alpha < 255)
                           {
                             // Composite pixels.
                             int red = 0xff & (rgb >> 16);
-                            red = red * alpha
-                                     + (255 - alpha) * zpixmap.get_red(xx, yy);
+                            red = red * alpha + (255 - alpha) * currentRed;
                             red = red / 255;
                             int green = 0xff & (rgb >> 8);
-                            green = green * alpha
-                                   + (255 - alpha) * zpixmap.get_green(xx, yy);
+                            green = green * alpha + (255 - alpha) * currentGreen;
                             green = green / 255;
                             int blue = 0xff & rgb;
-                            blue = blue * alpha
-                                    + (255 - alpha) * zpixmap.get_blue(xx, yy);
+                            blue = blue * alpha + (255 - alpha) * currentBlue;
                             blue = blue / 255;
+                            
+                            currentRed = red;
+                            currentGreen = green;
+                            currentBlue = blue;
                             rgb = red << 16 | green << 8 | blue;
                           }
                         // else keep rgb value from source image.
 
-                        zpixmap.set(xx, yy, rgb);
+                        zpixmap.putRGB(xx, yy, currentRed, currentGreen, currentBlue);
                       }
                   }
                 xdrawable.put_image(xgc, zpixmap, x, y);
                 // We can't cache prerendered translucent images, because
                 // we never know how the background changes.
               }
+              catch (EscherUnsupportedScreenBitDepthException e)
+              {
+                e.printStackTrace();
+              }
+          }
             ret = true;
           }
       }
Index: gnu/java/awt/peer/x/XWindowPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/x/XWindowPeer.java,v
retrieving revision 1.8
diff -u -r1.8 XWindowPeer.java
--- gnu/java/awt/peer/x/XWindowPeer.java	19 May 2008 14:16:18 -0000	1.8
+++ gnu/java/awt/peer/x/XWindowPeer.java	5 May 2010 02:03:04 -0000
@@ -103,7 +103,7 @@
     int y = Math.max(window.getY(), 0);
     int w = Math.max(window.getWidth(), 1);
     int h = Math.max(window.getHeight(), 1);
-    xwindow = new Window(dev.getDisplay().default_root, x, y, w, h, 0, atts);
+    xwindow = new Window(dev.getDisplay().getRootWindow(), x, y, w, h, 0, atts);
     xwindow.select_input(standardSelect);
     
     dev.getEventPump().registerWindow(xwindow, window);
Index: gnu/java/awt/peer/x/ZPixmapDataBuffer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/x/ZPixmapDataBuffer.java,v
retrieving revision 1.2
diff -u -r1.2 ZPixmapDataBuffer.java
--- gnu/java/awt/peer/x/ZPixmapDataBuffer.java	20 Sep 2007 14:01:09 -0000	1.2
+++ gnu/java/awt/peer/x/ZPixmapDataBuffer.java	5 May 2010 02:03:04 -0000
@@ -1,6 +1,7 @@
 package gnu.java.awt.peer.x;
 
 import gnu.x11.Display;
+import gnu.x11.EscherUnsupportedScreenBitDepthException;
 import gnu.x11.image.ZPixmap;
 
 import java.awt.GraphicsEnvironment;
@@ -33,7 +34,14 @@
       GraphicsEnvironment.getLocalGraphicsEnvironment();
     XGraphicsDevice dev = (XGraphicsDevice) env.getDefaultScreenDevice();
     Display d = dev.getDisplay();
-    zpixmap = new ZPixmap(d, w, h, d.default_pixmap_format);
+    try
+    {
+      zpixmap = new ZPixmap(d, w, h, d.default_pixmap_format, d.getVisualInfo(d.display_no));
+    }
+    catch (EscherUnsupportedScreenBitDepthException e)
+    {
+      e.printStackTrace();
+    }
   }
 
   /**
@@ -43,20 +51,20 @@
    */
   ZPixmapDataBuffer(ZPixmap zpixmap)
   {
-    super(TYPE_BYTE, zpixmap.get_data_length());
+    super(TYPE_BYTE, zpixmap.getDataLength());
     this.zpixmap = zpixmap;
   }
 
   @Override
   public int getElem(int bank, int i)
   {
-    return 0xff & zpixmap.get_data_element(i);
+    return 0xff & zpixmap.getDataElement(i);
   }
 
   @Override
   public void setElem(int bank, int i, int val)
   {
-    zpixmap.set_data_element(i, (byte) val);
+    zpixmap.setDataElement(i, (byte) val);
   }
 
   ZPixmap getZPixmap()
Index: gnu/java/awt/peer/x/XImage.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/x/XImage.java,v
retrieving revision 1.6
diff -u -r1.6 XImage.java
--- gnu/java/awt/peer/x/XImage.java	1 Sep 2008 17:29:53 -0000	1.6
+++ gnu/java/awt/peer/x/XImage.java	5 May 2010 02:03:00 -0000
@@ -38,6 +38,7 @@
 
 package gnu.java.awt.peer.x;
 
+import gnu.x11.EscherUnsupportedScreenBitDepthException;
 import gnu.x11.Pixmap;
 import gnu.x11.image.ZPixmap;
 
@@ -146,6 +147,8 @@
 
       for (ImageConsumer consumer : this.consumers)
         {
+        try
+        {
           int width = XImage.this.getWidth(null);
           int height = XImage.this.getHeight(null);
           
@@ -158,12 +161,12 @@
                                      0xffffffff,
                                      gnu.x11.image.Image.Format.ZPIXMAP);
           
-          int size = zpixmap.get_data_length();
+          int size = zpixmap.getDataLength();
           System.out.println("size: " + size + ", w = " + width + ", h = " + height);
           
           int [] pixel = new int[size];
           for (int i = 0; i < size; i++)
-            pixel[i] = zpixmap.get_data_element(i);
+            pixel[i] = zpixmap.getDataLength();
 
           consumer.setHints(ImageConsumer.SINGLEPASS);
           
@@ -171,7 +174,11 @@
           consumer.setPixels(0, 0, width, height, model, pixel, 0, width);
           consumer.imageComplete(ImageConsumer.STATICIMAGEDONE);
         }
-      
+        catch (EscherUnsupportedScreenBitDepthException e)
+        {
+          e.printStackTrace();
+        }
+        }
       System.out.println("done!");
     }
   }

[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux