Example usage for javafx.scene.shape LineTo LineTo

List of usage examples for javafx.scene.shape LineTo LineTo

Introduction

In this page you can find the example usage for javafx.scene.shape LineTo LineTo.

Prototype

public LineTo(double x, double y) 

Source Link

Document

Creates a new isntance of LineTo.

Usage

From source file:Main.java

@Override
public void start(Stage stage) {
    Path pathTriangle = new Path(new MoveTo(50, 0), new LineTo(0, 50), new LineTo(100, 50), new LineTo(50, 0));

    pathTriangle.setFill(Color.LIGHTGRAY);
    pathTriangle.setStroke(Color.BLACK);

    SVGPath svgTriangle = new SVGPath();
    svgTriangle.setContent("M50, 0 L10, 20 L100, 50 Z");
    svgTriangle.setFill(Color.LIGHTGRAY);
    svgTriangle.setStroke(Color.BLACK);

    HBox root = new HBox(pathTriangle, svgTriangle);
    root.setSpacing(10);//  ww w  .java 2s .co  m
    root.setStyle("-fx-padding: 10;" + "-fx-border-style: solid inside;" + "-fx-border-width: 2;"
            + "-fx-border-insets: 5;" + "-fx-border-radius: 5;" + "-fx-border-color: blue;");

    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.setTitle("2D Shapes using Path and SVGPath Classes");
    stage.show();
}

From source file:Main.java

@Override
public void start(Stage stage) {
    Scene scene = new Scene(new Group());
    stage.setTitle("");
    stage.setWidth(230);//from w  ww.  j a va 2  s  .  c o  m
    stage.setHeight(120);

    Path path = new Path();
    path.getElements().add(new MoveTo(0.0f, 50.0f));
    path.getElements().add(new LineTo(100.0f, 100.0f));

    VBox vbox = new VBox();
    vbox.getChildren().addAll(path);
    vbox.setSpacing(5);

    HBox root = new HBox();
    root.getChildren().add(vbox);
    root.setSpacing(40);
    root.setPadding(new Insets(20, 10, 10, 20));

    ((Group) scene.getRoot()).getChildren().add(root);

    stage.setScene(scene);
    stage.show();
}

From source file:Main.java

@Override
public void start(Stage stage) {
    Scene scene = new Scene(new Group());
    stage.setTitle("Checkbox Sample");
    stage.setWidth(230);/*w w  w  .  j a  va  2s  .  co  m*/
    stage.setHeight(120);

    Path path = new Path();
    path.getElements().add(new MoveTo(0.0f, 50.0f));
    path.getElements().add(new LineTo(100.0f, 100.0f));

    VBox vbox = new VBox();
    vbox.getChildren().addAll(path);
    vbox.setSpacing(5);

    HBox root = new HBox();
    root.getChildren().add(vbox);
    root.setSpacing(40);
    root.setPadding(new Insets(20, 10, 10, 20));

    ((Group) scene.getRoot()).getChildren().add(root);

    stage.setScene(scene);
    stage.show();
}

From source file:Main.java

private void playLayoutBoundsPathTransition() {
    Bounds b = mainRect.getLayoutBounds();
    Path path = new Path();
    path.getElements().add(new MoveTo(b.getMinX(), b.getMinY()));
    path.getElements().add(new LineTo(b.getMaxX(), b.getMinY()));
    path.getElements().add(new LineTo(b.getMaxX(), b.getMaxY()));
    path.getElements().add(new LineTo(b.getMinX(), b.getMaxY()));
    path.getElements().add(new LineTo(b.getMinX(), b.getMinY()));

    LAYOUT_BOUNDS_PATH_TRANSITION.setPath(path);
    LAYOUT_BOUNDS_PATH_TRANSITION.play();
}

From source file:Main.java

private void playLocalBoundsPathTransition() {
    Bounds b = mainRect.getBoundsInLocal();
    Path path = new Path();
    path.getElements().add(new MoveTo(b.getMinX(), b.getMinY()));
    //path.getElements().add(new LineTo(b.getMinX(), b.getMinY()));
    path.getElements().add(new LineTo(b.getMaxX(), b.getMinY()));
    path.getElements().add(new LineTo(b.getMaxX(), b.getMaxY()));
    path.getElements().add(new LineTo(b.getMinX(), b.getMaxY()));
    path.getElements().add(new LineTo(b.getMinX(), b.getMinY()));

    LOCAL_BOUNDS_PATH_TRANSITION.setPath(path);
    LOCAL_BOUNDS_PATH_TRANSITION.play();
}

