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 hi...@apache.org on 2001/02/05 08:48:41 UTC
cvs commit: xml-batik/sources/org/apache/batik/parser PreserveAspectRatioParser.java
hillion 01/02/04 23:48:41
Modified: sources/org/apache/batik/bridge CSSUtilities.java
ConcreteGVTBuilder.java SVGMarkerElementBridge.java
sources/org/apache/batik/dom/svg
SVGOMToBeImplementedElement.java
sources/org/apache/batik/parser
PreserveAspectRatioParser.java
Log:
External markers now handled correctly.
Revision Changes Path
1.8 +75 -10 xml-batik/sources/org/apache/batik/bridge/CSSUtilities.java
Index: CSSUtilities.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/CSSUtilities.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- CSSUtilities.java 2001/02/03 00:52:29 1.7
+++ CSSUtilities.java 2001/02/05 07:48:40 1.8
@@ -16,17 +16,18 @@
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
import java.util.Map;
-import org.apache.batik.bridge.Bridge;
-import org.apache.batik.bridge.BridgeContext;
-import org.apache.batik.bridge.ClipBridge;
-import org.apache.batik.bridge.FilterBridge;
-import org.apache.batik.bridge.IllegalAttributeValueException;
-import org.apache.batik.bridge.MarkerBridge;
-import org.apache.batik.bridge.MaskBridge;
-import org.apache.batik.bridge.PaintBridge;
+import org.apache.batik.css.AbstractViewCSS;
+import org.apache.batik.css.CSSOMReadOnlyStyleDeclaration;
+import org.apache.batik.css.CSSOMReadOnlyValue;
+import org.apache.batik.css.value.ImmutableString;
import org.apache.batik.dom.svg.SVGOMDocument;
+import org.apache.batik.dom.util.XLinkSupport;
import org.apache.batik.gvt.CompositeGraphicsNode;
import org.apache.batik.gvt.CompositeShapePainter;
import org.apache.batik.gvt.FillShapePainter;
@@ -48,6 +49,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.w3c.dom.css.CSSPrimitiveValue;
import org.w3c.dom.css.CSSStyleDeclaration;
import org.w3c.dom.css.CSSValue;
@@ -61,7 +63,7 @@
* A collection of utility methods involving CSS.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: CSSUtilities.java,v 1.7 2001/02/03 00:52:29 vhardy Exp $
+ * @version $Id: CSSUtilities.java,v 1.8 2001/02/05 07:48:40 hillion Exp $
*/
public class CSSUtilities implements SVGConstants {
@@ -71,6 +73,69 @@
protected CSSUtilities() {}
/**
+ * Partially computes the style in the use tree and set it in
+ * the target tree.
+ * Note: This method must be called only when 'def' has been added
+ * to the tree.
+ */
+ public static void computeStyleAndURIs(Element use, ViewCSS uv,
+ Element def, ViewCSS dv, URL url) {
+ String href = XLinkSupport.getXLinkHref(def);
+
+ if (!href.equals("")) {
+ try {
+ XLinkSupport.setXLinkHref(def, new URL(url, href).toString());
+ } catch (MalformedURLException e) {
+ }
+ }
+
+ CSSOMReadOnlyStyleDeclaration usd;
+ AbstractViewCSS uview = (AbstractViewCSS)uv;
+
+ usd = (CSSOMReadOnlyStyleDeclaration)uview.computeStyle(use, null);
+ try {
+ updateURIs(usd, url);
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ ((AbstractViewCSS)dv).setComputedStyle(def, null, usd);
+
+ for (Node un = use.getFirstChild(), dn = def.getFirstChild();
+ un != null;
+ un = un.getNextSibling(), dn = dn.getNextSibling()) {
+ if (un.getNodeType() == Node.ELEMENT_NODE) {
+ computeStyleAndURIs((Element)un, uv, (Element)dn, dv, url);
+ }
+ }
+ }
+
+ /**
+ * Updates the URIs in the given style declaration.
+ */
+ protected static void updateURIs(CSSOMReadOnlyStyleDeclaration sd, URL url)
+ throws MalformedURLException {
+ int len = sd.getLength();
+ for (int i = 0; i < len; i++) {
+ String name = sd.item(i);
+ CSSValue val = sd.getLocalPropertyCSSValue(name);
+ if (val != null &&
+ val.getCssValueType() ==
+ CSSPrimitiveValue.CSS_PRIMITIVE_VALUE) {
+ CSSPrimitiveValue pv = (CSSPrimitiveValue)val;
+ if (pv.getPrimitiveType() == CSSPrimitiveValue.CSS_URI) {
+ CSSOMReadOnlyValue v =
+ new CSSOMReadOnlyValue
+ (new ImmutableString(CSSPrimitiveValue.CSS_URI,
+ new URL(url, pv.getStringValue()).toString()));
+ sd.setPropertyCSSValue(name, v,
+ sd.getLocalPropertyPriority(name),
+ sd.getLocalPropertyOrigin(name));
+ }
+ }
+ }
+ }
+
+ /**
* Returns the viewport
*/
public static Rectangle2D convertEnableBackground(SVGElement svgElement,
@@ -657,7 +722,7 @@
}
MarkerBridge markerBridge = (MarkerBridge)bridge;
- SVGOMDocument doc = (SVGOMDocument)markerElement.getOwnerDocument();
+ //SVGOMDocument doc = (SVGOMDocument)markerElement.getOwnerDocument();
ViewCSS v = ctx.getViewCSS();
// ctx.setViewCSS((ViewCSS)doc.getDefaultView());
Marker marker = markerBridge.buildMarker(ctx,
1.3 +5 -71 xml-batik/sources/org/apache/batik/bridge/ConcreteGVTBuilder.java
Index: ConcreteGVTBuilder.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/ConcreteGVTBuilder.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ConcreteGVTBuilder.java 2001/02/01 13:45:46 1.2
+++ ConcreteGVTBuilder.java 2001/02/05 07:48:40 1.3
@@ -8,23 +8,11 @@
package org.apache.batik.bridge;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.List;
-import org.apache.batik.bridge.BridgeContext;
-import org.apache.batik.bridge.BridgeException;
-import org.apache.batik.bridge.BuilderException;
-import org.apache.batik.bridge.GVTBuilder;
-import org.apache.batik.bridge.GraphicsNodeBridge;
-
-import org.apache.batik.css.AbstractViewCSS;
import org.apache.batik.css.HiddenChildElement;
import org.apache.batik.css.AbstractViewCSS;
-import org.apache.batik.css.CSSOMReadOnlyStyleDeclaration;
-import org.apache.batik.css.CSSOMReadOnlyValue;
import org.apache.batik.css.HiddenChildElement;
-import org.apache.batik.css.value.ImmutableString;
import org.apache.batik.dom.svg.SVGOMDocument;
import org.apache.batik.dom.util.XLinkSupport;
import org.apache.batik.gvt.GraphicsNode;
@@ -60,7 +48,7 @@
* @author <a href="mailto:etissandier@ilog.fr">Emmanuel Tissandier</a>
* @author <a href="mailto:cjolif@ilog.fr">Christophe Jolif</a>
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: ConcreteGVTBuilder.java,v 1.2 2001/02/01 13:45:46 tkormann Exp $
+ * @version $Id: ConcreteGVTBuilder.java,v 1.3 2001/02/05 07:48:40 hillion Exp $
*/
public class ConcreteGVTBuilder implements GVTBuilder, SVGConstants {
/**
@@ -243,9 +231,10 @@
doc = (SVGOMDocument)elt.getOwnerDocument();
SVGOMDocument d;
d = (SVGOMDocument)e.getOwnerDocument();
- computeStyleAndURIs(elt, (ViewCSS)doc.getDefaultView(),
- inst, (ViewCSS)d.getDefaultView(),
- ((SVGOMDocument)doc).getURLObject());
+ CSSUtilities.computeStyleAndURIs
+ (elt, (ViewCSS)doc.getDefaultView(),
+ inst, (ViewCSS)d.getDefaultView(),
+ ((SVGOMDocument)doc).getURLObject());
}
buildGraphicsNode(ctx,
@@ -292,60 +281,5 @@
throw new BuilderException(e, ex.getMessage());
}
}
-
-/**
- * Partially computes the style in the use tree and set it in
- * the target tree.
- */
-public void computeStyleAndURIs(Element use, ViewCSS uv,
- Element def, ViewCSS dv, URL url)
- throws MalformedURLException {
- String href = XLinkSupport.getXLinkHref(def);
-
- if (!href.equals("")) {
- XLinkSupport.setXLinkHref(def, new URL(url, href).toString());
- }
-
- CSSOMReadOnlyStyleDeclaration usd;
- AbstractViewCSS uview = (AbstractViewCSS)uv;
-
- usd = (CSSOMReadOnlyStyleDeclaration)uview.computeStyle(use, null);
- updateURIs(usd, url);
- ((AbstractViewCSS)dv).setComputedStyle(def, null, usd);
-
- for (Node un = use.getFirstChild(), dn = def.getFirstChild();
- un != null;
- un = un.getNextSibling(), dn = dn.getNextSibling()) {
- if (un.getNodeType() == Node.ELEMENT_NODE) {
- computeStyleAndURIs((Element)un, uv, (Element)dn, dv, url);
- }
- }
-}
-
-/**
- * Updates the URIs in the given style declaration.
- */
-protected void updateURIs(CSSOMReadOnlyStyleDeclaration sd, URL url)
- throws MalformedURLException {
- int len = sd.getLength();
- for (int i = 0; i < len; i++) {
- String name = sd.item(i);
- CSSValue val = sd.getLocalPropertyCSSValue(name);
- if (val != null &&
- val.getCssValueType() ==
- CSSPrimitiveValue.CSS_PRIMITIVE_VALUE) {
- CSSPrimitiveValue pv = (CSSPrimitiveValue)val;
- if (pv.getPrimitiveType() == CSSPrimitiveValue.CSS_URI) {
- CSSOMReadOnlyValue v =
- new CSSOMReadOnlyValue
- (new ImmutableString(CSSPrimitiveValue.CSS_URI,
- new URL(url, pv.getStringValue()).toString()));
- sd.setPropertyCSSValue(name, v,
- sd.getLocalPropertyPriority(name),
- sd.getLocalPropertyOrigin(name));
- }
- }
- }
-}
}
1.2 +75 -22 xml-batik/sources/org/apache/batik/bridge/SVGMarkerElementBridge.java
Index: SVGMarkerElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGMarkerElementBridge.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SVGMarkerElementBridge.java 2001/02/01 16:41:51 1.1
+++ SVGMarkerElementBridge.java 2001/02/05 07:48:40 1.2
@@ -12,16 +12,17 @@
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
-import org.apache.batik.bridge.BridgeContext;
-import org.apache.batik.bridge.GVTBuilder;
-import org.apache.batik.bridge.IllegalAttributeValueException;
-import org.apache.batik.bridge.Viewport;
+import org.apache.batik.bridge.resources.Messages;
+import org.apache.batik.css.CSSOMReadOnlyStyleDeclaration;
+import org.apache.batik.css.CSSOMReadOnlyValue;
+import org.apache.batik.css.HiddenChildElement;
+import org.apache.batik.css.value.ValueConstants;
+import org.apache.batik.dom.svg.SVGOMDocument;
import org.apache.batik.gvt.CompositeGraphicsNode;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.batik.gvt.GraphicsNodeRenderContext;
import org.apache.batik.gvt.Marker;
import org.apache.batik.gvt.filter.GraphicsNodeRable8Bit;
-import org.apache.batik.bridge.resources.Messages;
import org.apache.batik.util.SVGConstants;
import org.apache.batik.util.UnitProcessor;
@@ -32,12 +33,14 @@
import org.w3c.dom.Node;
import org.w3c.dom.css.CSSPrimitiveValue;
import org.w3c.dom.css.CSSStyleDeclaration;
+import org.w3c.dom.css.ViewCSS;
import org.w3c.dom.svg.SVGElement;
+
/**
* Turns a marker element into a <tt>Marker</tt> object
*
* @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
- * @version $Id: SVGMarkerElementBridge.java,v 1.1 2001/02/01 16:41:51 vhardy Exp $
+ * @version $Id: SVGMarkerElementBridge.java,v 1.2 2001/02/05 07:48:40 hillion Exp $
*/
public class SVGMarkerElementBridge implements MarkerBridge {
/**
@@ -48,8 +51,58 @@
public Marker buildMarker(BridgeContext ctx,
Element markerElement,
Element paintedElement){
- CSSStyleDeclaration cssDecl
- = ctx.getViewCSS().getComputedStyle(markerElement, null);
+ // CSS setup.
+ SVGOMDocument md = (SVGOMDocument)markerElement.getOwnerDocument();
+ SVGOMDocument pd = (SVGOMDocument)paintedElement.getOwnerDocument();
+
+ ViewCSS viewCSS = (ViewCSS)pd.getDefaultView();
+
+ Element inst;
+ if (md == pd) {
+ inst = (Element)markerElement.cloneNode(true);
+ } else {
+ inst = (Element)paintedElement.getOwnerDocument().importNode
+ (markerElement, true);
+ }
+ Element g = pd.createElementNS(SVG_NAMESPACE_URI, SVG_G_TAG);
+ ((HiddenChildElement)g).setParentElement(paintedElement);
+
+ CSSOMReadOnlyStyleDeclaration gsd =
+ (CSSOMReadOnlyStyleDeclaration)viewCSS.getComputedStyle(g, null);
+
+ gsd.setPropertyCSSValue
+ (CSS_MARKER_PROPERTY,
+ new CSSOMReadOnlyValue(ValueConstants.NONE_VALUE),
+ gsd.getLocalPropertyPriority(CSS_MARKER_PROPERTY),
+ gsd.getLocalPropertyOrigin(CSS_MARKER_PROPERTY));
+ gsd.setPropertyCSSValue
+ (CSS_MARKER_START_PROPERTY,
+ new CSSOMReadOnlyValue(ValueConstants.NONE_VALUE),
+ gsd.getLocalPropertyPriority(CSS_MARKER_START_PROPERTY),
+ gsd.getLocalPropertyOrigin(CSS_MARKER_START_PROPERTY));
+ gsd.setPropertyCSSValue
+ (CSS_MARKER_MID_PROPERTY,
+ new CSSOMReadOnlyValue(ValueConstants.NONE_VALUE),
+ gsd.getLocalPropertyPriority(CSS_MARKER_START_PROPERTY),
+ gsd.getLocalPropertyOrigin(CSS_MARKER_START_PROPERTY));
+ gsd.setPropertyCSSValue
+ (CSS_MARKER_END_PROPERTY,
+ new CSSOMReadOnlyValue(ValueConstants.NONE_VALUE),
+ gsd.getLocalPropertyPriority(CSS_MARKER_START_PROPERTY),
+ gsd.getLocalPropertyOrigin(CSS_MARKER_START_PROPERTY));
+
+
+ g.appendChild(inst);
+
+ if (md != pd) {
+ CSSUtilities.computeStyleAndURIs
+ (markerElement, (ViewCSS)md.getDefaultView(),
+ inst, viewCSS, ((SVGOMDocument)md).getURLObject());
+ }
+
+ CSSOMReadOnlyStyleDeclaration cssDecl
+ = (CSSOMReadOnlyStyleDeclaration)viewCSS.getComputedStyle(inst, null);
+
UnitProcessor.Context uctx
= new DefaultUnitProcessorContext(ctx,
cssDecl);
@@ -60,7 +113,7 @@
// build the GVT tree that represents the marker
boolean hasChildren = false;
- for(Node node=markerElement.getFirstChild();
+ for(Node node=inst.getFirstChild();
node != null;
node = node.getNextSibling()) {
@@ -84,37 +137,37 @@
}
// Extract the Marker's reference point coordinates
- String s = markerElement.getAttributeNS(null, SVG_REFX_ATTRIBUTE);
+ String s = inst.getAttributeNS(null, SVG_REFX_ATTRIBUTE);
float refX = 0;
if (s.length() == 0) {
s = SVG_DEFAULT_VALUE_MARKER_REFX;
}
- refX = SVGUtilities.svgToUserSpace(markerElement,
+ refX = SVGUtilities.svgToUserSpace(inst,
SVG_REFX_ATTRIBUTE, s,
uctx,
UnitProcessor.HORIZONTAL_LENGTH);
// parse the refY attribute, (default is 0)
- s = markerElement.getAttributeNS(null, SVG_REFY_ATTRIBUTE);
+ s = inst.getAttributeNS(null, SVG_REFY_ATTRIBUTE);
float refY = 0;
if (s.length() == 0) {
s = SVG_DEFAULT_VALUE_MARKER_REFY;
}
- refY = SVGUtilities.svgToUserSpace(markerElement,
+ refY = SVGUtilities.svgToUserSpace(inst,
SVG_REFY_ATTRIBUTE, s,
uctx,
UnitProcessor.VERTICAL_LENGTH);
// Extract the Marker's width/height
- s = markerElement.getAttributeNS(null, SVG_MARKER_WIDTH_ATTRIBUTE);
+ s = inst.getAttributeNS(null, SVG_MARKER_WIDTH_ATTRIBUTE);
float markerWidth = 0;
if (s.length() == 0) {
s = SVG_DEFAULT_VALUE_MARKER_MARKER_WIDTH;
}
- markerWidth= SVGUtilities.svgToUserSpace(markerElement,
+ markerWidth= SVGUtilities.svgToUserSpace(inst,
SVG_MARKER_WIDTH_ATTRIBUTE, s,
uctx,
UnitProcessor.HORIZONTAL_LENGTH);
@@ -132,13 +185,13 @@
new Object[] {s}));
}
- s = markerElement.getAttributeNS(null, SVG_MARKER_HEIGHT_ATTRIBUTE);
+ s = inst.getAttributeNS(null, SVG_MARKER_HEIGHT_ATTRIBUTE);
float markerHeight = 0;
if (s.length() == 0) {
s = SVG_DEFAULT_VALUE_MARKER_MARKER_HEIGHT;
}
- markerHeight = SVGUtilities.svgToUserSpace(markerElement,
+ markerHeight = SVGUtilities.svgToUserSpace(inst,
SVG_MARKER_HEIGHT_ATTRIBUTE, s,
uctx,
UnitProcessor.HORIZONTAL_LENGTH);
@@ -157,7 +210,7 @@
}
// Extract the Marker's orient
- s = markerElement.getAttributeNS(null, SVG_ORIENT_ATTRIBUTE);
+ s = inst.getAttributeNS(null, SVG_ORIENT_ATTRIBUTE);
double orient = 0;
boolean autoOrient = false;
if (s.length() == 0) {
@@ -187,7 +240,7 @@
}
// Extract the marker units
- s = markerElement.getAttributeNS(null,
+ s = inst.getAttributeNS(null,
SVG_MARKER_UNITS_ATTRIBUTE);
if (s.length() == 0) {
@@ -197,16 +250,16 @@
String markerUnits = s;
// Extract the viewBox and preserveAspectRatio
- s = markerElement.getAttributeNS(null, ATTR_VIEW_BOX);
+ s = inst.getAttributeNS(null, ATTR_VIEW_BOX);
boolean hasViewBox = false;
// viewBox -> viewPort (0, 0, markerWidth, markerHeight)
AffineTransform preserveAspectRatioTransform = null;
- s = markerElement.getAttributeNS(null, ATTR_VIEW_BOX);
+ s = inst.getAttributeNS(null, ATTR_VIEW_BOX);
if (s.length() > 0){
preserveAspectRatioTransform
= SVGUtilities.getPreserveAspectRatioTransform
- ((SVGElement)markerElement,
+ ((SVGElement)inst,
markerWidth,
markerHeight);
}
1.5 +44 -1 xml-batik/sources/org/apache/batik/dom/svg/SVGOMToBeImplementedElement.java
Index: SVGOMToBeImplementedElement.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMToBeImplementedElement.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SVGOMToBeImplementedElement.java 2000/12/06 21:23:36 1.4
+++ SVGOMToBeImplementedElement.java 2001/02/05 07:48:40 1.5
@@ -17,7 +17,7 @@
* been put in
*
* @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
- * @version $Id: SVGOMToBeImplementedElement.java,v 1.4 2000/12/06 21:23:36 hillion Exp $
+ * @version $Id: SVGOMToBeImplementedElement.java,v 1.5 2001/02/05 07:48:40 hillion Exp $
*/
public class SVGOMToBeImplementedElement
extends SVGGraphicsElement {
@@ -58,4 +58,47 @@
protected Node newNode() {
return new SVGOMToBeImplementedElement();
}
+
+ /**
+ * Exports this node to the given document.
+ */
+ protected Node export(Node n, AbstractDocument d) {
+ super.export(n, d);
+ SVGOMToBeImplementedElement ae = (SVGOMToBeImplementedElement)n;
+ ae.localName = localName;
+ return n;
+ }
+
+ /**
+ * Deeply exports this node to the given document.
+ */
+ protected Node deepExport(Node n, AbstractDocument d) {
+ super.deepExport(n, d);
+ SVGOMToBeImplementedElement ae = (SVGOMToBeImplementedElement)n;
+ ae.localName = localName;
+ return n;
+ }
+
+ /**
+ * Copy the fields of the current node into the given node.
+ * @param n a node of the type of this.
+ */
+ protected Node copyInto(Node n) {
+ super.copyInto(n);
+ SVGOMToBeImplementedElement ae = (SVGOMToBeImplementedElement)n;
+ ae.localName = localName;
+ return n;
+ }
+
+ /**
+ * Deeply copy the fields of the current node into the given node.
+ * @param n a node of the type of this.
+ */
+ protected Node deepCopyInto(Node n) {
+ super.deepCopyInto(n);
+ SVGOMToBeImplementedElement ae = (SVGOMToBeImplementedElement)n;
+ ae.localName = localName;
+ return n;
+ }
+
}
1.4 +264 -264 xml-batik/sources/org/apache/batik/parser/PreserveAspectRatioParser.java
Index: PreserveAspectRatioParser.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/parser/PreserveAspectRatioParser.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PreserveAspectRatioParser.java 2001/02/02 08:04:47 1.3
+++ PreserveAspectRatioParser.java 2001/02/05 07:48:40 1.4
@@ -15,7 +15,7 @@
* attribute values.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: PreserveAspectRatioParser.java,v 1.3 2001/02/02 08:04:47 hillion Exp $
+ * @version $Id: PreserveAspectRatioParser.java,v 1.4 2001/02/05 07:48:40 hillion Exp $
*/
public class PreserveAspectRatioParser extends AbstractParser {
@@ -72,14 +72,15 @@
protected void parsePreserveAspectRatio() throws ParseException {
preserveAspectRatioHandler.startPreserveAspectRatio();
- s: if (current == 'n') {
+ align: switch (current) {
+ case 'n':
read();
if (current != 'o') {
reportError("character.expected",
new Object[] { new Character('o'),
- new Integer(current) });
+ new Integer(current) });
skipIdentifier();
- break s;
+ break align;
}
read();
if (current != 'n') {
@@ -87,7 +88,7 @@
new Object[] { new Character('n'),
new Integer(current) });
skipIdentifier();
- break s;
+ break align;
}
read();
if (current != 'e') {
@@ -95,284 +96,283 @@
new Object[] { new Character('e'),
new Integer(current) });
skipIdentifier();
- break s;
+ break align;
}
read();
skipSpaces();
preserveAspectRatioHandler.none();
- } else {
- align: switch (current) {
- case 'x':
- read();
- if (current != 'M') {
- reportError("character.expected",
- new Object[] { new Character('M'),
+ break;
+
+ case 'x':
+ read();
+ if (current != 'M') {
+ reportError("character.expected",
+ new Object[] { new Character('M'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ read();
+ switch (current) {
+ case 'a':
+ read();
+ if (current != 'x') {
+ reportError("character.expected",
+ new Object[] { new Character('x'),
+ new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ read();
+ if (current != 'Y') {
+ reportError("character.expected",
+ new Object[] { new Character('Y'),
+ new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ read();
+ if (current != 'M') {
+ reportError("character.expected",
+ new Object[] { new Character('M'),
new Integer(current) });
- skipIdentifier();
- break;
- }
- read();
- switch (current) {
- case 'a':
- read();
- if (current != 'x') {
- reportError("character.expected",
- new Object[] { new Character('x'),
+ skipIdentifier();
+ break align;
+ }
+ read();
+ switch (current) {
+ case 'a':
+ read();
+ if (current != 'x') {
+ reportError("character.expected",
+ new Object[] { new Character('x'),
new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- if (current != 'Y') {
- reportError("character.expected",
- new Object[] { new Character('Y'),
+ skipIdentifier();
+ break align;
+ }
+ preserveAspectRatioHandler.xMaxYMax();
+ read();
+ break;
+ case 'i':
+ read();
+ switch (current) {
+ case 'd':
+ preserveAspectRatioHandler.xMaxYMid();
+ read();
+ break;
+ case 'n':
+ preserveAspectRatioHandler.xMaxYMin();
+ read();
+ break;
+ default:
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ }
+ break;
+ case 'i':
+ read();
+ switch (current) {
+ case 'd':
+ read();
+ if (current != 'Y') {
+ reportError("character.expected",
+ new Object[] { new Character('Y'),
new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- if (current != 'M') {
- reportError("character.expected",
- new Object[] { new Character('M'),
+ skipIdentifier();
+ break align;
+ }
+ read();
+ if (current != 'M') {
+ reportError("character.expected",
+ new Object[] { new Character('M'),
new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- switch (current) {
- case 'a':
- read();
- if (current != 'x') {
- reportError("character.expected",
- new Object[] { new Character('x'),
- new Integer(current) });
- skipIdentifier();
- break align;
- }
- preserveAspectRatioHandler.xMaxYMax();
- read();
- break;
- case 'i':
- read();
- switch (current) {
- case 'd':
- preserveAspectRatioHandler.xMaxYMid();
- read();
- break;
- case 'n':
- preserveAspectRatioHandler.xMaxYMin();
- read();
- break;
- default:
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- skipIdentifier();
- break align;
- }
- }
- break;
- case 'i':
- read();
- switch (current) {
- case 'd':
- read();
- if (current != 'Y') {
- reportError("character.expected",
- new Object[] { new Character('Y'),
- new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- if (current != 'M') {
- reportError("character.expected",
- new Object[] { new Character('M'),
- new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- switch (current) {
- case 'a':
- read();
- if (current != 'x') {
- reportError
- ("character.expected",
- new Object[] { new Character('x'),
+ skipIdentifier();
+ break align;
+ }
+ read();
+ switch (current) {
+ case 'a':
+ read();
+ if (current != 'x') {
+ reportError
+ ("character.expected",
+ new Object[] { new Character('x'),
new Integer(current) });
skipIdentifier();
break align;
- }
- preserveAspectRatioHandler.xMidYMax();
- read();
- break;
- case 'i':
- read();
- switch (current) {
- case 'd':
+ }
+ preserveAspectRatioHandler.xMidYMax();
+ read();
+ break;
+ case 'i':
+ read();
+ switch (current) {
+ case 'd':
preserveAspectRatioHandler.xMidYMid();
read();
break;
- case 'n':
- preserveAspectRatioHandler.xMidYMin();
- read();
- break;
+ case 'n':
+ preserveAspectRatioHandler.xMidYMin();
+ read();
+ break;
default:
reportError("character.unexpected",
new Object[] { new Integer(current) });
skipIdentifier();
break align;
- }
- }
- break;
- case 'n':
- read();
- if (current != 'Y') {
- reportError("character.expected",
- new Object[] { new Character('Y'),
- new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- if (current != 'M') {
- reportError("character.expected",
- new Object[] { new Character('M'),
- new Integer(current) });
- skipIdentifier();
- break align;
- }
- read();
- switch (current) {
- case 'a':
- read();
- if (current != 'x') {
- reportError
- ("character.expected",
- new Object[] { new Character('x'),
- new Integer(current) });
- skipIdentifier();
- break align;
- }
- preserveAspectRatioHandler.xMinYMax();
- read();
- break;
- case 'i':
- read();
- switch (current) {
- case 'd':
- preserveAspectRatioHandler.xMinYMid();
- read();
- break;
- case 'n':
- preserveAspectRatioHandler.xMinYMin();
- read();
- break;
- default:
- reportError
- ("character.unexpected",
- new Object[] { new Integer(current) });
- skipIdentifier();
- break align;
- }
- }
- break;
- default:
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- skipIdentifier();
- break align;
- }
- break;
- default:
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- skipIdentifier();
- }
- break;
- default:
- if (current != -1) {
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- skipIdentifier();
- }
- }
-
- skipCommaSpaces();
-
- switch (current) {
- case 'm':
- read();
- if (current != 'e') {
- reportError("character.expected",
- new Object[] { new Character('e'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- read();
- if (current != 'e') {
- reportError("character.expected",
- new Object[] { new Character('e'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- read();
- if (current != 't') {
- reportError("character.expected",
- new Object[] { new Character('t'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- preserveAspectRatioHandler.meet();
- read();
- break;
- case 's':
- read();
- if (current != 'l') {
- reportError("character.expected",
- new Object[] { new Character('l'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- read();
- if (current != 'i') {
- reportError("character.expected",
- new Object[] { new Character('i'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- read();
- if (current != 'c') {
- reportError("character.expected",
- new Object[] { new Character('c'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- read();
- if (current != 'e') {
- reportError("character.expected",
- new Object[] { new Character('e'),
- new Integer(current) });
- skipIdentifier();
- break;
- }
- preserveAspectRatioHandler.slice();
- read();
- break;
- default:
- if (current != -1) {
- reportError("character.unexpected",
- new Object[] { new Integer(current) });
- skipIdentifier();
- }
- }
- }
+ }
+ }
+ break;
+ case 'n':
+ read();
+ if (current != 'Y') {
+ reportError("character.expected",
+ new Object[] { new Character('Y'),
+ new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ read();
+ if (current != 'M') {
+ reportError("character.expected",
+ new Object[] { new Character('M'),
+ new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ read();
+ switch (current) {
+ case 'a':
+ read();
+ if (current != 'x') {
+ reportError
+ ("character.expected",
+ new Object[] { new Character('x'),
+ new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ preserveAspectRatioHandler.xMinYMax();
+ read();
+ break;
+ case 'i':
+ read();
+ switch (current) {
+ case 'd':
+ preserveAspectRatioHandler.xMinYMid();
+ read();
+ break;
+ case 'n':
+ preserveAspectRatioHandler.xMinYMin();
+ read();
+ break;
+ default:
+ reportError
+ ("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ }
+ break;
+ default:
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipIdentifier();
+ break align;
+ }
+ break;
+ default:
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipIdentifier();
+ }
+ break;
+ default:
+ if (current != -1) {
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipIdentifier();
+ }
+ }
+
+ skipCommaSpaces();
+
+ switch (current) {
+ case 'm':
+ read();
+ if (current != 'e') {
+ reportError("character.expected",
+ new Object[] { new Character('e'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ read();
+ if (current != 'e') {
+ reportError("character.expected",
+ new Object[] { new Character('e'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ read();
+ if (current != 't') {
+ reportError("character.expected",
+ new Object[] { new Character('t'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ preserveAspectRatioHandler.meet();
+ read();
+ break;
+ case 's':
+ read();
+ if (current != 'l') {
+ reportError("character.expected",
+ new Object[] { new Character('l'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ read();
+ if (current != 'i') {
+ reportError("character.expected",
+ new Object[] { new Character('i'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ read();
+ if (current != 'c') {
+ reportError("character.expected",
+ new Object[] { new Character('c'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ read();
+ if (current != 'e') {
+ reportError("character.expected",
+ new Object[] { new Character('e'),
+ new Integer(current) });
+ skipIdentifier();
+ break;
+ }
+ preserveAspectRatioHandler.slice();
+ read();
+ break;
+ default:
+ if (current != -1) {
+ reportError("character.unexpected",
+ new Object[] { new Integer(current) });
+ skipIdentifier();
+ }
+ }
skipSpaces();
if (current != -1) {