diff --git a/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java b/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java index f75df93..0c36ea6 100644 --- a/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java +++ b/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java @@ -14,7 +14,9 @@ public abstract class ObjectNode { private final Node node; private PropertyTimelineHolder visible; + private PropertyTimelineHolder opacity; private PropertyTimelineHolder clip; + private PropertyTimelineHolder style; private PropertyTimelineHolder rotate; private PropertyTimelineHolder translateX, translateY, translateZ; private PropertyTimelineHolder scaleX, scaleY, scaleZ; @@ -25,7 +27,9 @@ public abstract class ObjectNode { public ObjectNode(Node node) { this.node = node; visible = PropertyTimelineHolder.empty(); + opacity = PropertyTimelineHolder.empty(); clip = PropertyTimelineHolder.empty(); + style = PropertyTimelineHolder.empty(); rotate = PropertyTimelineHolder.empty(); translateX = PropertyTimelineHolder.empty(); translateY = PropertyTimelineHolder.empty(); @@ -46,10 +50,18 @@ public abstract class ObjectNode { return visible.setIfEmptyThenGet(node::visibleProperty); } + public PropertyTimeline opacityProperty() { + return opacity.setIfEmptyThenGet(node::opacityProperty); + } + public PropertyTimeline clipProperty() { return clip.setIfEmptyThenGet(node::clipProperty); } + public PropertyTimeline styleProperty() { + return style.setIfEmptyThenGet(node::styleProperty); + } + public PropertyTimeline rotateProperty() { return rotate.setIfEmptyThenGet(node::rotateProperty); } @@ -88,7 +100,9 @@ public abstract class ObjectNode { public void buildTimeline(TimeLine timeline) { visible.applyIfPresent(timeline); + opacity.applyIfPresent(timeline); clip.applyIfPresent(timeline); + style.applyIfPresent(timeline); rotate.applyIfPresent(timeline); translateX.applyIfPresent(timeline); translateY.applyIfPresent(timeline); @@ -107,7 +121,10 @@ public abstract class ObjectNode { protected PropertyBindings propertyBindings(PropertyBindings bindings) { return bindings .add("visible", BOOLEAN, this::visibleProperty) + .add("opacity", NUMBER, this::opacityProperty) .add("clip", CLIP_NODE, this::clipProperty) + .add("css", STRING, this::styleProperty) + .add("style", STRING, this::styleProperty) .add("rotate", NUMBER, this::rotateProperty) .add("translateX", NUMBER, this::translateXProperty) .add("translateY", NUMBER, this::translateYProperty) diff --git a/app/src/main/resources/main.hfx b/app/src/main/resources/main.hfx index d94e3ae..f22f709 100644 --- a/app/src/main/resources/main.hfx +++ b/app/src/main/resources/main.hfx @@ -47,6 +47,9 @@ C = text({ font: 100, underline: 1 clip: CLIP, + css: ' + -fx-effect: dropshadow(two-pass-box, rgba(0,0,0,0.8), 5, 0, 0.5, 0.25); + ' }) C@layoutX .add(100, 0)