Search in sources :

Example 81 with Rectangle2D

use of javafx.geometry.Rectangle2D in project jvarkit by lindenb.

the class AbstractJfxApplication method start.

@Override
public void start(Stage stage) throws Exception {
    Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
    stage.setX(50);
    stage.setY(50);
    stage.setWidth(primaryScreenBounds.getWidth() - 100);
    stage.setHeight(primaryScreenBounds.getHeight() - 100);
    stage.show();
    this.runCommandButton.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            doCommandStart(event);
        }
    });
    this.cancelCommandButton.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            doCommandEnd(event);
        }
    });
    this.cancelCommandButton.setDisable(true);
    this.printToConsole = new PrintStream(new Console(console), true);
}
Also used : PrintStream(java.io.PrintStream) ActionEvent(javafx.event.ActionEvent) Rectangle2D(javafx.geometry.Rectangle2D)

Example 82 with Rectangle2D

use of javafx.geometry.Rectangle2D in project jvarkit by lindenb.

the class CaseControlJfx method doWork.

@Override
public int doWork(final Stage primaryStage, final List<String> args) {
    final VariantPartition partition;
    Pedigree pedigree = null;
    VcfIterator in = null;
    try {
        switch(this.partitionType) {
            case variantType:
                partition = new VariantTypePartition();
                break;
            case chromosome:
                partition = new ChromosomePartition();
                break;
            case autosomes:
                partition = new SexualContigPartition();
                break;
            case qual:
                partition = new QualPartition();
                break;
            case vqslod:
                partition = new VQSLODPartition();
                break;
            case typeFilter:
                partition = new TypeAndFilterPartiton();
                break;
            case distance:
                partition = new DisanceToDiagonalPartiton();
                break;
            case n_alts:
                partition = new NAltsPartition();
                break;
            default:
                throw new IllegalStateException(this.partitionType.name());
        }
        if (args.isEmpty()) {
            in = VCFUtils.createVcfIteratorStdin();
            primaryStage.setTitle(CaseControlJfx.class.getSimpleName());
        } else if (args.size() == 1) {
            in = VCFUtils.createVcfIterator(args.get(0));
            primaryStage.setTitle(args.get(0));
        } else {
            LOG.error("Illegal Number of arguments: " + args);
            return -1;
        }
        if (this.pedigreeFile != null) {
            pedigree = Pedigree.newParser().parse(this.pedigreeFile);
        } else {
            pedigree = Pedigree.newParser().parse(in.getHeader());
        }
        if (this.controlTag != null) {
            final VCFInfoHeaderLine infoHeaderLine = in.getHeader().getInfoHeaderLine(this.controlTag);
            if (infoHeaderLine == null) {
                LOG.error("No such attribute in the VCF header: " + this.controlTag);
                return -1;
            }
        }
        int count = 0;
        final SAMSequenceDictionaryProgress progress = new SAMSequenceDictionaryProgress(in.getHeader());
        while (in.hasNext() && (this.limit_to_N_variants < 0 || count < this.limit_to_N_variants)) {
            final VariantContext ctx = progress.watch(in.next());
            if (this.ignore_ctx_filtered && ctx.isFiltered())
                continue;
            ++count;
            final List<Allele> alternates = ctx.getAlternateAlleles();
            for (int alt_idx = 0; alt_idx < alternates.size(); ++alt_idx) {
                final Allele alt = alternates.get(alt_idx);
                final Double[] mafs = { null, null };
                for (int i = 0; i < 2; ++i) {
                    if (i == 1 && this.controlTag != null) {
                        if (ctx.hasAttribute(this.controlTag)) {
                            try {
                                final List<Double> dvals = ctx.getAttributeAsDoubleList(this.controlTag, Double.NaN);
                                if (alt_idx < dvals.size() && dvals.get(alt_idx) != null) {
                                    final double d = dvals.get(alt_idx);
                                    if (!Double.isNaN(d) && d >= 0 && d <= 1.0)
                                        mafs[1] = d;
                                }
                            } catch (NumberFormatException err) {
                            }
                        }
                    } else {
                        final MafCalculator mafCalculator = new MafCalculator(alt, ctx.getContig());
                        mafCalculator.setNoCallIsHomRef(no_call_is_homref);
                        for (Pedigree.Person person : (i == 0 ? pedigree.getAffected() : pedigree.getUnaffected())) {
                            if (selectSamples.equals(SelectSamples.males) && !person.isMale())
                                continue;
                            if (selectSamples.equals(SelectSamples.females) && !person.isFemale())
                                continue;
                            final Genotype genotype = ctx.getGenotype(person.getId());
                            if (genotype == null)
                                continue;
                            if (ignore_gt_filtered && genotype.isFiltered())
                                continue;
                            mafCalculator.add(genotype, person.isMale());
                        }
                        if (!mafCalculator.isEmpty()) {
                            mafs[i] = mafCalculator.getMaf();
                        }
                    }
                }
                if (mafs[0] == null || mafs[1] == null)
                    continue;
                final XYChart.Data<Number, Number> data = new XYChart.Data<Number, Number>(mafs[0], mafs[1]);
                if (this.add_tooltip && this.outputFile == null) {
                    data.setExtraValue(ctx.getContig() + ":" + ctx.getStart());
                }
                partition.add(ctx, pedigree, data);
            }
        }
        progress.finish();
        in.close();
        in = null;
    } catch (final Exception err) {
        LOG.error(err);
        return -1;
    } finally {
        CloserUtil.close(in);
    }
    final NumberAxis xAxis = new NumberAxis(0.0, 1.0, 0.1);
    xAxis.setLabel("Cases");
    final NumberAxis yAxis = new NumberAxis(0.0, 1.0, 0.1);
    yAxis.setLabel("Controls" + (this.controlTag == null ? "" : "[" + this.controlTag + "]"));
    final ScatterChart<Number, Number> chart = new ScatterChart<>(xAxis, yAxis);
    for (final XYChart.Series<Number, Number> series : partition.getSeries()) {
        chart.getData().add(series);
    }
    String title = "Case/Control";
    if (!args.isEmpty()) {
        title = args.get(0);
        int slash = title.lastIndexOf("/");
        if (slash != -1)
            title = title.substring(slash + 1);
        if (title.endsWith(".vcf.gz"))
            title = title.substring(0, title.length() - 7);
        if (title.endsWith(".vcf"))
            title = title.substring(0, title.length() - 4);
    }
    if (userTitle != null)
        title = userTitle;
    chart.setTitle(title);
    chart.setAnimated(false);
    chart.setLegendSide(this.legendSide);
    final VBox root = new VBox();
    MenuBar menuBar = new MenuBar();
    Menu menu = new Menu("File");
    MenuItem item = new MenuItem("Save image as...");
    item.setOnAction(AE -> {
        doMenuSave(chart);
    });
    menu.getItems().add(item);
    menu.getItems().add(new SeparatorMenuItem());
    item = new MenuItem("Quit");
    item.setOnAction(AE -> {
        Platform.exit();
    });
    menu.getItems().add(item);
    menuBar.getMenus().add(menu);
    root.getChildren().add(menuBar);
    final BorderPane contentPane = new BorderPane();
    contentPane.setCenter(chart);
    root.getChildren().add(contentPane);
    Rectangle2D screen = Screen.getPrimary().getVisualBounds();
    double minw = Math.max(Math.min(screen.getWidth(), screen.getHeight()) - 50, 50);
    chart.setPrefSize(minw, minw);
    final Scene scene = new Scene(root, minw, minw);
    primaryStage.setScene(scene);
    if (this.outputFile != null) {
        primaryStage.setOnShown(WE -> {
            LOG.info("saving as " + this.outputFile);
            try {
                saveImageAs(chart, this.outputFile);
            } catch (IOException err) {
                LOG.error(err);
                System.exit(-1);
            }
            Platform.exit();
        });
    }
    primaryStage.show();
    if (this.outputFile == null) {
        // http://stackoverflow.com/questions/14117867
        for (final XYChart.Series<Number, Number> series : partition.getSeries()) {
            for (XYChart.Data<Number, Number> d : series.getData()) {
                if (dataOpacity >= 0 && dataOpacity < 1.0) {
                    d.getNode().setStyle(d.getNode().getStyle() + "-fx-opacity:0.3;");
                }
                if (this.add_tooltip) {
                    final Tooltip tooltip = new Tooltip();
                    tooltip.setText(String.format("%s (%f / %f)", String.valueOf(d.getExtraValue()), d.getXValue().doubleValue(), d.getYValue().doubleValue()));
                    Tooltip.install(d.getNode(), tooltip);
                }
            }
        }
    }
    return 0;
}
Also used : BorderPane(javafx.scene.layout.BorderPane) NumberAxis(javafx.scene.chart.NumberAxis) ScatterChart(javafx.scene.chart.ScatterChart) VariantContext(htsjdk.variant.variantcontext.VariantContext) MenuBar(javafx.scene.control.MenuBar) VcfIterator(com.github.lindenb.jvarkit.util.vcf.VcfIterator) Menu(javafx.scene.control.Menu) SAMSequenceDictionaryProgress(com.github.lindenb.jvarkit.util.picard.SAMSequenceDictionaryProgress) Tooltip(javafx.scene.control.Tooltip) Rectangle2D(javafx.geometry.Rectangle2D) Genotype(htsjdk.variant.variantcontext.Genotype) MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) IOException(java.io.IOException) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) Scene(javafx.scene.Scene) VCFInfoHeaderLine(htsjdk.variant.vcf.VCFInfoHeaderLine) IOException(java.io.IOException) Allele(htsjdk.variant.variantcontext.Allele) Pedigree(com.github.lindenb.jvarkit.util.Pedigree) XYChart(javafx.scene.chart.XYChart) VBox(javafx.scene.layout.VBox)