From source file:Main.java

private void playParentBoundsPathTransition() {
    Bounds b = mainRect.getBoundsInParent();

    Path path = new Path();
    path.getElements().add(new MoveTo(b.getMinX(), b.getMinY()));
    path.getElements().add(new LineTo(b.getMaxX(), b.getMinY()));
    path.getElements().add(new LineTo(b.getMaxX(), b.getMaxY()));
    path.getElements().add(new LineTo(b.getMinX(), b.getMaxY()));
    path.getElements().add(new LineTo(b.getMinX(), b.getMinY()));

    PARENT_BOUNDS_PATH_TRANSITION.setPath(path);
    PARENT_BOUNDS_PATH_TRANSITION.play();
}

From source file:nl.rivm.cib.episim.model.disease.infection.MSEIRSPlot.java

@Override
public void start(final Stage stage) {
    final SIRConfig conf = ConfigFactory.create(SIRConfig.class);
    final double[] t = conf.t();
    final long[] pop = conf.population();
    final double n0 = Arrays.stream(pop).sum();
    final String[] colors = conf.colors(), colors2 = conf.colors2();

    final Pane plot = new Pane();
    plot.setPrefSize(400, 300);//from ww w .  j  a v a  2  s.  c  om
    plot.setMinSize(50, 50);

    final NumberAxis xAxis = new NumberAxis(t[0], t[1], (t[1] - t[0]) / 10);
    final NumberAxis yAxis = new NumberAxis(0, n0, n0 / 10);
    final Pane axes = new Pane();
    axes.prefHeightProperty().bind(plot.heightProperty());
    axes.prefWidthProperty().bind(plot.widthProperty());

    xAxis.setSide(Side.BOTTOM);
    xAxis.setMinorTickVisible(false);
    xAxis.setPrefWidth(axes.getPrefWidth());
    xAxis.prefWidthProperty().bind(axes.widthProperty());
    xAxis.layoutYProperty().bind(axes.heightProperty());

    yAxis.setSide(Side.LEFT);
    yAxis.setMinorTickVisible(false);
    yAxis.setPrefHeight(axes.getPrefHeight());
    yAxis.prefHeightProperty().bind(axes.heightProperty());
    yAxis.layoutXProperty().bind(Bindings.subtract(1, yAxis.widthProperty()));
    axes.getChildren().setAll(xAxis, yAxis);

    final Label lbl = new Label(String.format("R0=%.1f, recovery=%.1ft\nSIR(0)=%s", conf.reproduction(),
            conf.recovery(), Arrays.toString(pop)));
    lbl.setTextAlignment(TextAlignment.CENTER);
    lbl.setTextFill(Color.WHITE);

    final Path[] deterministic = { new Path(), new Path(), new Path() };
    IntStream.range(0, pop.length).forEach(i -> {
        final Color color = Color.valueOf(colors[i]);
        final Path path = deterministic[i];
        path.setStroke(color.deriveColor(0, 1, 1, 0.6));
        path.setStrokeWidth(2);
        path.setClip(new Rectangle(0, 0, plot.getPrefWidth(), plot.getPrefHeight()));
    });

    plot.getChildren().setAll(axes);

    // fill paths with integration estimates
    final double xl = xAxis.getLowerBound(), sx = plot.getPrefWidth() / (xAxis.getUpperBound() - xl),
            yh = plot.getPrefHeight(), sy = yh / (yAxis.getUpperBound() - yAxis.getLowerBound());
    final TreeMap<Double, Integer> iDeterministic = new TreeMap<>();

    MSEIRSTest.deterministic(conf, () -> new DormandPrince853Integrator(1.0E-8, 10, 1.0E-20, 1.0E-20))
            .subscribe(yt -> {
                iDeterministic.put(yt.getKey(), deterministic[0].getElements().size());
                final double[] y = yt.getValue();
                final double x = (yt.getKey() - xl) * sx;
                for (int i = 0; i < y.length; i++) {
                    final double yi = yh - y[i] * sy;
                    final PathElement di = deterministic[i].getElements().isEmpty() ? new MoveTo(x, yi)
                            : new LineTo(x, yi);
                    deterministic[i].getElements().add(di);
                }
            }, e -> LOG.error("Problem", e), () -> plot.getChildren().addAll(deterministic));

    final Path[] stochasticTau = { new Path(), new Path(), new Path() };
    IntStream.range(0, pop.length).forEach(i -> {
        final Color color = Color.valueOf(colors[i]);
        final Path path = stochasticTau[i];
        path.setStroke(color);
        path.setStrokeWidth(1);
        path.setClip(new Rectangle(0, 0, plot.getPrefWidth(), plot.getPrefHeight()));
    });

    final TreeMap<Double, Integer> iStochasticTau = new TreeMap<>();
    MSEIRSTest.stochasticGillespie(conf).subscribe(yt -> {
        final double x = (yt.getKey() - xl) * sx;
        iStochasticTau.put(yt.getKey(), stochasticTau[0].getElements().size());
        final long[] y = yt.getValue();
        for (int i = 0; i < y.length; i++) {
            final double yi = yh - y[i] * sy;
            final ObservableList<PathElement> path = stochasticTau[i].getElements();
            if (path.isEmpty()) {
                path.add(new MoveTo(x, yi)); // first
            } else {
                final PathElement last = path.get(path.size() - 1);
                final double y_prev = last instanceof MoveTo ? ((MoveTo) last).getY() : ((LineTo) last).getY();
                path.add(new LineTo(x, y_prev));
                path.add(new LineTo(x, yi));
            }
        }
    }, e -> LOG.error("Problem", e), () -> plot.getChildren().addAll(stochasticTau));

    final Path[] stochasticRes = { new Path(), new Path(), new Path() };
    IntStream.range(0, pop.length).forEach(i -> {
        final Color color = Color.valueOf(colors2[i]);
        final Path path = stochasticRes[i];
        path.setStroke(color);
        path.setStrokeWidth(1);
        path.setClip(new Rectangle(0, 0, plot.getPrefWidth(), plot.getPrefHeight()));
    });

    final TreeMap<Double, Integer> iStochasticRes = new TreeMap<>();
    MSEIRSTest.stochasticSellke(conf).subscribe(yt -> {
        final double x = (yt.getKey() - xl) * sx;
        iStochasticRes.put(yt.getKey(), stochasticRes[0].getElements().size());
        final long[] y = yt.getValue();
        for (int i = 0; i < y.length; i++) {
            final double yi = yh - y[i] * sy;
            final ObservableList<PathElement> path = stochasticRes[i].getElements();
            if (path.isEmpty()) {
                path.add(new MoveTo(x, yi)); // first
            } else {
                final PathElement last = path.get(path.size() - 1);
                final double y_prev = last instanceof MoveTo ? ((MoveTo) last).getY() : ((LineTo) last).getY();
                path.add(new LineTo(x, y_prev));
                path.add(new LineTo(x, yi));
            }
        }
    }, e -> LOG.error("Problem", e), () -> plot.getChildren().addAll(stochasticRes));

    // auto-scale on stage/plot resize 
    // FIXME scaling around wrong origin, use ScatterChart?
    //         xAxis.widthProperty()
    //               .addListener( (ChangeListener<Number>) ( observable,
    //                  oldValue, newValue ) ->
    //               {
    //                  final double scale = ((Double) newValue)
    //                        / plot.getPrefWidth();
    //                  plot.getChildren().filtered( n -> n instanceof Path )
    //                        .forEach( n ->
    //                        {
    //                           final Path path = (Path) n;
    //                           path.setScaleX( scale );
    //                           path.setTranslateX( (path
    //                                 .getBoundsInParent().getWidth()
    //                                 - path.getLayoutBounds().getWidth())
    //                                 / 2 );
    //                        } );
    //               } );
    //         plot.heightProperty()
    //               .addListener( (ChangeListener<Number>) ( observable,
    //                  oldValue, newValue ) ->
    //               {
    //                  final double scale = ((Double) newValue)
    //                        / plot.getPrefHeight();
    //                  plot.getChildren().filtered( n -> n instanceof Path )
    //                        .forEach( n ->
    //                        {
    //                           final Path path = (Path) n;
    //                           path.setScaleY( scale );
    //                           path.setTranslateY(
    //                                 (path.getBoundsInParent()
    //                                       .getHeight() * (scale - 1))
    //                                       / 2 );
    //                        } );
    //               } );

    final StackPane layout = new StackPane(lbl, plot);
    layout.setAlignment(Pos.TOP_CENTER);
    layout.setPadding(new Insets(50));
    layout.setStyle("-fx-background-color: rgb(35, 39, 50);");

    final Line vertiCross = new Line();
    vertiCross.setStroke(Color.SILVER);
    vertiCross.setStrokeWidth(1);
    vertiCross.setVisible(false);
    axes.getChildren().add(vertiCross);

    final Tooltip tip = new Tooltip("");
    tip.setAutoHide(false);
    tip.hide();
    axes.setOnMouseExited(ev -> tip.hide());
    axes.setOnMouseMoved(ev -> {
        final Double x = (Double) xAxis.getValueForDisplay(ev.getX());
        if (x > xAxis.getUpperBound() || x < xAxis.getLowerBound()) {
            tip.hide();
            vertiCross.setVisible(false);
            return;
        }
        final Double y = (Double) yAxis.getValueForDisplay(ev.getY());
        if (y > yAxis.getUpperBound() || y < yAxis.getLowerBound()) {
            tip.hide();
            vertiCross.setVisible(false);
            return;
        }
        final double xs = xAxis.getDisplayPosition(x);
        vertiCross.setStartX(xs);
        vertiCross.setStartY(yAxis.getDisplayPosition(0));
        vertiCross.setEndX(xs);
        vertiCross.setEndY(yAxis.getDisplayPosition(yAxis.getUpperBound()));
        vertiCross.setVisible(true);
        final int i = (iDeterministic.firstKey() > x ? iDeterministic.firstEntry()
                : iDeterministic.floorEntry(x)).getValue();
        final Object[] yi = Arrays.stream(deterministic).mapToDouble(p -> getY(p, i))
                .mapToObj(yAxis::getValueForDisplay).map(n -> DecimalUtil.toScale(n, 1)).toArray();
        final int j = (iStochasticTau.firstKey() > x ? iStochasticTau.firstEntry()
                : iStochasticTau.floorEntry(x)).getValue();
        final Object[] yj = Arrays.stream(stochasticTau).mapToDouble(p -> getY(p, j))
                .mapToObj(yAxis::getValueForDisplay).map(n -> DecimalUtil.toScale(n, 0)).toArray();
        final int k = (iStochasticRes.firstKey() > x ? iStochasticRes.firstEntry()
                : iStochasticRes.floorEntry(x)).getValue();
        final Object[] yk = Arrays.stream(stochasticRes).mapToDouble(p -> getY(p, k))
                .mapToObj(yAxis::getValueForDisplay).map(n -> DecimalUtil.toScale(n, 0)).toArray();
        final String txt = String.format("SIR(t=%.1f)\n" + "~det%s\n" + "~tau%s\n" + "~res%s", x,
                Arrays.toString(yi), Arrays.toString(yj), Arrays.toString(yk));

        tip.setText(txt);
        tip.show(axes, ev.getScreenX() - ev.getSceneX() + xs, ev.getScreenY() + 15);
    });

    try {
        stage.getIcons().add(new Image(FileUtil.toInputStream("icon.jpg")));
    } catch (final IOException e) {
        LOG.error("Problem", e);
    }
    stage.setTitle("Deterministic vs. Stochastic");
    stage.setScene(new Scene(layout, Color.rgb(35, 39, 50)));
    //         stage.setOnHidden( ev -> tip.hide() );
    stage.show();
}

