Search in sources :

Example 36 with SVGElement

use of net.sf.latexdraw.parsers.svg.SVGElement in project latexdraw by arnobl.

the class SVGTriangle method toSVG.

@Override
public SVGElement toSVG(final SVGDocument doc) {
    if (doc == null || 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 IPoint pt1 = shape.getTopLeftPoint();
    final IPoint pt2 = shape.getBottomRightPoint();
    final IPoint p1 = ShapeFactory.INST.createPoint((pt1.getX() + pt2.getX()) / 2d, pt1.getY());
    final IPoint p2 = ShapeFactory.INST.createPoint(pt2.getX(), pt2.getY());
    final IPoint 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 String points = p1x + "," + (p1y - cornerGap1) + " " + (p2x - cornerGap2) + "," + (p2y + (p1y < p2y ? gap : -gap)) + " " + (p3x + cornerGap2) + "," + (p2y + (p1y < p2y ? gap : -gap));
    final String ltdPoints = shape.getPoints().stream().map(pt -> Stream.of(String.valueOf(pt.getX()), String.valueOf(pt.getY()))).flatMap(s -> s).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 : SVGPointsParser(net.sf.latexdraw.parsers.svg.parsers.SVGPointsParser) ITriangle(net.sf.latexdraw.models.interfaces.shape.ITriangle) Point2D(java.awt.geom.Point2D) ShapeFactory(net.sf.latexdraw.models.ShapeFactory) SVGDocument(net.sf.latexdraw.parsers.svg.SVGDocument) MathUtils(net.sf.latexdraw.models.MathUtils) Collectors(java.util.stream.Collectors) SVGElement(net.sf.latexdraw.parsers.svg.SVGElement) List(java.util.List) SVGPolygonElement(net.sf.latexdraw.parsers.svg.SVGPolygonElement) Stream(java.util.stream.Stream) LNamespace(net.sf.latexdraw.util.LNamespace) SVGGElement(net.sf.latexdraw.parsers.svg.SVGGElement) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) SVGAttributes(net.sf.latexdraw.parsers.svg.SVGAttributes) SVGGElement(net.sf.latexdraw.parsers.svg.SVGGElement) SVGElement(net.sf.latexdraw.parsers.svg.SVGElement) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) SVGPolygonElement(net.sf.latexdraw.parsers.svg.SVGPolygonElement)

Example 37 with SVGElement

use of net.sf.latexdraw.parsers.svg.SVGElement in project latexdraw by arnobl.

the class TestSVGDocument method testCreateElementOK.

@Test
public void testCreateElementOK() {
    SVGElement elt = (SVGElement) doc1.createElement("test");
    assertEquals("test", elt.getNodeName());
    assertEquals(doc1, elt.getOwnerDocument());
}
Also used : SVGElement(net.sf.latexdraw.parsers.svg.SVGElement) SVGSVGElement(net.sf.latexdraw.parsers.svg.SVGSVGElement) Test(org.junit.Test)

Example 38 with SVGElement

use of net.sf.latexdraw.parsers.svg.SVGElement in project latexdraw by arnobl.

the class TestSVGNodeList method testItemOK.

@Test
public void testItemOK() {
    final SVGElement elt = (SVGElement) doc.createElement("elt");
    list.getNodes().add(elt);
    assertEquals(elt, list.item(0));
}
Also used : SVGElement(net.sf.latexdraw.parsers.svg.SVGElement) Test(org.junit.Test)

Example 39 with SVGElement

use of net.sf.latexdraw.parsers.svg.SVGElement in project latexdraw by arnobl.

the class TestSVGBase method produceOutputShapeFrom.

T produceOutputShapeFrom(final T sh) {
    final SVGElement elt = SVGShapesFactory.INSTANCE.createSVGElement(sh, doc);
    doc.getFirstChild().appendChild(elt);
    return (T) SVGShapesFactory.INSTANCE.createShape(elt);
}
Also used : SVGSVGElement(net.sf.latexdraw.parsers.svg.SVGSVGElement) SVGElement(net.sf.latexdraw.parsers.svg.SVGElement)

Aggregations

SVGElement (net.sf.latexdraw.parsers.svg.SVGElement)39 SVGGElement (net.sf.latexdraw.parsers.svg.SVGGElement)24 IPoint (net.sf.latexdraw.models.interfaces.shape.IPoint)15 SVGPolygonElement (net.sf.latexdraw.parsers.svg.SVGPolygonElement)5 Test (org.junit.Test)5 SVGDefsElement (net.sf.latexdraw.parsers.svg.SVGDefsElement)4 SVGPathElement (net.sf.latexdraw.parsers.svg.SVGPathElement)4 SVGCircleElement (net.sf.latexdraw.parsers.svg.SVGCircleElement)3 SVGRectElement (net.sf.latexdraw.parsers.svg.SVGRectElement)3 Point2D (java.awt.geom.Point2D)2 ParseException (java.text.ParseException)2 List (java.util.List)2 ShapeFactory (net.sf.latexdraw.models.ShapeFactory)2 Color (net.sf.latexdraw.models.interfaces.shape.Color)2 IArrow (net.sf.latexdraw.models.interfaces.shape.IArrow)2 IPolyline (net.sf.latexdraw.models.interfaces.shape.IPolyline)2 SVGAttr (net.sf.latexdraw.parsers.svg.SVGAttr)2 SVGAttributes (net.sf.latexdraw.parsers.svg.SVGAttributes)2 SVGDocument (net.sf.latexdraw.parsers.svg.SVGDocument)2 SVGLineElement (net.sf.latexdraw.parsers.svg.SVGLineElement)2