diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java index fd223930..8ed13092 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java @@ -26,6 +26,17 @@ import java.awt.Color; public class ColorFunctions { public static Color applyFunctions( Color color, ColorFunction... functions ) { + // if having only a single function of type Mix, then avoid four unnecessary conversions: + // 1. RGB to HSL in this method + // 2. HSL to RGB in Mix.apply() + // mix + // 3. RGB to HSL in Mix.apply() + // 4. HSL to RGB in this method + if( functions.length == 1 && functions[0] instanceof Mix ) { + Mix mixFunction = (Mix) functions[0]; + return mix( color, mixFunction.color2, mixFunction.weight / 100 ); + } + // convert RGB to HSL float[] hsl = HSLColor.fromRGB( color ); float alpha = color.getAlpha() / 255f;