Search in sources :

Example 1 with SVGPolygonElement

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

the class SVGPolygon method toSVG.

@Override
public SVGElement toSVG(final SVGDocument doc) {
    if (doc == null) {
        throw new IllegalArgumentException();
    }
    final SVGElement root = new SVGGElement(doc);
    final StringBuilder pointsBuilder = new StringBuilder();
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_TYPE, LNamespace.XML_TYPE_POLYGON);
    root.setAttribute(SVGAttributes.SVG_ID, getSVGID());
    for (final IPoint pt : shape.getPoints()) {
        pointsBuilder.append(pt.getX()).append(',').append(pt.getY()).append(' ');
    }
    final String points = pointsBuilder.toString();
    if (shape.hasShadow()) {
        final SVGPolygonElement shad = new SVGPolygonElement(doc);
        try {
            shad.setPoints(points);
        } catch (final ParseException ex) {
            BadaboomCollector.INSTANCE.add(ex);
        }
        setSVGShadowAttributes(shad, true);
        root.appendChild(shad);
    }
    if (shape.hasShadow() && !shape.getLineStyle().getLatexToken().equals(PSTricksConstants.LINE_NONE_STYLE)) {
        // The background of the borders must be filled is there is a shadow.
        final SVGPolygonElement elt = new SVGPolygonElement(doc);
        try {
            elt.setPoints(points);
        } catch (final ParseException ex) {
            BadaboomCollector.INSTANCE.add(ex);
        }
        setSVGBorderBackground(elt, root);
    }
    final SVGPolygonElement elt = new SVGPolygonElement(doc);
    try {
        elt.setPoints(points);
    } catch (final ParseException ex) {
        BadaboomCollector.INSTANCE.add(ex);
    }
    root.appendChild(elt);
    setSVGAttributes(doc, elt, true);
    elt.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_ROTATION, String.valueOf(shape.getRotationAngle()));
    if (shape.hasDbleBord()) {
        final SVGPolygonElement dblBord = new SVGPolygonElement(doc);
        try {
            dblBord.setPoints(points);
        } catch (final ParseException ex) {
            BadaboomCollector.INSTANCE.add(ex);
        }
        setSVGDoubleBordersAttributes(dblBord);
        root.appendChild(dblBord);
    }
    return root;
}
Also used : 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) ParseException(java.text.ParseException)

Example 2 with SVGPolygonElement

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

the class SVGPolygonBased method setShadowPolygon.

void setShadowPolygon(final SVGDocument doc, final SVGElement root, final String points) {
    if (shape.hasShadow()) {
        final SVGElement elt = new SVGPolygonElement(doc);
        elt.setAttribute(SVGAttributes.SVG_POINTS, points);
        setSVGShadowAttributes(elt, true);
        root.appendChild(elt);
    }
    if (shape.hasShadow() && !shape.getLineStyle().getLatexToken().equals(PSTricksConstants.LINE_NONE_STYLE)) {
        // The background of the borders must be filled is there is a shadow.
        final SVGElement elt = new SVGPolygonElement(doc);
        elt.setAttribute(SVGAttributes.SVG_POINTS, points);
        setSVGBorderBackground(elt, root);
    }
}
Also used : SVGElement(net.sf.latexdraw.parsers.svg.SVGElement) SVGPolygonElement(net.sf.latexdraw.parsers.svg.SVGPolygonElement)

Example 3 with SVGPolygonElement

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

the class SVGPolygonBased method setDbleBorderPolygon.

void setDbleBorderPolygon(final SVGDocument doc, final SVGElement root, final String points) {
    if (shape.hasDbleBord()) {
        final SVGElement dblBord = new SVGPolygonElement(doc);
        dblBord.setAttribute(SVGAttributes.SVG_POINTS, points);
        setSVGDoubleBordersAttributes(dblBord);
        root.appendChild(dblBord);
    }
}
Also used : SVGElement(net.sf.latexdraw.parsers.svg.SVGElement) SVGPolygonElement(net.sf.latexdraw.parsers.svg.SVGPolygonElement)

Example 4 with SVGPolygonElement

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

the class SVGRhombus method toSVG.

@Override
public SVGElement toSVG(final SVGDocument doc) {
    if (doc == null) {
        return null;
    }
    final IPoint tl = shape.getTopLeftPoint();
    final IPoint br = shape.getBottomRightPoint();
    final IPoint gc = shape.getGravityCentre();
    final IPoint p1 = ShapeFactory.INST.createPoint((tl.getX() + br.getX()) / 2d, tl.getY());
    final IPoint p2 = ShapeFactory.INST.createPoint(br.getX(), (tl.getY() + br.getY()) / 2d);
    final IPoint p3 = ShapeFactory.INST.createPoint((tl.getX() + br.getX()) / 2d, br.getY());
    final SVGElement root = new SVGGElement(doc);
    final double gap = getPositionGap() / 2d;
    final double cornerGap1 = MathUtils.INST.getCornerGap(gc, p1, p2, gap);
    double cornerGap2 = MathUtils.INST.getCornerGap(gc, p2, p3, gap);
    if (p2.getX() < p3.getX()) {
        cornerGap2 *= -1d;
    }
    final String points = String.valueOf(p1.getX()) + ',' + (p1.getY() - cornerGap1) + ' ' + (p2.getX() + cornerGap2) + ',' + p2.getY() + ' ' + p3.getX() + ',' + (p3.getY() + cornerGap1) + ' ' + (tl.getX() - cornerGap2) + ',' + p2.getY();
    root.setAttribute(LNamespace.LATEXDRAW_NAMESPACE + ':' + LNamespace.XML_TYPE, LNamespace.XML_TYPE_RHOMBUS);
    root.setAttribute(SVGAttributes.SVG_ID, getSVGID());
    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, String.valueOf(tl.getX()) + ' ' + tl.getY() + ' ' + br.getX() + ' ' + tl.getY() + ' ' + tl.getX() + ' ' + br.getY() + ' ' + br.getX() + ' ' + br.getY());
    setDbleBorderPolygon(doc, root, points);
    setSVGAttributes(doc, elt, true);
    setSVGRotationAttribute(root);
    return root;
}
Also used : 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 5 with SVGPolygonElement

use of net.sf.latexdraw.parsers.svg.SVGPolygonElement 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)

Aggregations

SVGElement (net.sf.latexdraw.parsers.svg.SVGElement)5 SVGPolygonElement (net.sf.latexdraw.parsers.svg.SVGPolygonElement)5 IPoint (net.sf.latexdraw.models.interfaces.shape.IPoint)3 SVGGElement (net.sf.latexdraw.parsers.svg.SVGGElement)3 Point2D (java.awt.geom.Point2D)1 ParseException (java.text.ParseException)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 MathUtils (net.sf.latexdraw.models.MathUtils)1 ShapeFactory (net.sf.latexdraw.models.ShapeFactory)1 ITriangle (net.sf.latexdraw.models.interfaces.shape.ITriangle)1 SVGAttributes (net.sf.latexdraw.parsers.svg.SVGAttributes)1 SVGDocument (net.sf.latexdraw.parsers.svg.SVGDocument)1 SVGPointsParser (net.sf.latexdraw.parsers.svg.parsers.SVGPointsParser)1 LNamespace (net.sf.latexdraw.util.LNamespace)1