package at.bestsolution.efxclipse.testcases.fxgraph.shape;
import javafx.beans.binding.ObjectBinding;
import javafx.beans.value.ObservableDoubleValue;
import javafx.beans.value.ObservableValue;
import javafx.scene.paint.Color;
public class DeriveColorBinding extends ObjectBinding<Color> {
private ObservableValue<Color> sourceColor;
private ObservableDoubleValue hueShift;
private ObservableDoubleValue saturationFactor;
private ObservableDoubleValue brightnessFactor;
private ObservableDoubleValue opacityFactor;
public DeriveColorBinding(
ObservableValue<Color> sourceColor,
ObservableDoubleValue hueShift,
ObservableDoubleValue saturationFactor,
ObservableDoubleValue brightnessFactor,
ObservableDoubleValue opacityFactor
) {
this.sourceColor = sourceColor;
this.hueShift = hueShift;
this.saturationFactor = saturationFactor;
this.brightnessFactor = brightnessFactor;
this.opacityFactor = opacityFactor;
bind(sourceColor, hueShift, saturationFactor, brightnessFactor, opacityFactor);
}
@Override
protected Color computeValue() {
Color c = sourceColor.getValue().deriveColor(
hueShift.getValue().doubleValue(),
saturationFactor.getValue().doubleValue(),
brightnessFactor.getValue().doubleValue(), opacityFactor.getValue().doubleValue());
return c;
}
public static DeriveColorBinding create(
ObservableValue<Color> sourceColor,
ObservableDoubleValue hueShift,
ObservableDoubleValue saturationFactor,
ObservableDoubleValue brightnessFactor,
ObservableDoubleValue opacityFactor) {
return new DeriveColorBinding(sourceColor,hueShift,saturationFactor,brightnessFactor,opacityFactor);
}
}