From 98036770551230cdcbabd7860ed3e406e2d9c11b Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 8 Sep 2017 11:46:34 +0300 Subject: [PATCH] Add blend mode property --- .../annimon/hotarufx/visual/objects/ObjectNode.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 e7265ad..e6081c9 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 @@ -12,6 +12,7 @@ import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.WritableValue; import javafx.scene.Node; +import javafx.scene.effect.BlendMode; import javafx.util.StringConverter; import lombok.Getter; import lombok.Setter; @@ -29,6 +30,7 @@ public abstract class ObjectNode { private PropertyTimelineHolder translateX, translateY, translateZ; private PropertyTimelineHolder scaleX, scaleY, scaleZ; private PropertyTimelineHolder layoutX, layoutY; + private PropertyTimelineHolder blendMode; @Getter @Setter private boolean isRenderable; @@ -47,6 +49,7 @@ public abstract class ObjectNode { scaleZ = PropertyTimelineHolder.empty(); layoutX = PropertyTimelineHolder.empty(); layoutY = PropertyTimelineHolder.empty(); + blendMode = PropertyTimelineHolder.empty(); isRenderable = true; } @@ -106,6 +109,10 @@ public abstract class ObjectNode { return layoutY.setIfEmptyThenGet(node::layoutYProperty); } + public PropertyTimeline blendModeProperty() { + return blendMode.setIfEmptyThenGet(enumToString(BlendMode.class, node.blendModeProperty())); + } + public void buildTimeline(TimeLine timeline) { visible.applyIfPresent(timeline); opacity.applyIfPresent(timeline); @@ -120,6 +127,7 @@ public abstract class ObjectNode { scaleZ.applyIfPresent(timeline); layoutX.applyIfPresent(timeline); layoutY.applyIfPresent(timeline); + blendMode.applyIfPresent(timeline); } public final PropertyBindings propertyBindings() { @@ -141,7 +149,8 @@ public abstract class ObjectNode { .add("scaleY", NUMBER, this::scaleYProperty) .add("scaleZ", NUMBER, this::scaleZProperty) .add("layoutX", NUMBER, this::layoutXProperty) - .add("layoutY", NUMBER, this::layoutYProperty); + .add("layoutY", NUMBER, this::layoutYProperty) + .add("blendMode", STRING, this::blendModeProperty); } protected > Supplier> enumToString(Class enumClass, ObjectProperty property) {