Example 83 with Rectangle2D

use of javafx.geometry.Rectangle2D in project dolphin-platform by canoo.

the class RoundImageViewSkin method layoutChildren.

@Override
protected void layoutChildren(double contentX, double contentY, double contentWidth, double contentHeight) {
    if (contentHeight > contentWidth) {
        contentY = contentY + (contentHeight - contentWidth) / 2;
        contentHeight = contentWidth;
    } else {
        contentX = contentX + (contentWidth - contentHeight) / 2;
        contentWidth = contentHeight;
    }
    overlayCircle.setCenterX(contentX + contentWidth / 2);
    overlayCircle.setCenterY(contentY + contentHeight / 2);
    overlayCircle.setRadius(contentHeight / 2);
    imageView.relocate(contentX, contentY);
    imageView.resize(contentWidth, contentHeight);
    if (imageView.getImage() != null) {
        Image currentImage = imageView.getImage();
        circleClip.setCenterX(contentWidth / 2);
        if (currentImage.getHeight() > currentImage.getWidth()) {
            imageView.setFitWidth(contentWidth);
            imageView.setFitHeight(-1);
            double factor = currentImage.getWidth() / contentWidth;
            imageView.setViewport(new Rectangle2D(0, (currentImage.getHeight() - contentHeight * factor) / 2, currentImage.getWidth(), currentImage.getHeight()));
        } else {
            imageView.setFitHeight(contentHeight);
            imageView.setFitWidth(-1);
            double factor = currentImage.getHeight() / contentHeight;
            imageView.setViewport(new Rectangle2D((currentImage.getWidth() - contentWidth * factor) / 2, 0, currentImage.getWidth(), currentImage.getHeight()));
        }
        circleClip.setCenterY(contentWidth / 2);
        circleClip.setRadius(contentWidth / 2);
    }
}
Also used : Rectangle2D(javafx.geometry.Rectangle2D) Image(javafx.scene.image.Image)

