diff -r -up gcc.patched/libjava/gnu/awt/j2d/DirectRasterGraphics.java gcc/libjava/gnu/awt/j2d/DirectRasterGraphics.java --- gcc.patched/libjava/gnu/awt/j2d/DirectRasterGraphics.java 2002-12-02 11:45:17.000000000 -0500 +++ gcc/libjava/gnu/awt/j2d/DirectRasterGraphics.java 2002-12-02 11:15:06.000000000 -0500 @@ -61,7 +61,7 @@ public interface DirectRasterGraphics ex public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints); - public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints); + public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints, int translateX, int translateY); public void drawString(String str, int x, int y); diff -r -up gcc.patched/libjava/gnu/awt/j2d/IntegerGraphicsState.java gcc/libjava/gnu/awt/j2d/IntegerGraphicsState.java --- gcc.patched/libjava/gnu/awt/j2d/IntegerGraphicsState.java 2002-12-02 11:45:17.000000000 -0500 +++ gcc/libjava/gnu/awt/j2d/IntegerGraphicsState.java 2002-12-02 11:47:17.000000000 -0500 @@ -212,7 +212,7 @@ public class IntegerGraphicsState extend public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) { - if ((tx == 0) || (ty == 0)) + if ((tx == 0) && (ty == 0)) { directGfx.drawPolyline(xPoints, yPoints, nPoints); return; @@ -223,7 +223,7 @@ public class IntegerGraphicsState extend public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) { - if ((tx == 0) || (ty == 0)) + if ((tx == 0) && (ty == 0)) { directGfx.drawPolygon(xPoints, yPoints, nPoints); return; @@ -232,15 +232,11 @@ public class IntegerGraphicsState extend throw new UnsupportedOperationException("translate not implemented"); } - public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) + public void fillPolygon (int[] xPoints, int[] yPoints, int nPoints) { - if ((tx == 0) || (ty == 0)) - { - directGfx.fillPolygon(xPoints, yPoints, nPoints); - return; - } - - throw new UnsupportedOperationException("translate not implemented"); + // FIXME: remove tx & ty args once translation via AffineTransform is implemented + directGfx.fillPolygon (xPoints, yPoints, nPoints, tx, ty); + return; } public boolean drawImage(Image image, int x, int y, diff -r -up gcc.patched/libjava/gnu/awt/xlib/XGraphics.java gcc/libjava/gnu/awt/xlib/XGraphics.java --- gcc.patched/libjava/gnu/awt/xlib/XGraphics.java 2002-12-02 11:45:17.000000000 -0500 +++ gcc/libjava/gnu/awt/xlib/XGraphics.java 2002-12-02 11:14:33.000000000 -0500 @@ -177,9 +177,9 @@ public class XGraphics implements Clonea } public void fillPolygon(int[] xPoints, int[] yPoints, int - nPoints) + nPoints, int translateX, int translateY) { - throw new UnsupportedOperationException("not implemented"); + context.fillPolygon(xPoints, yPoints, nPoints, translateX, translateY); } public void drawString(String str, int x, int y) diff -r -up gcc.patched/libjava/gnu/gcj/xlib/GC.java gcc/libjava/gnu/gcj/xlib/GC.java --- gcc.patched/libjava/gnu/gcj/xlib/GC.java 2002-12-02 11:45:18.000000000 -0500 +++ gcc/libjava/gnu/gcj/xlib/GC.java 2002-12-02 11:13:58.000000000 -0500 @@ -84,6 +84,7 @@ public class GC implements Cloneable public native void drawRectangle(int x, int y, int w, int h); public native void fillRectangle(int x, int y, int w, int h); + public native void fillPolygon(int[] xPoints, int[] yPoints, int nPoints, int translateX, int translateY); /** * diff -r -up gcc.patched/libjava/gnu/gcj/xlib/natGC.cc gcc/libjava/gnu/gcj/xlib/natGC.cc --- gcc.patched/libjava/gnu/gcj/xlib/natGC.cc 2002-12-02 11:45:18.000000000 -0500 +++ gcc/libjava/gnu/gcj/xlib/natGC.cc 2002-12-02 11:13:16.000000000 -0500 @@ -10,7 +10,8 @@ details. */ #include -#include +#include +#include #include #include #include @@ -154,6 +155,24 @@ void gnu::gcj::xlib::GC::fillRectangle(j // no fast fail } +void gnu::gcj::xlib::GC::fillPolygon(jintArray xPoints, jintArray yPoints, jint nPoints, jint translateX, jint translateY) +{ + Display* display = target->getDisplay(); + ::Display* dpy = (::Display*) (display->display); + ::Drawable drawableXID = target->getXID(); + ::GC gc = (::GC) structure; + typedef ::XPoint xpoint; + std::vector points(nPoints+1); + for( int i=0; i