X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FColorUtils.java;fp=src%2Fjalview%2Futil%2FColorUtils.java;h=525bfdbce880941c4c9276d63d9bdff1e3dbac04;hb=7d67fb613ec026dc9a265e351e7fab542e3f1d61;hp=31d1dedad331641c63e5da78df030bd8321c57d0;hpb=02e38bb826828ab2991584cf4b737c0138cb6c44;p=jalview.git diff --git a/src/jalview/util/ColorUtils.java b/src/jalview/util/ColorUtils.java index 31d1ded..525bfdb 100644 --- a/src/jalview/util/ColorUtils.java +++ b/src/jalview/util/ColorUtils.java @@ -142,4 +142,53 @@ public class ColorUtils * (maxColour.getBlue() - minColour.getBlue()); return new Color(r / 255, g / 255, b / 255); } + + /** + * 'Fades' the given colour towards white by the specified proportion. A + * factor of 1 or more results in White, a factor of 0 leaves the colour + * unchanged, and a factor between 0 and 1 results in a proportionate change + * of RGB values towards (255, 255, 255). + *

+ * A negative bleachFactor can be specified to darken the colour towards Black + * (0, 0, 0). + * + * @param colour + * @param bleachFactor + * @return + */ + public static Color bleachColour(Color colour, float bleachFactor) + { + if (bleachFactor >= 1f) + { + return Color.WHITE; + } + if (bleachFactor <= -1f) + { + return Color.BLACK; + } + if (bleachFactor == 0f) + { + return colour; + } + + int red = colour.getRed(); + int green = colour.getGreen(); + int blue = colour.getBlue(); + + if (bleachFactor > 0) + { + red += (255 - red) * bleachFactor; + green += (255 - green) * bleachFactor; + blue += (255 - blue) * bleachFactor; + return new Color(red, green, blue); + } + else + { + float factor = 1 + bleachFactor; + red *= factor; + green *= factor; + blue *= factor; + return new Color(red, green, blue); + } + } }