package org.newdawn.slick.svg.inkscape; import org.newdawn.slick.geom.Ellipse; import org.newdawn.slick.geom.Shape; import org.newdawn.slick.geom.Transform; import org.newdawn.slick.svg.Diagram; import org.newdawn.slick.svg.Figure; import org.newdawn.slick.svg.Loader; import org.newdawn.slick.svg.NonGeometricData; import org.newdawn.slick.svg.ParsingException; import org.w3c.dom.Element; /** * Processor for <ellipse> and <path> nodes marked as arcs * * @author kevin */ public class EllipseProcessor implements ElementProcessor { /** * @see org.newdawn.slick.svg.inkscape.ElementProcessor#process(org.newdawn.slick.svg.Loader, org.w3c.dom.Element, org.newdawn.slick.svg.Diagram, org.newdawn.slick.geom.Transform) */ public void process(Loader loader, Element element, Diagram diagram, Transform t) throws ParsingException { Transform transform = Util.getTransform(element); transform = new Transform(t, transform); float x = Util.getFloatAttribute(element,"cx"); float y = Util.getFloatAttribute(element,"cy"); float rx = Util.getFloatAttribute(element,"rx"); float ry = Util.getFloatAttribute(element,"ry"); Ellipse ellipse = new Ellipse(x,y,rx,ry); Shape shape = ellipse.transform(transform); NonGeometricData data = Util.getNonGeometricData(element); data.addAttribute("cx", ""+x); data.addAttribute("cy", ""+y); data.addAttribute("rx", ""+rx); data.addAttribute("ry", ""+ry); diagram.addFigure(new Figure(Figure.ELLIPSE, shape, data, transform)); } /** * @see org.newdawn.slick.svg.inkscape.ElementProcessor#handles(org.w3c.dom.Element) */ public boolean handles(Element element) { if (element.getNodeName().equals("ellipse")) { return true; } if (element.getNodeName().equals("path")) { if ("arc".equals(element.getAttributeNS(Util.SODIPODI, "type"))) { return true; } } return false; } }