X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.utils.ui%2Fsrc%2Forg%2Fsimantics%2Futils%2Fui%2Fcolor%2FColorPool.java;fp=bundles%2Forg.simantics.utils.ui%2Fsrc%2Forg%2Fsimantics%2Futils%2Fui%2Fcolor%2FColorPool.java;h=bcda9e73fecf22538718d1d7842d79b60a305864;hp=5068fa4d899f06b2b6494383d275a77fa1f19cd6;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/color/ColorPool.java b/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/color/ColorPool.java index 5068fa4d8..bcda9e73f 100644 --- a/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/color/ColorPool.java +++ b/bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/color/ColorPool.java @@ -1,97 +1,97 @@ -package org.simantics.utils.ui.color; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Tool for creating random and distinct colors. - * - * - * @author Marko Luukkainen - * - */ -public class ColorPool { - - private List colors; - - public ColorPool() { - colors = new ArrayList(); - } - - public void addDefaultColors() { - colors.add(new Color(0, 0, 255)); // blue - colors.add(new Color(255, 0, 0)); // red - colors.add(new Color(0, 200, 0)); // green - colors.add(new Color(0, 0, 0)); // black - } - - public List getColors() { - return colors; - } - - public Color getColor(int index) { - if (colors.size() == 0) - addDefaultColors(); - while (colors.size() <= index) { - newRandomColor(); - } - return colors.get(index); - } - - public int getSize() { - return colors.size(); - } - - public void add(Color color) { - colors.add(color); - } - - public void setColor(int index, Color color) { - colors.set(index, color); - } - - public void clear() { - colors.clear(); - } - - private Color newRandomColor() { - - ArrayList sortColors = new ArrayList(); - for (Color c : colors) { - if (!Float.isNaN(c.getH())) - sortColors.add(c); - } - if (sortColors.size() > 0) { - Collections.sort(sortColors); - Color duplicate = new Color(sortColors.get(0)); - duplicate.setH(sortColors.get(0).getH()+360.f); - sortColors.add(duplicate); - - float maxDelta = 0; - int maxDeltaIndex = 0; - for (int i = 0; i < sortColors.size()-1; i++) { - float delta = sortColors.get(i + 1).getH() - sortColors.get(i).getH(); - if (delta > maxDelta) { - maxDelta = delta; - maxDeltaIndex = i; - } - } - float newHue = sortColors.get(maxDeltaIndex).getH() + 0.5f * maxDelta; - if (newHue > 360.f) - newHue -= 360.f; - - Color randomColor = Color.getRandomHSV(0.5f, 0.5f); - randomColor.setH(newHue); - colors.add(randomColor); - return randomColor; - } else { - Color randomColor = Color.getRandomHSV(0.5f, 0.5f); - colors.add(randomColor); - return randomColor; - } - - } - - -} +package org.simantics.utils.ui.color; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Tool for creating random and distinct colors. + * + * + * @author Marko Luukkainen + * + */ +public class ColorPool { + + private List colors; + + public ColorPool() { + colors = new ArrayList(); + } + + public void addDefaultColors() { + colors.add(new Color(0, 0, 255)); // blue + colors.add(new Color(255, 0, 0)); // red + colors.add(new Color(0, 200, 0)); // green + colors.add(new Color(0, 0, 0)); // black + } + + public List getColors() { + return colors; + } + + public Color getColor(int index) { + if (colors.size() == 0) + addDefaultColors(); + while (colors.size() <= index) { + newRandomColor(); + } + return colors.get(index); + } + + public int getSize() { + return colors.size(); + } + + public void add(Color color) { + colors.add(color); + } + + public void setColor(int index, Color color) { + colors.set(index, color); + } + + public void clear() { + colors.clear(); + } + + private Color newRandomColor() { + + ArrayList sortColors = new ArrayList(); + for (Color c : colors) { + if (!Float.isNaN(c.getH())) + sortColors.add(c); + } + if (sortColors.size() > 0) { + Collections.sort(sortColors); + Color duplicate = new Color(sortColors.get(0)); + duplicate.setH(sortColors.get(0).getH()+360.f); + sortColors.add(duplicate); + + float maxDelta = 0; + int maxDeltaIndex = 0; + for (int i = 0; i < sortColors.size()-1; i++) { + float delta = sortColors.get(i + 1).getH() - sortColors.get(i).getH(); + if (delta > maxDelta) { + maxDelta = delta; + maxDeltaIndex = i; + } + } + float newHue = sortColors.get(maxDeltaIndex).getH() + 0.5f * maxDelta; + if (newHue > 360.f) + newHue -= 360.f; + + Color randomColor = Color.getRandomHSV(0.5f, 0.5f); + randomColor.setH(newHue); + colors.add(randomColor); + return randomColor; + } else { + Color randomColor = Color.getRandomHSV(0.5f, 0.5f); + colors.add(randomColor); + return randomColor; + } + + } + + +}