public final Optional<Function1<Resource, Double>> edgeThicknessProperty;
public final double edgeThicknessGain;
public final double edgeThicknessBias;
+ public final Optional<Function1<Resource, Double>> arrowLengthProperty;
+ public final double arrowLengthGain;
+ public final double arrowLengthBias;
+ public final Optional<Function1<Resource, Double>> elementColoringFunction;
+ public final float elementColoringGradientHue;
+ public final float elementColoringGradientSaturation;
+ public final transient ColorGradient coloringGradient;
- public DiagramSettings(Function1<Resource, Double> vertexScaleProperty, double vertexScaleGain, double vertexScaleBias, Function1<Resource, Double> edgeThicknessProperty, double edgeThicknessGain, double edgeThicknessBias) {
+ public DiagramSettings(
+ Function1<Resource, Double> vertexScaleProperty, double vertexScaleGain, double vertexScaleBias,
+ Function1<Resource, Double> edgeThicknessProperty, double edgeThicknessGain, double edgeThicknessBias,
+ Function1<Resource, Double> arrowLengthProperty, double arrowLengthGain, double arrowLengthBias,
+ Function1<Resource, Double> elementColoringFunction,
+ float elementColoringGradientHue,
+ float elementColoringGradientSaturation
+ ) {
this.vertexScaleProperty = Optional.ofNullable(vertexScaleProperty);
this.vertexScaleGain = vertexScaleGain;
this.vertexScaleBias = vertexScaleBias;
this.edgeThicknessProperty = Optional.ofNullable(edgeThicknessProperty);
this.edgeThicknessGain = edgeThicknessGain;
this.edgeThicknessBias = edgeThicknessBias;
+ this.arrowLengthProperty = Optional.ofNullable(arrowLengthProperty);
+ this.arrowLengthGain = arrowLengthGain;
+ this.arrowLengthBias = arrowLengthBias;
+ this.elementColoringFunction = Optional.ofNullable(elementColoringFunction);
+ this.elementColoringGradientHue = elementColoringGradientHue;
+ this.elementColoringGradientSaturation = elementColoringGradientSaturation;
+ this.coloringGradient = Colors.cached(
+ Colors.hsvGradient(
+ elementColoringGradientHue,
+ elementColoringGradientSaturation)
+ );
}
@Override
final int prime = 31;
int result = 1;
result = prime * result + edgeThicknessProperty.hashCode();
+ result = prime * result + arrowLengthProperty.hashCode();
long temp;
temp = Double.doubleToLongBits(edgeThicknessGain);
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(edgeThicknessBias);
result = prime * result + (int) (temp ^ (temp >>> 32));
+ temp = Double.doubleToLongBits(arrowLengthGain);
+ result = prime * result + (int) (temp ^ (temp >>> 32));
+ temp = Double.doubleToLongBits(arrowLengthBias);
+ result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + vertexScaleProperty.hashCode();
temp = Double.doubleToLongBits(vertexScaleGain);
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(vertexScaleBias);
result = prime * result + (int) (temp ^ (temp >>> 32));
+ result = prime * result + elementColoringFunction.hashCode();
+ result = prime * result + Float.floatToIntBits(elementColoringGradientHue);
+ result = prime * result + Float.floatToIntBits(elementColoringGradientSaturation);
return result;
}
return false;
if (Double.doubleToLongBits(edgeThicknessBias) != Double.doubleToLongBits(other.edgeThicknessBias))
return false;
+ if (!arrowLengthProperty.equals(other.arrowLengthProperty))
+ return false;
+ if (Double.doubleToLongBits(arrowLengthGain) != Double.doubleToLongBits(other.arrowLengthGain))
+ return false;
+ if (Double.doubleToLongBits(arrowLengthBias) != Double.doubleToLongBits(other.arrowLengthBias))
+ return false;
if (!vertexScaleProperty.equals(other.vertexScaleProperty))
return false;
if (Double.doubleToLongBits(vertexScaleGain) != Double.doubleToLongBits(other.vertexScaleGain))
return false;
if (Double.doubleToLongBits(vertexScaleBias) != Double.doubleToLongBits(other.vertexScaleBias))
return false;
+ if (!elementColoringFunction.equals(other.elementColoringFunction))
+ return false;
+ if (Float.floatToIntBits(elementColoringGradientHue) != Float.floatToIntBits(other.elementColoringGradientHue))
+ return false;
+ if (Float.floatToIntBits(elementColoringGradientSaturation) != Float.floatToIntBits(other.elementColoringGradientSaturation))
+ return false;
return true;
}
@Override
public String toString() {
- return String.format("DiagramSettings[%s * %f + %f - %s * %f + %f]", vertexScaleProperty.toString(),
- vertexScaleGain, vertexScaleBias, edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias);
+ return String.format("DiagramSettings[%s * %f + %f - %s * %f + %f - %s * %f + %f - coloringFunction: %s, hue: %f, saturation: %f]",
+ vertexScaleProperty.toString(), vertexScaleGain, vertexScaleBias,
+ edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias,
+ arrowLengthProperty, arrowLengthGain, arrowLengthBias,
+ elementColoringFunction.toString(),
+ elementColoringGradientHue, elementColoringGradientSaturation
+ );
}
}