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);
}
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;
}
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);
}
}
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));
}
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));
}
}
Aggregations