Search in sources :

Example 16 with IBezierCurve

use of net.sf.latexdraw.models.interfaces.shape.IBezierCurve in project latexdraw by arnobl.

the class TestModifyShapeProperty method configureShapes.

private void configureShapes() {
    final IGrid grid = ShapeFactory.INST.createGrid(ShapeFactory.INST.createPoint());
    final IAxes axes = ShapeFactory.INST.createAxes(ShapeFactory.INST.createPoint());
    final IDot dot = ShapeFactory.INST.createDot(ShapeFactory.INST.createPoint());
    final ICircle circle = ShapeFactory.INST.createCircle();
    final IEllipse ell = ShapeFactory.INST.createEllipse();
    final IText txt = ShapeFactory.INST.createText();
    final IBezierCurve bc = ShapeFactory.INST.createBezierCurve(Collections.emptyList());
    final IPolyline pl = ShapeFactory.INST.createPolyline(Collections.emptyList());
    final IPolygon pg = ShapeFactory.INST.createPolygon(Collections.emptyList());
    final ITriangle tr = ShapeFactory.INST.createTriangle();
    final IRhombus rh = ShapeFactory.INST.createRhombus();
    final IRectangle r1 = ShapeFactory.INST.createRectangle();
    final IPlot plot = ShapeFactory.INST.createPlot(ShapeFactory.INST.createPoint(), 0d, 1d, "x", false);
    final ICircleArc carc = ShapeFactory.INST.createCircleArc();
    final ISquare sq = ShapeFactory.INST.createSquare();
    final IFreehand fh = ShapeFactory.INST.createFreeHand(Collections.emptyList());
    r1.setLineStyle(LineStyle.DASHED);
    r1.setBordersPosition(BorderPos.INTO);
    r1.setFillingStyle(FillingStyle.PLAIN);
    r1.setThickness(2.3);
    r1.setHasDbleBord(true);
    r1.setLineArc(0.2);
    r1.setDbleBordSep(1.3);
    r1.setHatchingsAngle(0.33);
    r1.setHatchingsSep(9.1);
    r1.setHatchingsWidth(12.11);
    r1.setShadowAngle(0.1);
    r1.setGradMidPt(0.66);
    r1.setHatchingsCol(DviPsColors.CYAN);
    r1.setLineColour(DviPsColors.NAVYBLUE);
    r1.setShadowSize(87.2);
    r1.setFillingCol(DviPsColors.CARNATIONPINK);
    r1.setShadowCol(DviPsColors.CORNFLOWERBLUE);
    r1.setDashSepBlack(1.2);
    r1.setDashSepWhite(2.1);
    r1.setDotSep(23.1);
    r1.setGradAngle(1.3);
    r1.setDbleBordCol(DviPsColors.RED);
    r1.setGradColEnd(DviPsColors.BITTERSWEET);
    r1.setGradColStart(DviPsColors.FORESTGREEN);
    r1.setShowPts(true);
    final IRectangle r2 = ShapeFactory.INST.createRectangle();
    r2.setLineStyle(LineStyle.SOLID);
    r2.setBordersPosition(BorderPos.MID);
    r2.setFillingStyle(FillingStyle.HLINES);
    r2.setThickness(6.3);
    r2.setHasShadow(true);
    r2.setLineArc(0.33);
    r2.setDbleBordSep(2.3);
    r2.setHatchingsAngle(-0.53);
    r2.setHatchingsSep(1.1);
    r2.setHatchingsWidth(2.11);
    r2.setShadowAngle(-0.1);
    r2.setGradMidPt(0.31);
    r2.setHatchingsCol(DviPsColors.APRICOT);
    r2.setLineColour(DviPsColors.YELLOW);
    r2.setShadowSize(8.1);
    r2.setFillingCol(DviPsColors.CERULEAN);
    r2.setShadowCol(DviPsColors.DARKORCHID);
    r1.setDashSepBlack(11.2);
    r1.setDashSepWhite(21.1);
    r1.setDotSep(231.1);
    r1.setGradAngle(11.3);
    r1.setDbleBordCol(DviPsColors.ROYALBLUE);
    r1.setGradColEnd(DviPsColors.CADETBLUE);
    r1.setGradColStart(DviPsColors.OLIVE);
    txt.copy(r1);
    ell.copy(r1);
    circle.copy(r2);
    dot.copy(r2);
    bc.copy(r2);
    pl.copy(r1);
    pg.copy(r2);
    tr.copy(r1);
    rh.copy(r2);
    plot.copy(r1);
    carc.copy(r2);
    sq.copy(r1);
    fh.copy(r2);
    group.addShape(r1);
    group.addShape(txt);
    group.addShape(grid);
    group.addShape(pl);
    group.addShape(pg);
    group.addShape(r2);
    group.addShape(axes);
    group.addShape(ell);
    group.addShape(circle);
    group.addShape(tr);
    group.addShape(rh);
    group.addShape(dot);
    group.addShape(bc);
    group.addShape(plot);
    group.addShape(carc);
    group.addShape(sq);
    group.addShape(fh);
}
Also used : IPlot(net.sf.latexdraw.models.interfaces.shape.IPlot) ICircle(net.sf.latexdraw.models.interfaces.shape.ICircle) IDot(net.sf.latexdraw.models.interfaces.shape.IDot) IEllipse(net.sf.latexdraw.models.interfaces.shape.IEllipse) IGrid(net.sf.latexdraw.models.interfaces.shape.IGrid) IAxes(net.sf.latexdraw.models.interfaces.shape.IAxes) IPolygon(net.sf.latexdraw.models.interfaces.shape.IPolygon) IFreehand(net.sf.latexdraw.models.interfaces.shape.IFreehand) IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) IPolyline(net.sf.latexdraw.models.interfaces.shape.IPolyline) ITriangle(net.sf.latexdraw.models.interfaces.shape.ITriangle) ICircleArc(net.sf.latexdraw.models.interfaces.shape.ICircleArc) IText(net.sf.latexdraw.models.interfaces.shape.IText) ISquare(net.sf.latexdraw.models.interfaces.shape.ISquare) IRhombus(net.sf.latexdraw.models.interfaces.shape.IRhombus) IRectangle(net.sf.latexdraw.models.interfaces.shape.IRectangle)

