use of javafx.scene.Group in project Board-Instrumentation-Framework by intel.
the class PDF_ReaderWidget method Create.
@Override
public boolean Create(GridPane pane, DataManager dataMgr) {
SetParent(pane);
if (setupPDF()) {
_objGroup = new Group();
_objGroup.getChildren().add(_pdf);
ConfigureAlignment();
SetupPeekaboo(dataMgr);
SetupTaskAction();
ConfigureDimentions();
pane.add(_objGroup, getColumn(), getRow(), getColumnSpan(), getRowSpan());
gotoPage(_CurrPage);
if (_AutoAdvance) {
if (null == getMinionID() || null == getNamespace()) {
String ID = this.toString() + "." + Integer.toBinaryString(PDF_ReaderWidget._AutoAdvancePageNumber);
PDF_ReaderWidget._AutoAdvancePageNumber++;
if (null == getMinionID()) {
setMinionID(ID);
}
if (null == getNamespace()) {
setNamespace(ID);
}
}
MarvinTask mt = new MarvinTask();
mt.AddDataset(getMinionID(), getNamespace(), "Next");
TASKMAN.AddPostponedTask(mt, _AutoAdvanceInterval);
}
dataMgr.AddListener(getMinionID(), getNamespace(), new ChangeListener() {
@Override
public void changed(ObservableValue o, Object oldVal, Object newVal) {
MyHandler(newVal);
}
});
return ApplyCSS();
}
return false;
}
use of javafx.scene.Group in project tokentool by RPTools.
the class ImageUtil method composePreview.
public static Image composePreview(StackPane compositeTokenPane, Color bgColor, ImageView portraitImageView, ImageView maskImageView, ImageView overlayImageView, boolean useAsBase, boolean clipImage) {
// Process layout as maskImage may have changed size if the overlay was changed
compositeTokenPane.layout();
SnapshotParameters parameter = new SnapshotParameters();
Image finalImage = null;
Group blend;
if (clipImage) {
// We need to clip the portrait image first then blend the overlay image over it
// We will first get a snapshot of the portrait equal to the mask overlay image width/height
double x, y, width, height;
x = maskImageView.getParent().getLayoutX();
y = maskImageView.getParent().getLayoutY();
width = maskImageView.getFitWidth();
height = maskImageView.getFitHeight();
Rectangle2D viewPort = new Rectangle2D(x, y, width, height);
Rectangle2D maskViewPort = new Rectangle2D(1, 1, width, height);
WritableImage newImage = new WritableImage((int) width, (int) height);
WritableImage newMaskImage = new WritableImage((int) width, (int) height);
ImageView overlayCopyImageView = new ImageView();
ImageView clippedImageView = new ImageView();
parameter.setViewport(viewPort);
parameter.setFill(bgColor);
portraitImageView.snapshot(parameter, newImage);
parameter.setViewport(maskViewPort);
parameter.setFill(Color.TRANSPARENT);
maskImageView.setVisible(true);
maskImageView.snapshot(parameter, newMaskImage);
maskImageView.setVisible(false);
clippedImageView.setFitWidth(width);
clippedImageView.setFitHeight(height);
clippedImageView.setImage(clipImageWithMask(newImage, newMaskImage));
// Our masked portrait image is now stored in clippedImageView, lets now blend the overlay image over it
// We'll create a temporary group to hold our temporary ImageViews's and blend them and take a snapshot
overlayCopyImageView.setImage(overlayImageView.getImage());
overlayCopyImageView.setFitWidth(overlayImageView.getFitWidth());
overlayCopyImageView.setFitHeight(overlayImageView.getFitHeight());
overlayCopyImageView.setOpacity(overlayImageView.getOpacity());
if (useAsBase) {
blend = new Group(overlayCopyImageView, clippedImageView);
} else {
blend = new Group(clippedImageView, overlayCopyImageView);
}
// Last, we'll clean up any excess transparent edges by cropping it
finalImage = autoCropImage(blend.snapshot(parameter, null));
} else {
parameter.setFill(Color.TRANSPARENT);
finalImage = autoCropImage(compositeTokenPane.snapshot(parameter, null));
}
return finalImage;
}
use of javafx.scene.Group in project org.csstudio.display.builder by kasemir.
the class PictureRepresentation method createJFXNode.
@Override
public Group createJFXNode() throws Exception {
iv = new ImageView();
iv.setSmooth(true);
Group gr = new Group(border, iv);
gr.getTransforms().addAll(translate, rotation);
return gr;
}
use of javafx.scene.Group in project org.csstudio.display.builder by kasemir.
the class ImageScaling method start.
@Override
public void start(final Stage stage) {
// Image with red border
final WritableImage image = new WritableImage(WIDTH, HEIGHT);
final PixelWriter writer = image.getPixelWriter();
for (int x = 0; x < WIDTH; ++x) {
writer.setColor(x, 0, Color.RED);
writer.setColor(x, HEIGHT - 1, Color.RED);
}
for (int y = 0; y < HEIGHT; ++y) {
writer.setColor(0, y, Color.RED);
writer.setColor(WIDTH - 1, y, Color.RED);
}
// Draw into canvas, scaling 'up'
final Canvas canvas = new Canvas(800, 600);
canvas.getGraphicsContext2D().drawImage(image, 0, 0, canvas.getWidth(), canvas.getHeight());
final Scene scene = new Scene(new Group(canvas), canvas.getWidth(), canvas.getHeight());
stage.setScene(scene);
stage.show();
}
use of javafx.scene.Group in project org.csstudio.display.builder by kasemir.
the class TabDemo method start.
@Override
public void start(final Stage stage) {
// TabPane with some tabs
final TabPane tabs = new TabPane();
tabs.setStyle("-fx-background-color: red;");
for (int i = 0; i < 3; ++i) {
final Rectangle rect = new Rectangle(i * 100, 100, 10 + i * 100, 20 + i * 80);
rect.setFill(Color.BLUE);
final Pane content = new Pane(rect);
final Tab tab = new Tab("Tab " + (i + 1), content);
tab.setClosable(false);
tabs.getTabs().add(tab);
}
tabs.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
tabs.setPrefSize(400, 300);
final Group widgets = new Group(tabs);
widgets.setScaleX(0.5);
widgets.setScaleY(0.5);
final Group scroll_content = new Group(widgets);
final ScrollPane scroll = new ScrollPane(scroll_content);
final Scene scene = new Scene(scroll);
stage.setTitle("Tab Demo");
stage.setScene(scene);
stage.show();
// Unfortunately, the setup of ScrollPane -> Group -> Group -> TabPane
// breaks the rendering of the TabPane.
// While the red background shows the area occupied by TabPane,
// the actual Tabs are missing..
System.out.println("See anything?");
scene.addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent event) -> {
if (event.getCode() == KeyCode.SPACE) {
// .. until 'side' or 'tabMinWidth' or .. are twiddled to force a refresh
tabs.setSide(Side.BOTTOM);
tabs.setSide(Side.TOP);
System.out.println("See it now?");
}
});
}
Aggregations