use of javafx.scene.layout.Region in project Board-Instrumentation-Framework by intel.
the class RadialBargraphSkin method initGraphics.
private void initGraphics() {
// "OpenSans"
Font.loadFont(getClass().getResourceAsStream("/eu/hansolo/enzo/fonts/opensans-semibold.ttf"), (0.06 * PREFERRED_HEIGHT));
barColor = getSkinnable().getBarColor();
barGradient = new ConicalGradient(new Stop(0.0, Color.TRANSPARENT), new Stop(1.0, Color.TRANSPARENT));
valueBlendBottomShadow = new DropShadow();
valueBlendBottomShadow.setBlurType(BlurType.TWO_PASS_BOX);
valueBlendBottomShadow.setColor(Color.rgb(255, 255, 255, 0.5));
valueBlendBottomShadow.setOffsetX(0);
valueBlendBottomShadow.setOffsetY(0.005 * PREFERRED_WIDTH);
valueBlendBottomShadow.setRadius(0);
valueBlendTopShadow = new InnerShadow();
valueBlendTopShadow.setBlurType(BlurType.TWO_PASS_BOX);
valueBlendTopShadow.setColor(Color.rgb(0, 0, 0, 0.7));
valueBlendTopShadow.setOffsetX(0);
valueBlendTopShadow.setOffsetY(0.005 * PREFERRED_WIDTH);
valueBlendTopShadow.setRadius(0.005 * PREFERRED_WIDTH);
blend = new Blend();
blend.setMode(BlendMode.MULTIPLY);
blend.setBottomInput(valueBlendBottomShadow);
blend.setTopInput(valueBlendTopShadow);
background = new Region();
background.getStyleClass().setAll("background");
ticksAndSectionsCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
ticksAndSections = ticksAndSectionsCanvas.getGraphicsContext2D();
minMeasuredValue = new Region();
minMeasuredValue.getStyleClass().setAll("min-measured-value");
minMeasuredValueRotate = new Rotate(180 - getSkinnable().getStartAngle());
minMeasuredValue.getTransforms().setAll(minMeasuredValueRotate);
minMeasuredValue.setOpacity(getSkinnable().isMinMeasuredValueVisible() ? 1 : 0);
minMeasuredValue.setManaged(getSkinnable().isMinMeasuredValueVisible());
maxMeasuredValue = new Region();
maxMeasuredValue.getStyleClass().setAll("max-measured-value");
maxMeasuredValueRotate = new Rotate(180 - getSkinnable().getStartAngle());
maxMeasuredValue.getTransforms().setAll(maxMeasuredValueRotate);
maxMeasuredValue.setOpacity(getSkinnable().isMaxMeasuredValueVisible() ? 1 : 0);
maxMeasuredValue.setManaged(getSkinnable().isMaxMeasuredValueVisible());
threshold = new Region();
threshold.getStyleClass().setAll("threshold");
thresholdRotate = new Rotate(180 - getSkinnable().getStartAngle());
threshold.getTransforms().setAll(thresholdRotate);
threshold.setOpacity(getSkinnable().isThresholdVisible() ? 1 : 0);
threshold.setManaged(getSkinnable().isThresholdVisible());
thresholdExceeded = false;
bar = new Arc();
bar.setType(ArcType.ROUND);
bar.setCenterX(PREFERRED_WIDTH * 0.5);
bar.setCenterY(PREFERRED_HEIGHT * 0.5);
bar.setRadiusX(PREFERRED_WIDTH * 0.5 - 4);
bar.setRadiusY(PREFERRED_HEIGHT * 0.5 - 4);
bar.setStartAngle(getSkinnable().getStartAngle() - 90);
bar.setLength(0);
bar.setStrokeType(StrokeType.CENTERED);
bar.setStroke(null);
bar.setFill(new RadialGradient(0, 0, PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.5, PREFERRED_WIDTH * 0.45, false, CycleMethod.NO_CYCLE, new Stop(0.0, barColor), // -5 for on the barColorHue)
new Stop(0.76, barColor.deriveColor(-5, 1, 1, 1)), new Stop(0.79, barColor), new Stop(0.97, barColor), // -5 for on the barColorHue)
new Stop(1.0, barColor.deriveColor(-5, 1, 1, 1))));
knob = new Region();
knob.setPickOnBounds(false);
knob.getStyleClass().setAll("knob");
dropShadow = new DropShadow();
dropShadow.setColor(Color.rgb(0, 0, 0, 0.25));
dropShadow.setBlurType(BlurType.TWO_PASS_BOX);
dropShadow.setRadius(0.015 * PREFERRED_WIDTH);
dropShadow.setOffsetY(0.015 * PREFERRED_WIDTH);
title = new Text(getSkinnable().getTitle());
title.setMouseTransparent(true);
title.setTextOrigin(VPos.CENTER);
title.getStyleClass().setAll("title");
title.setEffect(getSkinnable().isPlainValue() ? null : blend);
unit = new Text(getSkinnable().getUnit());
unit.setMouseTransparent(true);
unit.setTextOrigin(VPos.CENTER);
unit.getStyleClass().setAll("unit");
unit.setEffect(getSkinnable().isPlainValue() ? null : blend);
value = new Text();
value.setText(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getValue()));
value.setMouseTransparent(true);
value.setTextOrigin(VPos.CENTER);
value.getStyleClass().setAll("value");
value.setEffect(getSkinnable().isPlainValue() ? null : blend);
// Set initial value
double range = (getSkinnable().getMaxValue() - getSkinnable().getMinValue());
double angleRange = getSkinnable().getAngleRange();
angleStep = angleRange / range;
double targetAngle = getSkinnable().getValue() * angleStep;
angle.set(targetAngle);
double currentValue = angle.get() / angleStep;
value.setText(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", currentValue));
value.setTranslateX((size - value.getLayoutBounds().getWidth()) * 0.5);
bar.setLength(-currentValue * angleStep);
// Add all nodes
pane = new Pane();
pane.getChildren().setAll(background, bar, ticksAndSectionsCanvas, minMeasuredValue, maxMeasuredValue, threshold, knob, title, unit, value);
pane.getChildren().addAll(getSkinnable().getMarkers().keySet());
getChildren().setAll(pane);
}
use of javafx.scene.layout.Region in project Board-Instrumentation-Framework by intel.
the class RadialGaugeSkin method initGraphics.
private void initGraphics() {
background = new Region();
background.getStyleClass().setAll("background");
ticksAndSectionsCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
ticksAndSections = ticksAndSectionsCanvas.getGraphicsContext2D();
innerShadow = new InnerShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.65), 8, 0d, 0d, 0d);
glow = new DropShadow(BlurType.TWO_PASS_BOX, getSkinnable().getLedColor(), 20, 0d, 0d, 0d);
glow.setInput(innerShadow);
ledFrame = new Region();
ledFrame.getStyleClass().setAll("led-frame");
ledMain = new Region();
ledMain.getStyleClass().setAll("led-main");
ledMain.setStyle("-led-color: " + (colorToCss(getSkinnable().getLedColor())) + ";");
ledHl = new Region();
ledHl.getStyleClass().setAll("led-hl");
needle = new Region();
needle.getStyleClass().setAll(RadialGauge.STYLE_CLASS_NEEDLE_STANDARD);
needleRotate = new Rotate(180 - getSkinnable().getStartAngle());
needleRotate.setAngle(needleRotate.getAngle() + (getSkinnable().getValue() - oldValue - getSkinnable().getMinValue()) * angleStep);
needle.getTransforms().setAll(needleRotate);
needleHighlight = new Region();
needleHighlight.setMouseTransparent(true);
needleHighlight.getStyleClass().setAll("needle-highlight");
needleHighlight.getTransforms().setAll(needleRotate);
knob = new Region();
knob.setPickOnBounds(false);
knob.getStyleClass().setAll("knob");
dropShadow = new DropShadow();
dropShadow.setColor(Color.rgb(0, 0, 0, 0.25));
dropShadow.setBlurType(BlurType.TWO_PASS_BOX);
dropShadow.setRadius(0.015 * PREFERRED_WIDTH);
dropShadow.setOffsetY(0.015 * PREFERRED_WIDTH);
shadowGroup = new Group(needle, needleHighlight, knob);
shadowGroup.setEffect(getSkinnable().isDropShadowEnabled() ? dropShadow : null);
titleText = new Text(getSkinnable().getTitle());
titleText.setTextOrigin(VPos.CENTER);
titleText.getStyleClass().setAll("title");
unitText = new Text(getSkinnable().getUnit());
unitText.setMouseTransparent(true);
unitText.setTextOrigin(VPos.CENTER);
unitText.getStyleClass().setAll("unit");
valueText = new Text(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getValue()));
valueText.setMouseTransparent(true);
valueText.setTextOrigin(VPos.CENTER);
valueText.getStyleClass().setAll("value");
// Set initial value
angleStep = getSkinnable().getAngleRange() / (getSkinnable().getMaxValue() - getSkinnable().getMinValue());
double targetAngle = 180 - getSkinnable().getStartAngle() + (getSkinnable().getValue() - getSkinnable().getMinValue()) * angleStep;
targetAngle = clamp(180 - getSkinnable().getStartAngle(), 180 - getSkinnable().getStartAngle() + getSkinnable().getAngleRange(), targetAngle);
needleRotate.setAngle(targetAngle);
// Add all nodes
pane = new Pane();
pane.getChildren().setAll(background, ticksAndSectionsCanvas, titleText, ledFrame, ledMain, ledHl, unitText, valueText, shadowGroup);
getChildren().setAll(pane);
}
use of javafx.scene.layout.Region in project Board-Instrumentation-Framework by intel.
the class RadialSkin method initGraphics.
private void initGraphics() {
background = new Region();
background.getStyleClass().setAll("background");
ticksAndSectionsCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
ticksAndSections = ticksAndSectionsCanvas.getGraphicsContext2D();
innerShadow = new InnerShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.65), 8, 0d, 0d, 0d);
glow = new DropShadow(BlurType.TWO_PASS_BOX, getSkinnable().getLedColor(), 20, 0d, 0d, 0d);
glow.setInput(innerShadow);
ledFrame = new Region();
ledFrame.getStyleClass().setAll("led-frame");
ledMain = new Region();
ledMain.getStyleClass().setAll("led-main");
ledMain.setStyle("-led-color: " + (colorToCss(getSkinnable().getLedColor())) + ";");
ledHl = new Region();
ledHl.getStyleClass().setAll("led-hl");
titleText = new Text(getSkinnable().getTitle());
titleText.getStyleClass().setAll("title");
unitText = new Text(getSkinnable().getUnit());
unitText.getStyleClass().setAll("unit");
lcdText = new Label(getSkinnable().getNumberFormat().format(getSkinnable().getValue()));
lcdText.getStyleClass().setAll("lcd-text");
angleStep = getSkinnable().getAngleRange() / (getSkinnable().getMaxValue() - getSkinnable().getMinValue());
double targetAngle = 180 - getSkinnable().getStartAngle() + (getSkinnable().getValue() - getSkinnable().getMinValue()) * angleStep;
targetAngle = getSkinnable().clamp(180 - getSkinnable().getStartAngle(), 180 - getSkinnable().getStartAngle() + getSkinnable().getAngleRange(), targetAngle);
needle = new Region();
needle.getStyleClass().setAll("needle");
needleRotate = new Rotate(180 - getSkinnable().getStartAngle());
needleRotate.setAngle(targetAngle);
needle.getTransforms().setAll(needleRotate);
needleColorBlock = new Region();
needleColorBlock.getStyleClass().setAll("needle-color-block");
needleColorBlock.setStyle("-needle-color: " + (colorToCss(getSkinnable().getNeedleColor())) + ";");
needleColorBlockRotate = new Rotate(180 - getSkinnable().getStartAngle());
needleColorBlock.getTransforms().setAll(needleColorBlockRotate);
minPost = new Region();
minPost.getStyleClass().setAll("post");
maxPost = new Region();
maxPost.getStyleClass().setAll("post");
knob = new Region();
knob.getStyleClass().setAll("knob");
shadowGroup = new Group(needle, minPost, maxPost, knob);
dropShadow = new DropShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.65), 2.5, 0, 0, 2.5);
shadowGroup.setEffect(dropShadow);
foreground = new Region();
foreground.getStyleClass().setAll("foreground");
pane = new Pane();
pane.getChildren().setAll(background, ticksAndSectionsCanvas, unitText, titleText, ledFrame, ledMain, ledHl, lcdText, shadowGroup, needleColorBlock, foreground);
getChildren().setAll(pane);
resize();
}
use of javafx.scene.layout.Region in project Board-Instrumentation-Framework by intel.
the class LcdSkin method initGraphics.
private void initGraphics() {
main = new Region();
main.getStyleClass().setAll("main");
main.setOpacity(getSkinnable().isBackgroundVisible() ? 1 : 0);
mainInnerShadow0 = new InnerShadow();
mainInnerShadow0.setOffsetX(0.0);
mainInnerShadow0.setOffsetY(0.0);
mainInnerShadow0.setRadius(3.0 / 132.0 * PREFERRED_WIDTH);
mainInnerShadow0.setColor(Color.web("0xffffff80"));
mainInnerShadow0.setBlurType(BlurType.TWO_PASS_BOX);
mainInnerShadow1 = new InnerShadow();
mainInnerShadow1.setOffsetX(0.0);
mainInnerShadow1.setOffsetY(1.0);
mainInnerShadow1.setRadius(2.0 / 132.0 * PREFERRED_WIDTH);
mainInnerShadow1.setColor(Color.web("0x000000a6"));
mainInnerShadow1.setBlurType(BlurType.TWO_PASS_BOX);
mainInnerShadow1.setInput(mainInnerShadow0);
main.setEffect(getSkinnable().isMainInnerShadowVisible() ? mainInnerShadow1 : null);
crystalClip = new Rectangle(0, 0, width, height);
crystalClip.setArcWidth(5);
crystalClip.setArcHeight(5);
crystalImage = createNoiseImage(PREFERRED_WIDTH, PREFERRED_HEIGHT, DARK_NOISE_COLOR, BRIGHT_NOISE_COLOR, 8);
crystalOverlay = new ImageView(crystalImage);
crystalOverlay.setClip(crystalClip);
crystalOverlay.setOpacity(getSkinnable().isCrystalOverlayVisible() ? 1 : 0);
threshold = new Region();
threshold.getStyleClass().setAll("threshold");
threshold.setOpacity(0);
trendDown = new Region();
trendDown.getStyleClass().setAll("trend-down");
trendDown.setOpacity((getSkinnable().isTrendVisible() && Lcd.Trend.DOWN == getSkinnable().getTrend()) ? 1 : 0);
trendFalling = new Region();
trendFalling.getStyleClass().setAll("trend-falling");
trendFalling.setOpacity((getSkinnable().isTrendVisible() && Lcd.Trend.FALLING == getSkinnable().getTrend()) ? 1 : 0);
trendSteady = new Region();
trendSteady.getStyleClass().setAll("trend-steady");
trendSteady.setOpacity((getSkinnable().isTrendVisible() && Lcd.Trend.STEADY == getSkinnable().getTrend()) ? 1 : 0);
trendRising = new Region();
trendRising.getStyleClass().setAll("trend-rising");
trendRising.setOpacity((getSkinnable().isTrendVisible() && Lcd.Trend.RISING == getSkinnable().getTrend()) ? 1 : 0);
trendUp = new Region();
trendUp.getStyleClass().setAll("trend-up");
trendUp.setOpacity((getSkinnable().isTrendVisible() && Lcd.Trend.UP == getSkinnable().getTrend()) ? 1 : 0);
battery = new Region();
battery.getStyleClass().setAll("battery-empty");
battery.setOpacity(getSkinnable().isBatteryVisible() ? 1 : 0);
signal = new Region();
signal.getStyleClass().setAll("signal");
signal.setOpacity(getSkinnable().isSignalVisible() ? 1 : 0);
alarm = new Region();
alarm.getStyleClass().setAll("alarm");
alarm.setOpacity(getSkinnable().isAlarmVisible() ? 1 : 0);
if (getSkinnable().isTextMode() && getSkinnable().getValueFont() == LcdFont.LCD) {
getSkinnable().setValueFont(LcdFont.DIGITAL);
}
backgroundText = new Text(getSkinnable().isTextMode() ? getSkinnable().getText() : Double.toString(getSkinnable().getValue()));
backgroundText.getStyleClass().setAll("fg-trsp");
backgroundText.setOpacity((Lcd.LcdFont.LCD == getSkinnable().getValueFont() || Lcd.LcdFont.ELEKTRA == getSkinnable().getValueFont()) ? 1 : 0);
text = new Text(getSkinnable().isTextMode() ? getSkinnable().getText() : Double.toString(getSkinnable().getValue()));
text.getStyleClass().setAll("fg");
unitText = new Text(getSkinnable().getUnit());
unitText.getStyleClass().setAll("fg");
unitText.setOpacity(getSkinnable().isUnitVisible() ? 1 : 0);
unitText.visibleProperty().bind(getSkinnable().unitVisibleProperty());
title = new Text(getSkinnable().getTitle());
title.getStyleClass().setAll("fg");
title.setOpacity(getSkinnable().isTitleVisible() ? 1 : 0);
lowerRightText = getSkinnable().isNumberSystemVisible() ? new Text(getSkinnable().getNumberSystem().toString()) : new Text(getSkinnable().getLowerRightText());
lowerRightText.getStyleClass().setAll("fg");
lowerRightText.setOpacity(getSkinnable().isLowerRightTextVisible() ? 1 : 0);
upperLeftText = getSkinnable().isMinMeasuredValueVisible() ? new Text(Double.toString(getSkinnable().getMaxValue())) : new Text(getSkinnable().getUpperLeftText());
upperLeftText.getStyleClass().setAll("fg");
upperLeftText.setOpacity(getSkinnable().isMinMeasuredValueVisible() ? 1 : 0);
upperRightText = getSkinnable().isMaxMeasuredValueVisible() ? new Text(Double.toString(getSkinnable().getMinValue())) : new Text(getSkinnable().getUpperRightText());
upperRightText.getStyleClass().setAll("fg");
upperRightText.setOpacity(getSkinnable().isMaxMeasuredValueVisible() ? 1 : 0);
lowerCenterText = new Text(getSkinnable().isFormerValueVisible() ? Double.toString(getSkinnable().getFormerValue()) : getSkinnable().getLowerCenterText());
lowerCenterText.getStyleClass().setAll("fg");
shadowGroup = new Group();
shadowGroup.setEffect(getSkinnable().isForegroundShadowVisible() ? FOREGROUND_SHADOW : null);
shadowGroup.getChildren().setAll(threshold, trendDown, trendFalling, trendSteady, trendRising, trendUp, battery, signal, alarm, text, unitText, title, lowerRightText, upperLeftText, upperRightText, lowerCenterText);
pane = new Pane();
pane.getChildren().setAll(main, crystalOverlay, backgroundText, shadowGroup);
getChildren().setAll(pane);
}
use of javafx.scene.layout.Region in project Board-Instrumentation-Framework by intel.
the class Demo method initFront.
private Pane initFront(final FlipPanel FLIP_PANEL, final StackPane FRONT_PANEL) {
Region settingsButton = new Region();
settingsButton.getStyleClass().add("settings-button");
settingsButton.addEventHandler(MouseEvent.MOUSE_CLICKED, EVENT -> FLIP_PANEL.flipToBack());
VBox componentsFront = new VBox(settingsButton, FRONT_PANEL);
componentsFront.setSpacing(10);
VBox.setVgrow(FRONT_PANEL, Priority.ALWAYS);
StackPane front = new StackPane();
front.setPadding(new Insets(20, 20, 20, 20));
front.getStyleClass().add("panel");
front.getChildren().addAll(componentsFront);
return front;
}
Aggregations