Search in sources :

Example 11 with Group

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;
}
Also used : Group(javafx.scene.Group) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener) MarvinTask(kutch.biff.marvin.task.MarvinTask)

Example 12 with Group

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;
}
Also used : Group(javafx.scene.Group) WritableImage(javafx.scene.image.WritableImage) SnapshotParameters(javafx.scene.SnapshotParameters) Rectangle2D(javafx.geometry.Rectangle2D) ImageView(javafx.scene.image.ImageView) BufferedImage(java.awt.image.BufferedImage) WritableImage(javafx.scene.image.WritableImage) Image(javafx.scene.image.Image)

Example 13 with Group

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;
}
Also used : Group(javafx.scene.Group) ImageView(javafx.scene.image.ImageView)

Example 14 with Group

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();
}
Also used : WritableImage(javafx.scene.image.WritableImage) Group(javafx.scene.Group) Canvas(javafx.scene.canvas.Canvas) PixelWriter(javafx.scene.image.PixelWriter) Scene(javafx.scene.Scene)

Example 15 with Group

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?");
        }
    });
}
Also used : KeyEvent(javafx.scene.input.KeyEvent) TabPane(javafx.scene.control.TabPane) Group(javafx.scene.Group) Tab(javafx.scene.control.Tab) ScrollPane(javafx.scene.control.ScrollPane) Rectangle(javafx.scene.shape.Rectangle) Scene(javafx.scene.Scene) ScrollPane(javafx.scene.control.ScrollPane) TabPane(javafx.scene.control.TabPane) Pane(javafx.scene.layout.Pane)

Aggregations

Group (javafx.scene.Group)121 Scene (javafx.scene.Scene)64 Rotate (javafx.scene.transform.Rotate)41 KeyCode (javafx.scene.input.KeyCode)32 PerspectiveCamera (javafx.scene.PerspectiveCamera)31 MouseEvent (javafx.scene.input.MouseEvent)28 Text (javafx.scene.text.Text)25 PointLight (javafx.scene.PointLight)24 Color (javafx.scene.paint.Color)24 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)16 Pane (javafx.scene.layout.Pane)16 AnimationTimer (javafx.animation.AnimationTimer)15 ArrayList (java.util.ArrayList)14 Node (javafx.scene.Node)14 Label (javafx.scene.control.Label)14 Rectangle (javafx.scene.shape.Rectangle)13 Translate (javafx.scene.transform.Translate)13 Canvas (javafx.scene.canvas.Canvas)11 Stage (javafx.stage.Stage)11 Point3D (org.fxyz.geometry.Point3D)11