Example 84 with Rectangle2D

use of javafx.geometry.Rectangle2D in project Board-Instrumentation-Framework by intel.

the class AliasMgr method addMarvinInfo.

public void addMarvinInfo() {
    try {
        String current = new java.io.File(".").getCanonicalPath();
        AddRootAlias("WORKING_DIR", current);
        String path = new File(".").toURI().toString();
        AddRootAlias("WORKING_DIR_URI", path);
    } catch (IOException ex) {
    }
    Configuration CONFIG = Configuration.getConfig();
    Rectangle2D visualBounds = CONFIG.getPrimaryScreen().getVisualBounds();
    double Width = CONFIG.getWidth();
    double Height = CONFIG.getHeight();
    // use configured dimensions, otherwise use screen;
    if (Width == 0.0) {
        Width = visualBounds.getWidth();
    }
    if (Height == 0.0) {
        Height = visualBounds.getHeight();
    }
    // Width = Width - CONFIG.getAppBorderWidth() * 2;
    // Height = Height - CONFIG.getBottomOffset() - CONFIG.getTopOffset();
    double H2W_Ratio = Width / Height;
    double W2H_Ratio = Height / Width;
    H2W_Ratio = visualBounds.getWidth() / visualBounds.getHeight();
    W2H_Ratio = visualBounds.getHeight() / visualBounds.getWidth();
    AddRootAlias("CANVAS_WIDTH", Integer.toString(Configuration.getConfig().getCanvasWidth()));
    AddRootAlias("CANVAS_HEIGHT", Integer.toString(Configuration.getConfig().getCanvasHeight()));
    AddRootAlias("SCREEN_H2W_RATIO", Double.toString(H2W_Ratio));
    AddRootAlias("SCREEN_W2H_RATIO", Double.toString(W2H_Ratio));
}
Also used : Configuration(kutch.biff.marvin.configuration.Configuration) Rectangle2D(javafx.geometry.Rectangle2D) IOException(java.io.IOException) OpenXMLFile(kutch.biff.marvin.configuration.ConfigurationReader.OpenXMLFile) File(java.io.File) File(java.io.File)

