You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by de...@apache.org on 2001/11/14 21:03:32 UTC
cvs commit: xml-batik/sources/org/apache/batik/parser AngleParser.java LengthListParser.java LengthParser.java NumberParser.java PathParser.java PointsParser.java TransformListParser.java
deweese 01/11/14 12:03:32
Modified: sources/org/apache/batik/bridge BridgeContext.java
SVGUseElementBridge.java URIResolver.java
sources/org/apache/batik/dom/util XLinkSupport.java
sources/org/apache/batik/gvt/renderer
StrokingTextPainter.java
sources/org/apache/batik/parser AngleParser.java
LengthListParser.java LengthParser.java
NumberParser.java PathParser.java PointsParser.java
TransformListParser.java
Log:
1) New float parser that is much faster than Float.parseFloat(...) [it isn't
quite as accurate in a small number of cases it may give different
results].
2) Better error reporting on use (correctly identifies a missing xlink:href,
and when an href doesn't point at an element - used to say it points at
a document).
3) Few small changes to help Fop.
Revision Changes Path
1.30 +2 -2 xml-batik/sources/org/apache/batik/bridge/BridgeContext.java
Index: BridgeContext.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/BridgeContext.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- BridgeContext.java 2001/10/09 22:17:10 1.29
+++ BridgeContext.java 2001/11/14 20:03:31 1.30
@@ -45,7 +45,7 @@
* a SVG DOM tree such as the current viewport or the user agent.
*
* @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
- * @version $Id: BridgeContext.java,v 1.29 2001/10/09 22:17:10 deweese Exp $
+ * @version $Id: BridgeContext.java,v 1.30 2001/11/14 20:03:31 deweese Exp $
*/
public class BridgeContext implements ErrorConstants {
@@ -272,7 +272,7 @@
URIResolver ur = new URIResolver(document, documentLoader);
Element ref = ur.getElement(uri, e);
if (ref == null) {
- throw new BridgeException(e, ERR_URI_REFERENCE_A_DOCUMENT,
+ throw new BridgeException(e, ERR_URI_BAD_TARGET,
new Object[] {uri});
} else {
return ref;
1.14 +5 -1 xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java
Index: SVGUseElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- SVGUseElementBridge.java 2001/11/13 15:20:58 1.13
+++ SVGUseElementBridge.java 2001/11/14 20:03:31 1.14
@@ -33,7 +33,7 @@
* Bridge class for the <use> element.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGUseElementBridge.java,v 1.13 2001/11/13 15:20:58 tkormann Exp $
+ * @version $Id: SVGUseElementBridge.java,v 1.14 2001/11/14 20:03:31 deweese Exp $
*/
public class SVGUseElementBridge extends AbstractSVGBridge
implements GraphicsNodeBridge, ErrorConstants {
@@ -65,6 +65,10 @@
// get the referenced element
String uri = XLinkSupport.getXLinkHref(e);
+ if (uri.length() == 0)
+ throw new BridgeException(e, ERR_URI_MALFORMED,
+ new Object[] {uri});
+
Element refElement = ctx.getReferencedElement(e, uri);
SVGOMDocument document
= (SVGOMDocument)e.getOwnerDocument();
1.14 +2 -2 xml-batik/sources/org/apache/batik/bridge/URIResolver.java
Index: URIResolver.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/URIResolver.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- URIResolver.java 2001/10/24 14:52:36 1.13
+++ URIResolver.java 2001/11/14 20:03:31 1.14
@@ -28,7 +28,7 @@
* This class is used to resolve the URI that can be found in a SVG document.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: URIResolver.java,v 1.13 2001/10/24 14:52:36 tkormann Exp $
+ * @version $Id: URIResolver.java,v 1.14 2001/11/14 20:03:31 deweese Exp $
*/
public class URIResolver {
/**
@@ -113,7 +113,7 @@
// pDocURL.getPort() + " - " +
// pDocURL.getHost() + " - " +
// pDocURL.getProtocol());
-
+
// Check if the rest of the URL matches...
// if so then return the referenced element.
1.2 +2 -2 xml-batik/sources/org/apache/batik/dom/util/XLinkSupport.java
Index: XLinkSupport.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/util/XLinkSupport.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XLinkSupport.java 2000/10/10 18:39:31 1.1
+++ XLinkSupport.java 2001/11/14 20:03:32 1.2
@@ -15,7 +15,7 @@
* This class provides support for XLink features.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: XLinkSupport.java,v 1.1 2000/10/10 18:39:31 hillion Exp $
+ * @version $Id: XLinkSupport.java,v 1.2 2001/11/14 20:03:32 deweese Exp $
*/
public class XLinkSupport {
/**
@@ -129,7 +129,7 @@
* Returns the value of the 'xlink:href' attribute of the given element.
*/
public static String getXLinkHref(Element elt) {
- return elt.getAttributeNS(XLINK_NAMESPACE_URI, "href");
+ return elt.getAttributeNS(XLINK_NAMESPACE_URI, "href");
}
/**
1.22 +3 -3 xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java
Index: StrokingTextPainter.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- StrokingTextPainter.java 2001/11/09 15:32:57 1.21
+++ StrokingTextPainter.java 2001/11/14 20:03:32 1.22
@@ -60,7 +60,7 @@
* @see org.apache.batik.gvt.text.GVTAttributedCharacterIterator
*
* @author <a href="bill.haneman@ireland.sun.com>Bill Haneman</a>
- * @version $Id: StrokingTextPainter.java,v 1.21 2001/11/09 15:32:57 deweese Exp $
+ * @version $Id: StrokingTextPainter.java,v 1.22 2001/11/14 20:03:32 deweese Exp $
*/
public class StrokingTextPainter extends BasicTextPainter {
@@ -133,7 +133,7 @@
System.out.println("");
}
- private List getTextRuns(TextNode node, AttributedCharacterIterator aci) {
+ public List getTextRuns(TextNode node, AttributedCharacterIterator aci) {
List textRuns = node.getTextRuns();
if (textRuns != null) {
return textRuns;
@@ -1384,7 +1384,7 @@
* Inner convenience class for associating a TextLayout for
* sub-spans, and the ACI which iterates over that subspan.
*/
- class TextRun {
+ public class TextRun {
private AttributedCharacterIterator aci;
private TextSpanLayout layout;
1.4 +3 -28 xml-batik/sources/org/apache/batik/parser/AngleParser.java
Index: AngleParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/AngleParser.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AngleParser.java 2001/11/08 23:02:43 1.3
+++ AngleParser.java 2001/11/14 20:03:32 1.4
@@ -15,7 +15,7 @@
* values.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: AngleParser.java,v 1.3 2001/11/08 23:02:43 deweese Exp $
+ * @version $Id: AngleParser.java,v 1.4 2001/11/14 20:03:32 deweese Exp $
*/
public class AngleParser extends NumberParser {
@@ -141,34 +141,9 @@
new Object[] { new Integer(current) });
}
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
}
angleHandler.endAngle();
- }
-
- /**
- * Implements {@link NumberParser#readNumber()}.
- */
- protected void readNumber() throws ParseException {
- bufferSize = 0;
- bufferize();
- for (;;) {
- read();
- switch (current) {
- case 0x20:
- case 0x9:
- case 0xD:
- case 0xA:
- case 'd':
- case 'g':
- case 'r':
- return;
- default:
- if (current == -1) {
- return;
- }
- bufferize();
- }
- }
}
}
1.4 +3 -2 xml-batik/sources/org/apache/batik/parser/LengthListParser.java
Index: LengthListParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/LengthListParser.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- LengthListParser.java 2001/11/08 23:02:43 1.3
+++ LengthListParser.java 2001/11/14 20:03:32 1.4
@@ -16,7 +16,7 @@
* list values.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: LengthListParser.java,v 1.3 2001/11/08 23:02:43 deweese Exp $
+ * @version $Id: LengthListParser.java,v 1.4 2001/11/14 20:03:32 deweese Exp $
*/
public class LengthListParser extends LengthParser {
@@ -69,7 +69,8 @@
}
}
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
}
((LengthListHandler)lengthHandler).endLengthList();
}
1.4 +203 -155 xml-batik/sources/org/apache/batik/parser/LengthParser.java
Index: LengthParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/LengthParser.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- LengthParser.java 2001/11/08 23:02:43 1.3
+++ LengthParser.java 2001/11/14 20:03:32 1.4
@@ -15,9 +15,9 @@
* values.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: LengthParser.java,v 1.3 2001/11/08 23:02:43 deweese Exp $
+ * @version $Id: LengthParser.java,v 1.4 2001/11/14 20:03:32 deweese Exp $
*/
-public class LengthParser extends NumberParser {
+public class LengthParser extends AbstractParser {
/**
* The length handler used to report parse events.
@@ -25,11 +25,6 @@
protected LengthHandler lengthHandler;
/**
- * Whether the last character was a 'e' or 'E'.
- */
- protected boolean eRead;
-
- /**
* Creates a new LengthParser.
*/
public LengthParser() {
@@ -59,23 +54,24 @@
}
protected void doParse() throws ParseException {
- lengthHandler.startLength();
+ lengthHandler.startLength();
- read();
- skipSpaces();
+ read();
+ skipSpaces();
- try {
- parseLength();
+ try {
+ parseLength();
- skipSpaces();
- if (current != -1) {
- reportError("end.of.stream.expected",
- new Object[] { new Integer(current) });
- }
- } catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
- }
- lengthHandler.endLength();
+ skipSpaces();
+ if (current != -1) {
+ reportError("end.of.stream.expected",
+ new Object[] { new Integer(current) });
+ }
+ } catch (NumberFormatException e) {
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ }
+ lengthHandler.endLength();
}
/**
@@ -84,142 +80,194 @@
protected void parseLength()
throws ParseException,
NumberFormatException {
- float f = parseFloat();
+ // readNumber();
+ // float ret = Float.parseFloat(getBufferContent());
+
+ int mant =0;
+ int mantDig =0;
+ boolean mantPos=true;
+ boolean mantRead=false;
+ int exp =0;
+ int expDig =0;
+ int expAdj =0;
+ boolean expPos =true;
+
+ int eRead = 0;
+ boolean eJustRead = false;
+ boolean first = true;
+ boolean done = false;
+ boolean unitDone = false;
+ boolean dotRead = false;
+
+ while (!done) {
+ switch (current) {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (eRead==0) {
+ // Still creating mantisa
+ mantRead = true;
+ // Only keep first 9 digits rest won't count anyway...
+ if (mantDig >= 9) {
+ if (!dotRead)
+ expAdj++;
+ break;
+ }
+ if (dotRead) expAdj--;
+ if ((mantDig != 0) || (current != '0')) {
+ // Ignore leading zeros.
+ mantDig++;
+ mant = mant*10+(current-'0');
+ }
+ } else {
+ // Working on exp.
+ if (expDig >= 3) break;
+ if ((expDig != 0) || (current != '0')) {
+ // Ignore leading zeros.
+ expDig++;
+ expDig = expDig*10+(current-'0');
+ }
+ }
+ eJustRead = false;
+ break;
+ case 'e': case 'E':
+ if (eRead > 1) {
+ done = true;
+ break;
+ }
+ eJustRead = true;
+ eRead++;
+ break;
+ case 'm': // Confusing case between 10e5 and 10em
+ case 'x':
+ if (!eJustRead) {
+ done = true;
+ break;
+ }
+ if (current == 'm')
+ lengthHandler.em();
+ else
+ lengthHandler.ex();
+ done = true;
+ unitDone = true;
+ read(); // eat the 'm' or 'x' char.
+ break;
+ case '.':
+ if ((eRead!=0) || dotRead) {
+ done=true;
+ break;
+ }
+ dotRead = true;
+ break;
+ case '+':
+ if ((!first) && (!eJustRead))
+ done=true;
+ eJustRead = false;
+ break;
+ case '-':
+ if (first) mantPos = false;
+ else if (eJustRead) expPos = false;
+ else done = true;
+ eJustRead = false;
+ break;
+
+ case 10:
+ line++;
+ column =1;
+ done = true;
+ break;
+
+ default:
+ done=true;
+ break;
+ }
+ if (!done) {
+ first = false;
+ if ((position == count) && (!fillBuffer())) {
+ current = -1;
+ break;
+ }
+ current = buffer[position++];
+ column++;
+ }
+ }
+
+ if (!mantRead)
+ throw new NumberFormatException
+ ("No digits where number expected '" + ((char)current) + "'");
+
+ if (!expPos) exp = -exp;
+ exp += expAdj; // account for digits after 'dot'.
+ if (!mantPos) mant = -mant;
- lengthHandler.lengthValue(f);
+ lengthHandler.lengthValue(NumberParser.buildFloat(mant, exp));
- s: if (eRead || current != -1) {
- switch (current) {
- case 0xD: case 0xA: case 0x20: case 0x9:
- break s;
- }
-
- if (eRead) {
- switch (current) {
- case 'm':
- lengthHandler.em();
- read();
- break;
- case 'x':
- lengthHandler.ex();
- read();
- break;
- default:
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- }
- } else {
- switch (current) {
- case 'p':
- read();
- switch (current) {
- case 'c':
- lengthHandler.pc();
- read();
- break;
- case 't':
- lengthHandler.pt();
- read();
- break;
- case 'x':
- lengthHandler.px();
- read();
- break;
- default:
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- }
- break;
- case 'i':
- read();
- if (current != 'n') {
- reportError("character.expected",
- new Object[] { new Character('n'),
- new Integer(current) });
- break;
- }
- lengthHandler.in();
- read();
- break;
- case 'c':
- read();
- if (current != 'm') {
- reportError("character.expected",
- new Object[] { new Character('m'),
- new Integer(current) });
- break;
- }
- lengthHandler.cm();
- read();
- break;
- case 'm':
- read();
- if (current != 'm') {
- reportError("character.expected",
- new Object[] { new Character('m'),
- new Integer(current) });
- break;
- }
- lengthHandler.mm();
- read();
- break;
- case '%':
- lengthHandler.percentage();
- read();
- break;
- default:
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- }
- }
- }
- }
+ if(unitDone)
+ return;
- /**
- * Implements {@link NumberParser#readNumber()}.
- */
- protected void readNumber() throws ParseException {
- bufferSize = 0;
- bufferize();
- eRead = false;
- for (;;) {
- read();
- switch (current) {
- case 0x20:
- case 0x9:
- case 0xD:
- case 0xA:
- case 'c':
- case 'i':
- case 'p':
- case '%':
- return;
- case 'e': case 'E':
- eRead = true;
- bufferize();
- break;
- case 'm':
- if (!eRead) {
- return;
- }
- case 'x':
- bufferSize--;
- return;
- case '+':
- case '-':
- if (!eRead) {
- return;
- }
- eRead = false;
- bufferize();
- break;
- default:
- if (current == -1) {
- return;
- }
- eRead = false;
- bufferize();
- }
- }
+ switch (current) {
+ case -1: case 0xD: case 0xA: case 0x20: case 0x9:
+ return;
+ case 'p':
+ read();
+ switch (current) {
+ case 'c':
+ lengthHandler.pc();
+ read();
+ break;
+ case 't':
+ lengthHandler.pt();
+ read();
+ break;
+ case 'x':
+ lengthHandler.px();
+ read();
+ break;
+ default:
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ }
+ break;
+
+ case 'i':
+ read();
+ if (current != 'n') {
+ reportError("character.expected",
+ new Object[] { new Character('n'),
+ new Integer(current) });
+ break;
+ }
+ lengthHandler.in();
+ read();
+ break;
+ case 'c':
+ read();
+ if (current != 'm') {
+ reportError("character.expected",
+ new Object[] { new Character('m'),
+ new Integer(current) });
+ break;
+ }
+ lengthHandler.cm();
+ read();
+ break;
+ case 'm':
+ read();
+ if (current != 'm') {
+ reportError("character.expected",
+ new Object[] { new Character('m'),
+ new Integer(current) });
+ break;
+ }
+ lengthHandler.mm();
+ read();
+ break;
+ case '%':
+ lengthHandler.percentage();
+ read();
+ break;
+ default:
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ }
}
}
1.2 +127 -36 xml-batik/sources/org/apache/batik/parser/NumberParser.java
Index: NumberParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/NumberParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NumberParser.java 2001/01/03 14:17:39 1.1
+++ NumberParser.java 2001/11/14 20:03:32 1.2
@@ -15,53 +15,144 @@
* This class represents a parser with support for numbers.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: NumberParser.java,v 1.1 2001/01/03 14:17:39 hillion Exp $
+ * @version $Id: NumberParser.java,v 1.2 2001/11/14 20:03:32 deweese Exp $
*/
public abstract class NumberParser extends AbstractParser {
/**
- * The buffer used for numbers.
- */
- protected char[] buffer = new char[16];
-
- /**
- * The buffer size.
- */
- protected int bufferSize;
-
- /**
- * Reads a number from the current stream and put it in the buffer.
- */
- protected abstract void readNumber() throws ParseException;
-
- /**
* Parses the content of the buffer and converts it to a float.
*/
protected float parseFloat()
- throws NumberFormatException,
- ParseException {
- readNumber();
- return Float.parseFloat(getBufferContent());
+ throws NumberFormatException,
+ ParseException {
+ // readNumber();
+ // float ret = Float.parseFloat(getBufferContent());
+
+ int mant =0;
+ int mantDig =0;
+ boolean mantPos=true;
+ boolean mantRead=false;
+ int exp =0;
+ int expDig =0;
+ int expAdj =0;
+ boolean expPos =true;
+
+ boolean eRead = false;
+ boolean eJustRead = false;
+ boolean first = true;
+ boolean done = false;
+ boolean dotRead = false;
+
+ while (!done) {
+ switch (current) {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (!eRead) {
+ // Still creating mantisa
+ mantRead = true;
+ // Only keep first 9 digits rest won't count anyway...
+ if (mantDig >= 9) {
+ if (!dotRead)
+ expAdj++;
+ break;
+ }
+ if (dotRead) expAdj--;
+ if ((mantDig != 0) || (current != '0')) {
+ // Ignore leading zeros.
+ mantDig++;
+ mant = mant*10+(current-'0');
+ }
+ } else {
+ // Working on exp.
+ if (expDig >= 3) break;
+ if ((expDig != 0) || (current != '0')) {
+ // Ignore leading zeros.
+ expDig++;
+ expDig = expDig*10+(current-'0');
+ }
+ }
+ eJustRead = false;
+ break;
+ case 'e': case 'E':
+ if (eRead) {
+ done = true;
+ break;
+ }
+ eJustRead = true;
+ eRead = true;
+ break;
+ case '.':
+ if (eRead || dotRead) {
+ done=true;
+ break;
+ }
+ dotRead = true;
+ break;
+ case '+':
+ if ((!first) && (!eJustRead))
+ done=true;
+ eJustRead = false;
+ break;
+ case '-':
+ if (first) mantPos = false;
+ else if (eJustRead) expPos = false;
+ else done = true;
+ eJustRead = false;
+ break;
+
+ case 10:
+ line++;
+ column =1;
+ done = true;
+ break;
+ default:
+ done=true;
+ break;
+ }
+ if (!done) {
+ first = false;
+ if ((position == count) && (!fillBuffer())) {
+ current = -1;
+ break;
+ }
+ current = buffer[position++];
+ column++;
+ }
+ }
+ if (!mantRead)
+ throw new NumberFormatException
+ ("No digits where number expected '" + ((char)current) + "'");
+
+ if (!expPos) exp = -exp;
+ exp += expAdj; // account for digits after 'dot'.
+ if (!mantPos) mant = -mant;
+
+ return buildFloat(mant, exp);
}
- /**
- * Returns the content of the buffer.
- */
- protected String getBufferContent() {
- return new String(buffer, 0, bufferSize);
+ public static float buildFloat(int mant, int exp) {
+ if ((exp < -125) || (mant==0)) return 0f;
+ if (exp > 128) {
+ if (mant > 0) return Float.POSITIVE_INFINITY;
+ else return Float.NEGATIVE_INFINITY;
+ }
+
+ if (exp == 0) return mant;
+
+ if (mant >= 1<<26)
+ mant++; // round up trailing bits if they will be dropped.
+
+ if (exp > 0) return mant*pow10[exp];
+ else return mant/pow10[-exp];
}
/**
- * Adds the current character to the buffer.
+ * Array of powers of ten.
*/
- protected void bufferize() {
- if (bufferSize >= buffer.length) {
- char[] t = new char[buffer.length * 2];
- for (int i = 0; i < bufferSize; i++) {
- t[i] = buffer[i];
- }
- buffer = t;
- }
- buffer[bufferSize++] = (char)current;
- }
+ private static final float pow10[] = new float [128];
+ static {
+ for (int i=0; i<pow10.length; i++) {
+ pow10[i] = (float)Math.pow(10, i);
+ }
+ };
}
1.8 +52 -107 xml-batik/sources/org/apache/batik/parser/PathParser.java
Index: PathParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/PathParser.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PathParser.java 2001/11/08 23:02:43 1.7
+++ PathParser.java 2001/11/14 20:03:32 1.8
@@ -15,7 +15,7 @@
* attribute values.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: PathParser.java,v 1.7 2001/11/08 23:02:43 deweese Exp $
+ * @version $Id: PathParser.java,v 1.8 2001/11/14 20:03:32 deweese Exp $
*/
public class PathParser extends NumberParser {
@@ -139,7 +139,7 @@
}
pathHandler.endPath();
- }
+ }
/**
* Parses a 'm' command.
@@ -155,7 +155,8 @@
pathHandler.movetoRel(x, y);
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
}
skipCommaSpaces();
@@ -181,9 +182,9 @@
pathHandler.linetoRel(x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
return;
}
break;
@@ -208,7 +209,8 @@
pathHandler.movetoAbs(x, y);
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
}
skipCommaSpaces();
@@ -234,8 +236,8 @@
pathHandler.linetoAbs(x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -263,8 +265,8 @@
float x = parseFloat();
pathHandler.linetoHorizontalRel(x);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -292,8 +294,8 @@
float x = parseFloat();
pathHandler.linetoHorizontalAbs(x);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -321,8 +323,8 @@
float x = parseFloat();
pathHandler.linetoVerticalRel(x);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -350,8 +352,8 @@
float x = parseFloat();
pathHandler.linetoVerticalAbs(x);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -394,10 +396,10 @@
pathHandler.curvetoCubicRel(x1, y1, x2, y2, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
- return;
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
+ return;
}
skipCommaSpaces();
}
@@ -434,10 +436,10 @@
pathHandler.curvetoCubicAbs(x1, y1, x2, y2, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
- return;
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
+ return;
}
skipCommaSpaces();
}
@@ -470,9 +472,9 @@
pathHandler.curvetoQuadraticRel(x1, y1, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
return;
}
skipCommaSpaces();
@@ -506,8 +508,8 @@
pathHandler.curvetoQuadraticAbs(x1, y1, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -542,9 +544,9 @@
pathHandler.curvetoCubicSmoothRel(x2, y2, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
return;
}
skipCommaSpaces();
@@ -578,8 +580,8 @@
pathHandler.curvetoCubicSmoothAbs(x2, y2, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipSubPath();
return;
}
@@ -610,9 +612,9 @@
pathHandler.curvetoQuadraticSmoothRel(x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
return;
}
skipCommaSpaces();
@@ -642,10 +644,10 @@
pathHandler.curvetoQuadraticSmoothAbs(x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
- return;
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
+ return;
}
skipCommaSpaces();
}
@@ -717,10 +719,10 @@
pathHandler.arcRel(rx, ry, ax, laf, sf, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
- return;
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
+ return;
}
skipCommaSpaces();
}
@@ -791,10 +793,10 @@
pathHandler.arcAbs(rx, ry, ax, laf, sf, x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
- skipSubPath();
- return;
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipSubPath();
+ return;
}
skipCommaSpaces();
}
@@ -814,63 +816,6 @@
return;
}
read();
- }
- }
- }
-
- /**
- * Implements {@link NumberParser#readNumber()}.
- */
- protected void readNumber() throws ParseException {
- bufferSize = 0;
- bufferize();
- boolean eRead = false;
- boolean eJustRead = false;
- boolean dotRead = current == '.';
-
- for (;;) {
- read();
- switch (current) {
- case 0x20:
- case 0x9:
- case 0xD:
- case 0xA:
- case 'm': case 'M':
- case 'c': case 'C':
- case 's': case 'S':
- case 'q': case 'Q':
- case 't': case 'T':
- case 'l': case 'L':
- case 'h': case 'H':
- case 'v': case 'V':
- case 'a': case 'A':
- case 'z': case 'Z':
- case ',':
- case -1:
- return;
- case 'e': case 'E':
- if (eRead) {
- return;
- }
- eJustRead = true;
- eRead = true;
- bufferize();
- break;
- case '.':
- if (eRead || dotRead) {
- return;
- }
- dotRead = true;
- bufferize();
- break;
- case '+':
- case '-':
- if (!eJustRead) {
- return;
- }
- default:
- eJustRead = false;
- bufferize();
}
}
}
1.4 +3 -42 xml-batik/sources/org/apache/batik/parser/PointsParser.java
Index: PointsParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/PointsParser.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PointsParser.java 2001/11/08 23:02:43 1.3
+++ PointsParser.java 2001/11/14 20:03:32 1.4
@@ -15,7 +15,7 @@
* attribute values (used with polyline and polygon elements).
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: PointsParser.java,v 1.3 2001/11/08 23:02:43 deweese Exp $
+ * @version $Id: PointsParser.java,v 1.4 2001/11/14 20:03:32 deweese Exp $
*/
public class PointsParser extends NumberParser {
@@ -78,51 +78,12 @@
pointsHandler.point(x, y);
} catch (NumberFormatException e) {
- reportError("float.format",
- new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
}
skipCommaSpaces();
}
pointsHandler.endPoints();
- }
-
- /**
- * Implements {@link NumberParser#readNumber()}.
- */
- protected void readNumber() throws ParseException {
- bufferSize = 0;
- bufferize();
- eRead = false;
- for (;;) {
- read();
- switch (current) {
- case 0x20:
- case 0x9:
- case 0xD:
- case 0xA:
- case ',':
- eRead = false;
- return;
- case 'e': case 'E':
- eRead = true;
- bufferize();
- break;
- case '+':
- case '-':
- if (!eRead) {
- return;
- }
- eRead = false;
- bufferize();
- break;
- default:
- if (current == -1) {
- return;
- }
- eRead = false;
- bufferize();
- }
- }
}
}
1.5 +11 -33 xml-batik/sources/org/apache/batik/parser/TransformListParser.java
Index: TransformListParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/TransformListParser.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TransformListParser.java 2001/11/08 23:02:43 1.4
+++ TransformListParser.java 2001/11/14 20:03:32 1.5
@@ -15,7 +15,7 @@
* attribute values.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: TransformListParser.java,v 1.4 2001/11/08 23:02:43 deweese Exp $
+ * @version $Id: TransformListParser.java,v 1.5 2001/11/14 20:03:32 deweese Exp $
*/
public class TransformListParser extends NumberParser {
@@ -193,7 +193,8 @@
transformListHandler.matrix(a, b, c, d, e, f);
} catch (NumberFormatException ex) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipTransform();
}
}
@@ -287,7 +288,8 @@
transformListHandler.rotate(theta, cx, cy);
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipTransform();
}
}
@@ -403,7 +405,8 @@
transformListHandler.translate(tx, ty);
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipTransform();
}
}
@@ -478,7 +481,8 @@
transformListHandler.scale(sx, sy);
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipTransform();
}
}
@@ -552,7 +556,8 @@
transformListHandler.skewY(sk);
}
} catch (NumberFormatException e) {
- reportError("float.format", new Object[] { getBufferContent() });
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
skipTransform();
}
}
@@ -571,33 +576,6 @@
if (current == -1) {
break loop;
}
- }
- }
- }
-
- /**
- * Implements {@link NumberParser#readNumber()}.
- */
- protected void readNumber() throws ParseException {
- bufferSize = 0;
- bufferize();
- for (;;) {
- read();
- switch (current) {
- case 0x20:
- case 0x9:
- case 0xD:
- case 0xA:
- case ',':
- case ')':
- return;
- default:
- if (current == -1) {
- reportError("end.of.stream", new Object[] {});
- skipTransform();
- return;
- }
- bufferize();
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org