Example 17 with IBezierCurve

use of net.sf.latexdraw.models.interfaces.shape.IBezierCurve in project latexdraw by arnobl.

the class SVGBezierCurve method pathToBezierCurve.

/**
 * Creates a bezier curve and initialises its path from an SVG element.
 */
private static IBezierCurve pathToBezierCurve(final SVGElement elt) {
    if (!(elt instanceof SVGPathElement)) {
        return null;
    }
    final SVGPathSegList list = ((SVGPathElement) elt).getSegList();
    if (list == null || list.size() < 2 || !(list.get(0) instanceof SVGPathSegMoveto)) {
        return null;
    }
    final SVGPathSegMoveto m = (SVGPathSegMoveto) list.get(0);
    CtrlPointsSeg c;
    int i = 1;
    final int size = list.size();
    // Creating a point to support when the first path element is relative.
    Point2D pt = new Point2D.Double();
    final List<IPoint> pts = new ArrayList<>();
    final List<IPoint> ctrlpts = new ArrayList<>();
    final boolean closed;
    pt = m.getPoint(pt);
    pts.add(ShapeFactory.INST.createPoint(pt));
    if (list.get(1) instanceof CtrlPointsSeg) {
        // We set the control point of the first point.
        c = (CtrlPointsSeg) list.get(1);
        ctrlpts.add(ShapeFactory.INST.createPoint(c.getCtrl1(pt)));
    }
    while (i < size && list.get(i) instanceof CtrlPointsSeg) {
        c = (CtrlPointsSeg) list.get(i);
        final Point2D currPt = c.getPoint(pt);
        pts.add(ShapeFactory.INST.createPoint(currPt));
        ctrlpts.add(ShapeFactory.INST.createPoint(c.getCtrl2(pt)));
        pt = currPt;
        i++;
    }
    if (pts.size() > 2 && pts.get(pts.size() - 1).equals(pts.get(0), 0.00001)) {
        // We set the shape as closed
        pts.remove(pts.size() - 1);
        ctrlpts.remove(ctrlpts.size() - 1);
        closed = true;
    } else {
        // There is something else at the end of the path.
        closed = i < size && list.get(i) instanceof SVGPathSegClosePath;
    }
    final IBezierCurve bc = ShapeFactory.INST.createBezierCurve(pts, ctrlpts);
    bc.setOpened(!closed);
    return bc;
}
Also used : SVGPathSegMoveto(net.sf.latexdraw.parsers.svg.path.SVGPathSegMoveto) SVGPathElement(net.sf.latexdraw.parsers.svg.SVGPathElement) ArrayList(java.util.ArrayList) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) SVGPathSegList(net.sf.latexdraw.parsers.svg.path.SVGPathSegList) SVGPathSegClosePath(net.sf.latexdraw.parsers.svg.path.SVGPathSegClosePath) IPoint(net.sf.latexdraw.models.interfaces.shape.IPoint) IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) Point2D(java.awt.geom.Point2D) CtrlPointsSeg(net.sf.latexdraw.parsers.svg.path.CtrlPointsSeg)

