X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fvisualisations%2Fmodel%2FDynamicSizeMap.java;h=e2adb88810d78574c9022d6e569c0cdb5765e5c4;hb=a2c485af95024784aa9de3378759ee94b8caea2e;hp=7edb12b912faa63a9ce1b64422cef252b5a83195;hpb=0249f20bb127e61c58db4432b8609ff0cb441480;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/visualisations/model/DynamicSizeMap.java b/org.simantics.district.network/src/org/simantics/district/network/visualisations/model/DynamicSizeMap.java index 7edb12b9..e2adb888 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/visualisations/model/DynamicSizeMap.java +++ b/org.simantics.district.network/src/org/simantics/district/network/visualisations/model/DynamicSizeMap.java @@ -20,19 +20,39 @@ public class DynamicSizeMap { return sizes; } - public double getSize(double value, double defaultMin, double defaultMax) { + public double getSize(double value, boolean useGradient, double defaultMin, double defaultMax) { + List 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; } }