diff options
-rw-r--r-- | libjava/ChangeLog | 12 | ||||
-rw-r--r-- | libjava/gnu/awt/j2d/DirectRasterGraphics.java | 5 | ||||
-rw-r--r-- | libjava/gnu/awt/j2d/IntegerGraphicsState.java | 18 | ||||
-rw-r--r-- | libjava/gnu/awt/xlib/XGraphics.java | 8 | ||||
-rw-r--r-- | libjava/gnu/gcj/xlib/GC.java | 4 | ||||
-rw-r--r-- | libjava/gnu/gcj/xlib/natGC.cc | 24 |
6 files changed, 52 insertions, 19 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 081ce99..62f54b5 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,17 @@ 2003-01-15 Scott Gilbertson <scottg@mantatest.com> + * gnu/gcj/xlib/natGC.cc (fillPolygon): New method. + * gnu/gcj/xlib/GC.java (fillPolygon): Declare. + * gnu/awt/xlib/XGraphics.java (fillPolygon): Added translateX and + translateY arguments. Implement. + * gnu/awt/j2d/IntegerGraphicsState.java (fillPolygon): Pass + down translation arguments. + (drawPolyline, drawPolygon): Fix incorrect tests. + * gnu/awt/j2d/DirectRasterGraphics.java (fillPolygon): Added + translateX and translateY arguments. + +2003-01-15 Scott Gilbertson <scottg@mantatest.com> + * Makefile.in: Rebuilt. * Makefile.am (xlib_includes): New macro. (INCLUDES): Use it. diff --git a/libjava/gnu/awt/j2d/DirectRasterGraphics.java b/libjava/gnu/awt/j2d/DirectRasterGraphics.java index 8d25b88..28aad9b 100644 --- a/libjava/gnu/awt/j2d/DirectRasterGraphics.java +++ b/libjava/gnu/awt/j2d/DirectRasterGraphics.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj. @@ -61,7 +61,8 @@ public interface DirectRasterGraphics extends Cloneable 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 --git a/libjava/gnu/awt/j2d/IntegerGraphicsState.java b/libjava/gnu/awt/j2d/IntegerGraphicsState.java index 90a1a4d..bfea661 100644 --- a/libjava/gnu/awt/j2d/IntegerGraphicsState.java +++ b/libjava/gnu/awt/j2d/IntegerGraphicsState.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj. @@ -212,7 +212,7 @@ public class IntegerGraphicsState extends AbstractGraphicsState 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 extends AbstractGraphicsState 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 extends AbstractGraphicsState 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); } public boolean drawImage(Image image, int x, int y, diff --git a/libjava/gnu/awt/xlib/XGraphics.java b/libjava/gnu/awt/xlib/XGraphics.java index 27b07a2..90f5388 100644 --- a/libjava/gnu/awt/xlib/XGraphics.java +++ b/libjava/gnu/awt/xlib/XGraphics.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj. @@ -176,10 +176,10 @@ public class XGraphics implements Cloneable, DirectRasterGraphics throw new UnsupportedOperationException("not implemented"); } - public void fillPolygon(int[] xPoints, int[] yPoints, int - nPoints) + public void fillPolygon(int[] xPoints, int[] yPoints, int 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 --git a/libjava/gnu/gcj/xlib/GC.java b/libjava/gnu/gcj/xlib/GC.java index 6b33715..1806c2a 100644 --- a/libjava/gnu/gcj/xlib/GC.java +++ b/libjava/gnu/gcj/xlib/GC.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj. @@ -84,6 +84,8 @@ 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 --git a/libjava/gnu/gcj/xlib/natGC.cc b/libjava/gnu/gcj/xlib/natGC.cc index 66de35f..1a1bd58 100644 --- a/libjava/gnu/gcj/xlib/natGC.cc +++ b/libjava/gnu/gcj/xlib/natGC.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj. @@ -11,6 +11,7 @@ details. */ #include <X11/Xlib.h> #include <gcj/cni.h> +#include <gcj/array.h> #include <gnu/gcj/RawData.h> #include <java/lang/String.h> #include <java/awt/Rectangle.h> @@ -154,6 +155,27 @@ void gnu::gcj::xlib::GC::fillRectangle(jint x, jint y, jint w, jint h) // 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<xpoint> points(nPoints+1); + for (int i=0; i<nPoints; i++) + { + points[i].x = elements(xPoints)[i] + translateX; + points[i].y = elements(yPoints)[i] + translateY; + } + points[nPoints] = points[0]; + XFillPolygon(dpy, drawableXID, gc, &(points.front()), nPoints, + Complex, CoordModeOrigin); + // no fast fail +} + void gnu::gcj::xlib::GC::clearArea(jint x, jint y, jint w, jint h, jboolean exposures) { |