From source file:org.nmrfx.processor.gui.spectra.DrawSpectrum.java

private static int drawVectoreCore(Vec vec, int dataOffset, boolean drawReal, double ph0, double ph1,
        double[][] xyValues, Path bcPath, DoubleBinaryOperator xFunction, DoubleBinaryOperator yFunction,
        boolean offsetVec, int start, int end, int size, double dValue, double dDelta, double delta) {

    if ((start - dataOffset) < 0) {
        start = dataOffset;/*from w  ww. j a v a  2  s  .  c  om*/
    }
    if (end > ((size + dataOffset) - 1)) {
        end = (size + dataOffset) - 1;
    }
    int incr = (end - start) / 2048;
    if (incr < 1) {
        incr = 1;
    }
    if ((start - dataOffset) < 0) {
        start = dataOffset;
    }
    if (end > ((size + dataOffset) - 1)) {
        end = (size + dataOffset) - 1;
    }
    //System.out.println((start - dataOffset) + " " + (end - dataOffset) + " " + dValue + " " + (dValue + delta * (end - start)));
    if (((Math.abs(ph0) > 1.0e-6) || (Math.abs(ph1) > 1.0e-6)) && !vec.isComplex()) {
        vec.hft();
    }
    double dValueHold = dValue;
    int nPoints = 0;
    if (incr != 1) {
        double[] ve = new double[end - start + 1];
        for (int i = start; i <= end; i++) {
            double p = ph0 + i * dDelta;
            if (vec.isComplex()) {
                Complex cmpPhas = new Complex(Math.cos(p * degtorad), -Math.sin(p * degtorad));
                Complex phasedValue = vec.getComplex(i - dataOffset).multiply(cmpPhas);
                if (drawReal) {
                    ve[i - start] = phasedValue.getReal();
                } else {
                    ve[i - start] = phasedValue.getImaginary();
                }
            } else {
                ve[i - start] = vec.getReal(i - dataOffset);
            }
        }
        nPoints = speedSpectrum(ve, start, start, end, dValue, delta, incr, xyValues, xFunction, yFunction);
    } else {
        nPoints = end - start + 1;
        if ((xyValues[0] == null) || (xyValues[0].length < nPoints)) {
            xyValues[0] = new double[nPoints];
            xyValues[1] = new double[nPoints];
        }
        int iLine = 0;
        for (int i = start; i <= end; i++) {
            double intensity;
            if (vec.isComplex()) {
                double p = ph0 + i * dDelta;
                Complex cmpPhas = new Complex(Math.cos(p * degtorad), -Math.sin(p * degtorad));
                Complex phasedValue = vec.getComplex(i - dataOffset).multiply(cmpPhas);
                if (drawReal) {
                    intensity = phasedValue.getReal();
                } else {
                    intensity = phasedValue.getImaginary();
                }
            } else {
                intensity = vec.getReal(i - dataOffset);
            }
            xyValues[0][iLine] = xFunction.applyAsDouble(dValue, intensity);
            xyValues[1][iLine++] = yFunction.applyAsDouble(dValue, intensity);
            dValue += delta;
        }
    }
    if (bcPath != null) {
        boolean[] signalPoints = vec.getSignalRegion();
        dValue = dValueHold;
        if (signalPoints != null) {
            boolean inBase = !signalPoints[start];
            int last = 0;
            for (int i = start; i < end; i++) {
                double intensity;
                if (vec.isComplex()) {
                    double p = ph0 + i * dDelta;
                    Complex cmpPhas = new Complex(Math.cos(p * degtorad), -Math.sin(p * degtorad));
                    Complex phasedValue = vec.getComplex(i - dataOffset).multiply(cmpPhas);
                    if (drawReal) {
                        intensity = phasedValue.getReal();
                    } else {
                        intensity = phasedValue.getImaginary();
                    }
                } else {
                    intensity = vec.getReal(i - dataOffset);
                }
                double xValue = xFunction.applyAsDouble(dValue, intensity);
                double yValue = yFunction.applyAsDouble(dValue, intensity);
                if (i == start) {
                    if (inBase) {
                        bcPath.getElements().add(new MoveTo(xValue, yValue));
                    }
                }
                if (i == (end - 1)) {
                    if (inBase) {
                        bcPath.getElements().add(new LineTo(xValue, yValue));
                    }
                }
                if (!signalPoints[i] != inBase) {
                    if (inBase) {
                        bcPath.getElements().add(new LineTo(xValue, yValue));
                        last = i;
                    } else {
                        bcPath.getElements().add(new MoveTo(xValue, yValue));
                    }
                }
                if ((i - last) > 10) {
                    if (inBase) {
                        bcPath.getElements().add(new LineTo(xValue, yValue));
                        last = i;
                    }
                }
                inBase = !signalPoints[i];
                dValue += delta;
            }
        }
    }
    return nPoints;

}