Search in sources :

Example 1 with AbstractEntity

use of com.willwinder.ugs.nbp.designer.entities.AbstractEntity in project Universal-G-Code-Sender by winder.

the class SvgReader method walk.

private void walk(Node node, Group group, AffineTransform transform, int level) {
    GraphicsNode graphicsNode = svgCanvas.getUpdateManager().getBridgeContext().getGraphicsNode(node);
    if (graphicsNode != null) {
        LOGGER.finest(StringUtils.leftPad("", level, "\t") + graphicsNode);
        AffineTransform groupTransform = new AffineTransform(transform);
        if (graphicsNode.getTransform() != null) {
            if (!graphicsNode.getTransform().isIdentity()) {
                groupTransform.concatenate(graphicsNode.getTransform());
            } else {
            }
        }
        if (graphicsNode instanceof CompositeGraphicsNode) {
            NodeList childNodes = node.getChildNodes();
            Group childGroup = group;
            if (((CompositeGraphicsNode) graphicsNode).getChildren().size() > 1) {
                childGroup = new Group();
                if (node.getAttributes() != null && node.getAttributes().getNamedItem("id") != null) {
                    Node id = node.getAttributes().getNamedItem("id");
                    childGroup.setName(childGroup.getName() + " (" + id.getFirstChild().getNodeValue() + ")");
                }
                group.addChild(childGroup);
            }
            for (int i = 0; i < childNodes.getLength(); i++) {
                walk(childNodes.item(i), childGroup, groupTransform, level + 1);
            }
        } else if (graphicsNode instanceof ShapeNode) {
            ShapeNode shapeNode = (ShapeNode) graphicsNode;
            Shape shape = shapeNode.getShape();
            AbstractEntity createdShape = null;
            if (shape instanceof ExtendedGeneralPath) {
                createdShape = parsePath((ExtendedGeneralPath) shape);
            } else if (shape instanceof Rectangle2D) {
                createdShape = parseRectangle((Rectangle2D) shape);
            } else if (shape instanceof Ellipse2D) {
                createdShape = parseEllipse((Ellipse2D) shape);
            } else {
                LOGGER.finest(shape.toString());
            }
            if (createdShape != null) {
                Node id = node.getAttributes().getNamedItem("id");
                if (id != null) {
                    createdShape.setName(createdShape.getName() + " (" + id.getFirstChild().getNodeValue() + ")");
                }
                Node desc = node.getAttributes().getNamedItem("desc");
                if (desc != null) {
                    createdShape.setDescription(desc.getFirstChild().getNodeValue());
                }
                createdShape.setTransform(groupTransform);
                group.addChild(createdShape);
            }
        }
    }
}
Also used : Group(com.willwinder.ugs.nbp.designer.entities.cuttable.Group) NodeList(org.w3c.dom.NodeList) CompositeGraphicsNode(org.apache.batik.gvt.CompositeGraphicsNode) Node(org.w3c.dom.Node) GraphicsNode(org.apache.batik.gvt.GraphicsNode) ShapeNode(org.apache.batik.gvt.ShapeNode) ExtendedGeneralPath(org.apache.batik.ext.awt.geom.ExtendedGeneralPath) AbstractEntity(com.willwinder.ugs.nbp.designer.entities.AbstractEntity) CompositeGraphicsNode(org.apache.batik.gvt.CompositeGraphicsNode) ShapeNode(org.apache.batik.gvt.ShapeNode) CompositeGraphicsNode(org.apache.batik.gvt.CompositeGraphicsNode) GraphicsNode(org.apache.batik.gvt.GraphicsNode)

Aggregations

AbstractEntity (com.willwinder.ugs.nbp.designer.entities.AbstractEntity)1 Group (com.willwinder.ugs.nbp.designer.entities.cuttable.Group)1 ExtendedGeneralPath (org.apache.batik.ext.awt.geom.ExtendedGeneralPath)1 CompositeGraphicsNode (org.apache.batik.gvt.CompositeGraphicsNode)1 GraphicsNode (org.apache.batik.gvt.GraphicsNode)1 ShapeNode (org.apache.batik.gvt.ShapeNode)1 Node (org.w3c.dom.Node)1 NodeList (org.w3c.dom.NodeList)1