Example 18 with IBezierCurve

use of net.sf.latexdraw.models.interfaces.shape.IBezierCurve in project latexdraw by arnobl.

the class TestIBezierCurve method testDuplicate.

@Test
public void testDuplicate() {
    shape.setOpened(!shape.isOpened());
    final IBezierCurve dup = shape.duplicate();
    assertEquals(shape.isOpened(), dup.isOpened());
}
Also used : IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) Test(org.junit.Test) HelperTest(net.sf.latexdraw.HelperTest)

Example 19 with IBezierCurve

use of net.sf.latexdraw.models.interfaces.shape.IBezierCurve in project latexdraw by arnobl.

the class TestIBezierCurve method testConstructors2.

@Test
public void testConstructors2() {
    final IBezierCurve curve = ShapeFactory.INST.createBezierCurve(Arrays.asList(ShapeFactory.INST.createPoint(100, 200), ShapeFactory.INST.createPoint(300, 400)));
    assertEquals(2, curve.getPoints().size());
    assertEqualsDouble(100., curve.getPoints().get(0).getX());
    assertEqualsDouble(200., curve.getPoints().get(0).getY());
    assertEqualsDouble(300., curve.getPoints().get(1).getX());
    assertEqualsDouble(400., curve.getPoints().get(1).getY());
    assertEquals(2, curve.getFirstCtrlPts().size());
    assertEquals(2, curve.getSecondCtrlPts().size());
    assertEquals(2, curve.getNbArrows());
}
Also used : IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) Test(org.junit.Test) HelperTest(net.sf.latexdraw.HelperTest)

Example 20 with IBezierCurve

use of net.sf.latexdraw.models.interfaces.shape.IBezierCurve in project latexdraw by arnobl.

the class TestShapeFactory method testCreateBezierCurveFromSameNewPoint.

@Test
public void testCreateBezierCurveFromSameNewPoint() {
    IBezierCurve bc = ShapeFactory.INST.createBezierCurve(Collections.singletonList(ShapeFactory.INST.createPoint()));
    bc = ShapeFactory.INST.createBezierCurveFrom(bc, ShapeFactory.INST.createPoint(1d, 2d));
    assertEqualsDouble(1d, bc.getPtAt(1).getX());
    assertEqualsDouble(2d, bc.getPtAt(1).getY());
}
Also used : IBezierCurve(net.sf.latexdraw.models.interfaces.shape.IBezierCurve) Test(org.junit.Test) HelperTest(net.sf.latexdraw.HelperTest)

Aggregations

IBezierCurve (net.sf.latexdraw.models.interfaces.shape.IBezierCurve)28 Test (org.junit.Test)20 HelperTest (net.sf.latexdraw.HelperTest)6 IPoint (net.sf.latexdraw.models.interfaces.shape.IPoint)5 IFreehand (net.sf.latexdraw.models.interfaces.shape.IFreehand)3 IPolygon (net.sf.latexdraw.models.interfaces.shape.IPolygon)3 IPolyline (net.sf.latexdraw.models.interfaces.shape.IPolyline)3 ArrayList (java.util.ArrayList)2 Arrays (java.util.Arrays)2 Collections (java.util.Collections)2 Point2D (javafx.geometry.Point2D)2 MathUtils (net.sf.latexdraw.models.MathUtils)2 ShapeFactory (net.sf.latexdraw.models.ShapeFactory)2 BorderPos (net.sf.latexdraw.models.interfaces.shape.BorderPos)2 IAxes (net.sf.latexdraw.models.interfaces.shape.IAxes)2 ICircle (net.sf.latexdraw.models.interfaces.shape.ICircle)2 ICircleArc (net.sf.latexdraw.models.interfaces.shape.ICircleArc)2 IDot (net.sf.latexdraw.models.interfaces.shape.IDot)2 IEllipse (net.sf.latexdraw.models.interfaces.shape.IEllipse)2 IGrid (net.sf.latexdraw.models.interfaces.shape.IGrid)2