keiron 2002/08/01 23:44:46 Modified: src/org/apache/fop/image/analyser EPSReader.java Log: workaround for eps files that have invalid float bounding box values float values are rounded off according to the spec the %%HiResBoundingBox should be used instead for floating poitn values Submitted by: Torsten Erler <[EMAIL PROTECTED]> Revision Changes Path 1.6 +14 -6 xml-fop/src/org/apache/fop/image/analyser/EPSReader.java Index: EPSReader.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/EPSReader.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- EPSReader.java 19 May 2002 16:39:08 -0000 1.5 +++ EPSReader.java 2 Aug 2002 06:44:46 -0000 1.6 @@ -170,20 +170,29 @@ } private int readLongString(EPSImage.EPSData data, long[] mbbox, int i, int idx) { - while (idx < data.epsFile.length && (data.epsFile[idx] == 32)) - idx++; + while (idx < data.epsFile.length && (data.epsFile[idx] == 32)) { + idx++; + } int nidx = idx; + // check also for ANSI46(".") to identify floating point values while (nidx < data.epsFile.length && ((data.epsFile[nidx] >= 48 && data.epsFile[nidx] <= 57) || - (data.epsFile[nidx] == 45))) + (data.epsFile[nidx] == 45) || (data.epsFile[nidx] == 46) )) { nidx++; + } byte[] num = new byte[nidx - idx]; System.arraycopy(data.epsFile, idx, num, 0, nidx - idx); String ns = new String(num); - mbbox[i] = Long.parseLong(ns); + + //if( ns.indexOf(".") != -1 ) { + // do something like logging a warning + //} + + // then parse the double and round off to the next math. Integer + mbbox[i] = (long) Math.ceil( Double.parseDouble( ns ) ); return (1 + nidx - idx); } @@ -191,6 +200,5 @@ public String getMimeType() { return "image/eps"; } - }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]