PatchSet 4015 
Date: 2003/09/03 13:34:59
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
small fix for argument checking in java.awt.BasicStroke

Needed for StatCVS to proceed a little bit further. It still can't generate such 
images like
http://www.kaffe.org/~robilad/loc.png on kaffe due to the lack of swing and an 
UnsupportedOperationException
java.lang.UnsupportedOperationException
   at java.awt.image.ColorModel.createCompatibleSampleModel (ColorModel.java:617)
   at java.awt.image.ColorModel.createCompatibleWritableRaster (ColorModel.java:610)
   at java.awt.image.BufferedImage.<init> (BufferedImage.java:199)
   at com.jrefinery.chart.JFreeChart.createBufferedImage (source file unknown)
   at com.jrefinery.chart.ChartUtilities.writeChartAsPNG (source file unknown)
   at com.jrefinery.chart.ChartUtilities.saveChartAsPNG (source file unknown)
   at com.jrefinery.chart.ChartUtilities.saveChartAsPNG (source file unknown)
   at net.sf.statcvs.renderer.ChartRenderer.saveChartAsPng (ChartRenderer.java:58)
   at net.sf.statcvs.renderer.LOCChart.<init> (LOCChart.java:70)
   at net.sf.statcvs.output.HTMLOutput.createLOCChart (HTMLOutput.java:112)
   at net.sf.statcvs.output.ModulePage.getLOC (ModulePage.java:143)
   at net.sf.statcvs.output.ModulePage.printBody (ModulePage.java:85)
   at net.sf.statcvs.output.HTMLPage.createPage (HTMLPage.java:67)
   at net.sf.statcvs.output.ModulePage.<init> (ModulePage.java:74)
   at net.sf.statcvs.output.IndexPage.getIndexTree (IndexPage.java:136)
   at net.sf.statcvs.output.IndexPage.printBody (IndexPage.java:78)
   at net.sf.statcvs.output.HTMLPage.createPage (HTMLPage.java:67)
   at net.sf.statcvs.output.IndexPage.<init> (IndexPage.java:58)
   at net.sf.statcvs.output.HTMLOutput.createHTMLSuite (HTMLOutput.java:65)
   at net.sf.statcvs.Main.generateDefaultHTMLSuite (Main.java:165)
   at net.sf.statcvs.Main.execute (Main.java:94)
   at net.sf.statcvs.Main.main (Main.java:74)
   at java.lang.reflect.Method.invoke0 (Method.java)
   at java.lang.reflect.Method.invoke (Method.java:255)
   at kaffe.jar.ExecJarName.main (ExecJarName.java:67)
   at kaffe.jar.ExecJar.main (ExecJar.java:75)
but it's getting at least this far with Sun's swing 1.1.1 jar.

Members: 
        ChangeLog:1.1611->1.1612 
        libraries/javalib/java/awt/BasicStroke.java:1.2->1.3 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1611 kaffe/ChangeLog:1.1612
--- kaffe/ChangeLog:1.1611      Tue Sep  2 23:38:27 2003
+++ kaffe/ChangeLog     Wed Sep  3 13:34:59 2003
@@ -1,3 +1,8 @@
+2003-09-03  Dalibor Topic <[EMAIL PROTECTED]>
+
+       * libraries/javalib/java/awt/BasicStroke.java:
+       (BasicStroke) Fixed illegal argument checking to follow 1.4.2 spec.
+
 2003-09-02  Jim Pick  <[EMAIL PROTECTED]>
 
        * libraries/clib/net/PlainDatagramSocketImpl.c:
Index: kaffe/libraries/javalib/java/awt/BasicStroke.java
diff -u kaffe/libraries/javalib/java/awt/BasicStroke.java:1.2 
kaffe/libraries/javalib/java/awt/BasicStroke.java:1.3
--- kaffe/libraries/javalib/java/awt/BasicStroke.java:1.2       Sun Jan 12 19:56:22 
2003
+++ kaffe/libraries/javalib/java/awt/BasicStroke.java   Wed Sep  3 13:35:02 2003
@@ -67,7 +67,8 @@
    * @param join May be either JOIN_ROUND, JOIN_BEVEL, or JOIN_MITER.
    * @param miterlimit the limit to trim the miter join. The miterlimit must be
    * greater than or equal to 1.0f.
-   * @param dash The array representing the dashing pattern.
+   * @param dash The array representing the dashing pattern. There must be at
+   * least one non-zero entry.
    * @param dash_phase is negative and dash is not null.
    *
    * @exception IllegalArgumentException If one input parameter doesn't meet
@@ -76,13 +77,40 @@
   public BasicStroke(float width, int cap, int join, float miterlimit,
                      float[] dash, float dashPhase)
   {
-    if (width < 0 ||
-        miterlimit < 1.0f ||
-        cap < CAP_BUTT ||
-        cap > CAP_SQUARE ||
-        join < JOIN_MITER ||
-        join > JOIN_BEVEL)
-      throw new IllegalArgumentException();
+    if (width < 0.0f ) {
+      throw new IllegalArgumentException("width " + width + " < 0");
+    }
+    else if (cap < CAP_BUTT || cap > CAP_SQUARE) {
+      throw new IllegalArgumentException("cap " + cap + " out of range [" + CAP_BUTT 
+ ".." + CAP_SQUARE + "]");
+    }
+    else if (miterlimit < 1.0f && join == JOIN_MITER) {
+      throw new IllegalArgumentException("miterlimit " + miterlimit + " < 1.0f while 
join == JOIN_MITER");
+    }
+    else if (join < JOIN_MITER || join > JOIN_BEVEL) {
+      throw new IllegalArgumentException("join " + join + " out of range [" + 
JOIN_MITER + ".." + JOIN_BEVEL + "]");
+    }
+    else if (dashPhase < 0.0f && dash != null) {
+      throw new IllegalArgumentException("dashPhase " + dashPhase + " < 0.0f while 
dash != null");
+    }
+    else if (dash != null) {
+      if (dash.length == 0) {
+       throw new IllegalArgumentException("dash.length is 0");
+      }
+      else {
+       boolean allZero = true;
+
+       for ( int i = 0; i < dash.length; ++i) {
+         if (dash[i] != 0.0f) {
+           allZero = false;
+           break;
+         }
+       }
+
+       if (allZero) {
+         throw new IllegalArgumentException("all dashes are 0.0f");
+       }
+      }
+    }
 
     this.width = width;
     this.cap = cap;

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to