Example 85 with Rectangle2D

use of javafx.geometry.Rectangle2D in project Board-Instrumentation-Framework by intel.

the class DynamicTransition method splitImageY.

/**
 * Split the given images into horizontal tiles defined by noOfTilesY
 *
 * @param FRONT_IMAGE
 * @param BACK_IMAGE
 */
private void splitImageY(final Image FRONT_IMAGE, final Image BACK_IMAGE) {
    viewPorts.clear();
    for (int i = 0; i < noOfTilesY; i++) {
        // Create the viewports
        viewPorts.add(new Rectangle2D(0, i * stepSizeY, FRONT_IMAGE.getWidth(), stepSizeY));
        // Update the frontside imageviews
        imageViewsFront.get(i).getTransforms().clear();
        imageViewsFront.get(i).toFront();
        imageViewsFront.get(i).setImage(FRONT_IMAGE);
        imageViewsFront.get(i).setViewport(viewPorts.get(i));
        // Update the backside imageviews
        imageViewsBack.get(i).getTransforms().clear();
        imageViewsBack.get(i).setImage(BACK_IMAGE);
        imageViewsBack.get(i).setViewport(viewPorts.get(i));
    }
}
Also used : Rectangle2D(javafx.geometry.Rectangle2D)

Aggregations

Rectangle2D (javafx.geometry.Rectangle2D)96 Image (javafx.scene.image.Image)14 Point2D (javafx.geometry.Point2D)13 Scene (javafx.scene.Scene)11 Color (javafx.scene.paint.Color)11 Screen (javafx.stage.Screen)11 List (java.util.List)8 IOException (java.io.IOException)7 Rectangle (javafx.scene.shape.Rectangle)7 Stage (javafx.stage.Stage)7 GameApplication (com.almasb.fxgl.app.GameApplication)6 GameSettings (com.almasb.fxgl.app.GameSettings)6 FXGL (com.almasb.fxgl.dsl.FXGL)6 KeyCode (javafx.scene.input.KeyCode)6 Duration (javafx.util.Duration)6 Interpolators (com.almasb.fxgl.animation.Interpolators)4 FXGLMath (com.almasb.fxgl.core.math.FXGLMath)4 Entity (com.almasb.fxgl.entity.Entity)4 BufferedImage (java.awt.image.BufferedImage)4 Collectors (java.util.stream.Collectors)4