Search in sources :

Example 1 with SVGDocument

use of net.sf.latexdraw.parser.svg.SVGDocument in project latexdraw by arnobl.

the class SVGGroup method toSVG.

@Override
SVGElement toSVG(@NotNull final SVGDocument doc) {
    if (shape.isEmpty()) {
        return null;
    }
    final SVGElement root = new SVGGElement(doc);
    final List<Shape> shapes = shape.getShapes();
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_TYPE, LNamespace.XML_TYPE_GROUP);
    root.setAttribute(SVGAttributes.SVG_ID, getSVGID());
    shapes.stream().map(f -> shapeProducer.createSVGElement(f, doc)).forEach(newChild -> root.appendChild(newChild));
    return root;
}
Also used : Group(net.sf.latexdraw.model.api.shape.Group) ShapeFactory(net.sf.latexdraw.model.ShapeFactory) List(java.util.List) Shape(net.sf.latexdraw.model.api.shape.Shape) NodeList(org.w3c.dom.NodeList) LNamespace(net.sf.latexdraw.util.LNamespace) SVGDocument(net.sf.latexdraw.parser.svg.SVGDocument) SVGGElement(net.sf.latexdraw.parser.svg.SVGGElement) SVGAttributes(net.sf.latexdraw.parser.svg.SVGAttributes) SVGElement(net.sf.latexdraw.parser.svg.SVGElement) NotNull(org.jetbrains.annotations.NotNull) SVGGElement(net.sf.latexdraw.parser.svg.SVGGElement) Shape(net.sf.latexdraw.model.api.shape.Shape) SVGElement(net.sf.latexdraw.parser.svg.SVGElement)

Example 2 with SVGDocument

use of net.sf.latexdraw.parser.svg.SVGDocument in project latexdraw by arnobl.

the class TestSVGBase method setUp.

@BeforeEach
void setUp(final SVGShapesFactory svgfac) {
    factory = svgfac;
    doc = new SVGDocument();
    final SVGSVGElement root = doc.getFirstChild();
    root.setAttribute("xmlns:" + LNamespace.LATEXDRAW_NAMESPACE, LNamespace.LATEXDRAW_NAMESPACE_URI);
    root.appendChild(new SVGDefsElement(doc));
    root.setAttribute(SVGAttributes.SVG_VERSION, "1.1");
    root.setAttribute(SVGAttributes.SVG_BASE_PROFILE, "full");
}
Also used : SVGDefsElement(net.sf.latexdraw.parser.svg.SVGDefsElement) SVGDocument(net.sf.latexdraw.parser.svg.SVGDocument) SVGSVGElement(net.sf.latexdraw.parser.svg.SVGSVGElement) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 3 with SVGDocument

use of net.sf.latexdraw.parser.svg.SVGDocument in project latexdraw by arnobl.

the class SVGTriangle method toSVG.

@Override
SVGElement toSVG(@NotNull final SVGDocument doc) {
    if (doc.getFirstChild().getDefs() == null) {
        return null;
    }
    final SVGElement root = new SVGGElement(doc);
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_TYPE, LNamespace.XML_TYPE_TRIANGLE);
    root.setAttribute(SVGAttributes.SVG_ID, getSVGID());
    final double gap = getPositionGap() / 2d;
    final Point pt1 = shape.getTopLeftPoint();
    final Point pt2 = shape.getBottomRightPoint();
    final Point p1 = ShapeFactory.INST.createPoint((pt1.getX() + pt2.getX()) / 2d, pt1.getY());
    final Point p2 = ShapeFactory.INST.createPoint(pt2.getX(), pt2.getY());
    final Point p3 = ShapeFactory.INST.createPoint(pt1.getX(), pt2.getY());
    final double p1x = p1.getX();
    final double p1y = p1.getY();
    final double p2x = p2.getX();
    final double p2y = p2.getY();
    final double p3x = p3.getX();
    double cornerGap1 = MathUtils.INST.getCornerGap(ShapeFactory.INST.createPoint(p1x, p2y), p1, p2, gap);
    double cornerGap2 = MathUtils.INST.getCornerGap(shape.getGravityCentre(), p2, p3, gap);
    if (p2x > p3x) {
        cornerGap2 *= -1d;
    }
    if (p1y > p2y) {
        cornerGap1 *= -1d;
    }
    final double value = p2y + (p1y < p2y ? gap : -gap);
    final String points = p1x + "," + (p1y - cornerGap1) + " " + (p2x - cornerGap2) + "," + value + " " + (p3x + cornerGap2) + "," + value;
    final String ltdPoints = shape.getPoints().stream().flatMap(pt -> Stream.of(String.valueOf(pt.getX()), String.valueOf(pt.getY()))).collect(Collectors.joining(" "));
    setShadowPolygon(doc, root, points);
    final SVGElement elt = new SVGPolygonElement(doc);
    elt.setAttribute(SVGAttributes.SVG_POINTS, points);
    root.appendChild(elt);
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_POINTS, ltdPoints);
    setDbleBorderPolygon(doc, root, points);
    setSVGAttributes(doc, elt, true);
    setSVGRotationAttribute(root);
    return root;
}
Also used : SVGPolygonElement(net.sf.latexdraw.parser.svg.SVGPolygonElement) Point2D(java.awt.geom.Point2D) SVGGElement(net.sf.latexdraw.parser.svg.SVGGElement) Point(net.sf.latexdraw.model.api.shape.Point) Collectors(java.util.stream.Collectors) ShapeFactory(net.sf.latexdraw.model.ShapeFactory) List(java.util.List) Stream(java.util.stream.Stream) SVGParserUtils(net.sf.latexdraw.parser.svg.SVGParserUtils) LNamespace(net.sf.latexdraw.util.LNamespace) SVGDocument(net.sf.latexdraw.parser.svg.SVGDocument) MathUtils(net.sf.latexdraw.model.MathUtils) SVGAttributes(net.sf.latexdraw.parser.svg.SVGAttributes) SVGElement(net.sf.latexdraw.parser.svg.SVGElement) NotNull(org.jetbrains.annotations.NotNull) Triangle(net.sf.latexdraw.model.api.shape.Triangle) SVGGElement(net.sf.latexdraw.parser.svg.SVGGElement) SVGElement(net.sf.latexdraw.parser.svg.SVGElement) SVGPolygonElement(net.sf.latexdraw.parser.svg.SVGPolygonElement) Point(net.sf.latexdraw.model.api.shape.Point)

