]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.network/src/org/simantics/district/network/profile/DiagramSettings.java
First draft of vertex size adjusting district network diagram profiles
[simantics/district.git] / org.simantics.district.network / src / org / simantics / district / network / profile / DiagramSettings.java
1 package org.simantics.district.network.profile;
2
3 import java.util.Optional;
4
5 import org.simantics.db.Resource;
6 import org.simantics.scl.runtime.function.Function1;
7
8 /**
9  * @author Tuukka Lehtonen
10  */
11 public class DiagramSettings {
12
13         public final Optional<Function1<Resource, Double>> vertexScaleProperty;
14         public final double vertexScaleGain;
15         public final double vertexScaleBias;
16         public final Optional<Function1<Resource, Double>> edgeThicknessProperty;
17         public final double edgeThicknessGain;
18         public final double edgeThicknessBias;
19
20         public DiagramSettings(Function1<Resource, Double> vertexScaleProperty, double vertexScaleGain, double vertexScaleBias, Function1<Resource, Double> edgeThicknessProperty, double edgeThicknessGain, double edgeThicknessBias) {
21                 this.vertexScaleProperty = Optional.ofNullable(vertexScaleProperty);
22                 this.vertexScaleGain = vertexScaleGain;
23                 this.vertexScaleBias = vertexScaleBias;
24                 this.edgeThicknessProperty = Optional.ofNullable(edgeThicknessProperty);
25                 this.edgeThicknessGain = edgeThicknessGain;
26                 this.edgeThicknessBias = edgeThicknessBias;
27         }
28
29         @Override
30         public int hashCode() {
31                 final int prime = 31;
32                 int result = 1;
33                 result = prime * result + edgeThicknessProperty.hashCode();
34                 long temp;
35                 temp = Double.doubleToLongBits(edgeThicknessGain);
36                 result = prime * result + (int) (temp ^ (temp >>> 32));
37                 temp = Double.doubleToLongBits(edgeThicknessBias);
38                 result = prime * result + (int) (temp ^ (temp >>> 32));
39                 result = prime * result + vertexScaleProperty.hashCode();
40                 temp = Double.doubleToLongBits(vertexScaleGain);
41                 result = prime * result + (int) (temp ^ (temp >>> 32));
42                 temp = Double.doubleToLongBits(vertexScaleBias);
43                 result = prime * result + (int) (temp ^ (temp >>> 32));
44                 return result;
45         }
46
47         @Override
48         public boolean equals(Object obj) {
49                 if (this == obj)
50                         return true;
51                 if (obj == null)
52                         return false;
53                 if (getClass() != obj.getClass())
54                         return false;
55                 DiagramSettings other = (DiagramSettings) obj;
56                 if (!edgeThicknessProperty.equals(other.edgeThicknessProperty))
57                         return false;
58                 if (Double.doubleToLongBits(edgeThicknessGain) != Double.doubleToLongBits(other.edgeThicknessGain))
59                         return false;
60                 if (Double.doubleToLongBits(edgeThicknessBias) != Double.doubleToLongBits(other.edgeThicknessBias))
61                         return false;
62                 if (!vertexScaleProperty.equals(other.vertexScaleProperty))
63                         return false;
64                 if (Double.doubleToLongBits(vertexScaleGain) != Double.doubleToLongBits(other.vertexScaleGain))
65                         return false;
66                 if (Double.doubleToLongBits(vertexScaleBias) != Double.doubleToLongBits(other.vertexScaleBias))
67                         return false;
68                 return true;
69         }
70
71         @Override
72         public String toString() {
73                 return String.format("DiagramSettings[%s * %f + %f - %s * %f + %f]", vertexScaleProperty.toString(),
74                                 vertexScaleGain, vertexScaleBias, edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias);
75         }
76
77 }