return sizes;
}
- public double getSize(double value, double defaultMin, double defaultMax) {
+ public double getSize(double value, boolean useGradient, double defaultMin, double defaultMax) {
+ List<Double> sizes = getSizes();
double gap = defaultMax - defaultMin;
- double singleGap = gap / getSizes().size();
+ double singleGap = gap / sizes.size();
+ double threshold = defaultMin;
int i = 0;
- while (i < getSizes().size() - 1) {
- if (value <= defaultMin + (i * singleGap)) {
+ while (i < sizes.size() - 1) {
+ threshold = threshold + singleGap;
+ if (value <= threshold) {
break;
}
i++;
}
- return getSizes().get(i);
+ Double size = sizes.get(i);
+ if (useGradient) {
+
+ Double upperSize;
+ if (i + 1 != sizes.size()) {
+ upperSize = sizes.get(i + 1);
+ } else {
+ upperSize = size;
+ }
+
+ double delta = Math.max(value - (defaultMin + singleGap * i), 0);
+ double d = delta / singleGap;
+ double sizeDelta = (upperSize - size) * d;
+
+ return size + sizeDelta;
+ }
+
+ return size;
}
}