Example 4 with SVGDocument

use of net.sf.latexdraw.parser.svg.SVGDocument in project latexdraw by arnobl.

the class SVGDot method toSVG.

@Override
SVGElement toSVG(@NotNull final SVGDocument doc) {
    final SVGElement root = new SVGGElement(doc);
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_TYPE, LNamespace.XML_TYPE_DOT);
    root.setAttribute(SVGAttributes.SVG_ID, getSVGID());
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_SIZE, String.valueOf(shape.getDiametre()));
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_DOT_SHAPE, shape.getDotStyle().getPSTToken());
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_POSITION, shape.getPosition().getX() + " " + shape.getPosition().getY());
    viewFactory.createView(shape).ifPresent(vdot -> JFXToSVG.INSTANCE.shapesToElements(vdot.getChildren(), doc).forEach(elt -> root.appendChild(elt)));
    setSVGRotationAttribute(root);
    return root;
}
Also used : Point2D(java.awt.geom.Point2D) ViewFactory(net.sf.latexdraw.view.jfx.ViewFactory) SVGGElement(net.sf.latexdraw.parser.svg.SVGGElement) ShapeFactory(net.sf.latexdraw.model.ShapeFactory) Dot(net.sf.latexdraw.model.api.shape.Dot) List(java.util.List) SVGParserUtils(net.sf.latexdraw.parser.svg.SVGParserUtils) LNamespace(net.sf.latexdraw.util.LNamespace) Color(net.sf.latexdraw.model.api.shape.Color) JFXToSVG(net.sf.latexdraw.view.jfx.JFXToSVG) SVGDocument(net.sf.latexdraw.parser.svg.SVGDocument) DotStyle(net.sf.latexdraw.model.api.shape.DotStyle) CSSColors(net.sf.latexdraw.parser.svg.CSSColors) SVGAttributes(net.sf.latexdraw.parser.svg.SVGAttributes) SVGElement(net.sf.latexdraw.parser.svg.SVGElement) NotNull(org.jetbrains.annotations.NotNull) SVGGElement(net.sf.latexdraw.parser.svg.SVGGElement) SVGElement(net.sf.latexdraw.parser.svg.SVGElement)

Aggregations

SVGDocument (net.sf.latexdraw.parser.svg.SVGDocument)4 List (java.util.List)3 ShapeFactory (net.sf.latexdraw.model.ShapeFactory)3 SVGAttributes (net.sf.latexdraw.parser.svg.SVGAttributes)3 SVGElement (net.sf.latexdraw.parser.svg.SVGElement)3 SVGGElement (net.sf.latexdraw.parser.svg.SVGGElement)3 LNamespace (net.sf.latexdraw.util.LNamespace)3 NotNull (org.jetbrains.annotations.NotNull)3 Point2D (java.awt.geom.Point2D)2 SVGParserUtils (net.sf.latexdraw.parser.svg.SVGParserUtils)2 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 MathUtils (net.sf.latexdraw.model.MathUtils)1 Color (net.sf.latexdraw.model.api.shape.Color)1 Dot (net.sf.latexdraw.model.api.shape.Dot)1 DotStyle (net.sf.latexdraw.model.api.shape.DotStyle)1 Group (net.sf.latexdraw.model.api.shape.Group)1 Point (net.sf.latexdraw.model.api.shape.Point)1 Shape (net.sf.latexdraw.model.api.shape.Shape)1 Triangle (net.sf.latexdraw.model.api.shape.Triangle)1