Hi,

The updateBufferedImage() method calls in BufferedImageGraphics didn't
take into account the possibility that pixels might have been shifted
(ie, the shiftDrawCalls field in CairoGraphics2D).

This little patch extends the update region in these cases.

Cheers,
Francis


2006-10-17  Francis Kung  <[EMAIL PROTECTED]>

        * gnu/java/awt/peer/gtk/BufferedImageGraphics.java (draw): Extend
updated
        region to account for pixel-shifting.
        * gnu/java/awt/peer/gtk/CairoGraphics2D.java (shiftDrawCalls): Made
        proctected.

Index: gnu/java/awt/peer/gtk/BufferedImageGraphics.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/BufferedImageGraphics.java,v
retrieving revision 1.13
diff -u -r1.13 BufferedImageGraphics.java
--- gnu/java/awt/peer/gtk/BufferedImageGraphics.java	17 Oct 2006 14:53:37 -0000	1.13
+++ gnu/java/awt/peer/gtk/BufferedImageGraphics.java	17 Oct 2006 18:55:43 -0000
@@ -248,7 +248,11 @@
       {
         super.draw(s);
         Rectangle r = s.getBounds();
-        updateBufferedImage(r.x, r.y, r.width, r.height);
+        
+        if (shiftDrawCalls)
+          updateBufferedImage(r.x, r.y, r.width+1, r.height+1);
+        else
+          updateBufferedImage(r.x, r.y, r.width, r.height);
       }
     else
       {
Index: gnu/java/awt/peer/gtk/CairoGraphics2D.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,v
retrieving revision 1.44
diff -u -r1.44 CairoGraphics2D.java
--- gnu/java/awt/peer/gtk/CairoGraphics2D.java	11 Oct 2006 20:14:59 -0000	1.44
+++ gnu/java/awt/peer/gtk/CairoGraphics2D.java	17 Oct 2006 18:55:43 -0000
@@ -176,7 +176,7 @@
    * coords be shifted to land on 0.5-pixel boundaries, in order to land on
    * "middle of pixel" coordinates and light up complete pixels. 
    */
-  private boolean shiftDrawCalls = false;
+  protected boolean shiftDrawCalls = false;
 
   /**
    * Keep track if the first clip to be set, which is restored on setClip(null);

Reply via email to