From be529655d60c0640c0faa9bcf871f1ce037ab3c4 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 20 May 2020 00:40:05 +0200 Subject: [PATCH] UIDefaultsLoader: on color functions use "autoInverse" option by default if "derived" option is set --- .../com/formdev/flatlaf/UIDefaultsLoader.java | 6 +++- .../formdev/flatlaf/FlatDarkLaf.properties | 30 +++++++++---------- .../formdev/flatlaf/FlatLightLaf.properties | 20 ++++++------- .../flatlaf/IntelliJTheme$ThemeLaf.properties | 4 +-- .../themeeditor/FlatThemeTokenMaker.java | 4 +++ 5 files changed, 36 insertions(+), 28 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index c1f436b8..4f4d70b2 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -572,7 +572,7 @@ class UIDefaultsLoader * saturate(color,amount[,options]) or desaturate(color,amount[,options]) * - color: a color (e.g. #f00) or a color function * - amount: percentage 0-100% - * - options: [relative] [autoInverse] [lazy] [derived] + * - options: [relative] [autoInverse] [noAutoInverse] [lazy] [derived] */ private static Object parseColorHSLIncreaseDecrease( int hslIndex, boolean increase, List params, Function resolver, boolean reportError ) @@ -590,6 +590,10 @@ class UIDefaultsLoader autoInverse = options.contains( "autoInverse" ); lazy = options.contains( "lazy" ); derived = options.contains( "derived" ); + + // use autoInverse by default for derived colors, except if noAutoInverse is set + if( derived && !options.contains( "noAutoInverse" ) ) + autoInverse = true; } // create function diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index f72caaca..8c3693ce 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -72,8 +72,8 @@ controlDkShadow=lighten($controlShadow,10%) #---- Button ---- Button.background=#4c5052 -Button.hoverBackground=lighten($Button.background,3%,derived autoInverse) -Button.pressedBackground=lighten($Button.background,6%,derived autoInverse) +Button.hoverBackground=lighten($Button.background,3%,derived) +Button.pressedBackground=lighten($Button.background,6%,derived) Button.borderColor=#5e6060 Button.disabledBorderColor=#5e6060 @@ -82,16 +82,16 @@ Button.hoverBorderColor=$Button.focusedBorderColor Button.default.background=#365880 Button.default.foreground=#bbbbbb -Button.default.hoverBackground=lighten($Button.default.background,3%,derived autoInverse) -Button.default.pressedBackground=lighten($Button.default.background,6%,derived autoInverse) +Button.default.hoverBackground=lighten($Button.default.background,3%,derived) +Button.default.pressedBackground=lighten($Button.default.background,6%,derived) Button.default.borderColor=#4c708c Button.default.hoverBorderColor=#537699 Button.default.focusedBorderColor=#537699 Button.default.focusColor=#43688c Button.default.boldText=true -Button.toolbar.hoverBackground=lighten($Button.background,1%,derived autoInverse) -Button.toolbar.pressedBackground=lighten($Button.background,4%,derived autoInverse) +Button.toolbar.hoverBackground=lighten($Button.background,1%,derived) +Button.toolbar.pressedBackground=lighten($Button.background,4%,derived) #---- CheckBox ---- @@ -104,8 +104,8 @@ CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor CheckBox.icon.selectedFocusedBorderColor=#466D94 CheckBox.icon.background=#43494A CheckBox.icon.disabledBackground=@background -CheckBox.icon.hoverBackground=lighten($CheckBox.icon.background,3%,derived autoInverse) -CheckBox.icon.pressedBackground=lighten($CheckBox.icon.background,6%,derived autoInverse) +CheckBox.icon.hoverBackground=lighten($CheckBox.icon.background,3%,derived) +CheckBox.icon.pressedBackground=lighten($CheckBox.icon.background,6%,derived) CheckBox.icon.selectedBackground=#43494A CheckBox.icon.checkmarkColor=#A7A7A7 CheckBox.icon.disabledCheckmarkColor=#606060 @@ -134,7 +134,7 @@ Component.error.borderColor=desaturate($Component.error.focusedBorderColor,25%) Component.error.focusedBorderColor=#8b3c3c Component.warning.borderColor=darken(desaturate($Component.warning.focusedBorderColor,20%),10%) Component.warning.focusedBorderColor=#ac7920 -Component.custom.borderColor=desaturate(#f00,50%,relative derived) +Component.custom.borderColor=desaturate(#f00,50%,relative derived noAutoInverse) #---- Desktop ---- @@ -157,8 +157,8 @@ InternalFrame.inactiveTitleForeground=@disabledText InternalFrame.activeBorderColor=darken(@background,7%) InternalFrame.inactiveBorderColor=darken(@background,3%) -InternalFrame.buttonHoverBackground=lighten($InternalFrame.activeTitleBackground,10%,derived autoInverse) -InternalFrame.buttonPressedBackground=lighten($InternalFrame.activeTitleBackground,20%,derived autoInverse) +InternalFrame.buttonHoverBackground=lighten($InternalFrame.activeTitleBackground,10%,derived) +InternalFrame.buttonPressedBackground=lighten($InternalFrame.activeTitleBackground,20%,derived) InternalFrame.closeHoverBackground=lazy(Actions.Red) InternalFrame.closePressedBackground=darken(Actions.Red,10%,lazy) InternalFrame.closeHoverForeground=#fff @@ -233,7 +233,7 @@ Separator.foreground=#515151 Slider.trackColor=#646464 Slider.thumbColor=#A6A6A6 Slider.tickColor=#888888 -Slider.hoverColor=darken($Slider.thumbColor,15%,derived autoInverse) +Slider.hoverColor=darken($Slider.thumbColor,15%,derived) Slider.disabledForeground=#4c5052 @@ -268,11 +268,11 @@ TableHeader.bottomSeparatorColor=$TableHeader.separatorColor #---- ToggleButton ---- -ToggleButton.selectedBackground=lighten($ToggleButton.background,10%,derived autoInverse) +ToggleButton.selectedBackground=lighten($ToggleButton.background,10%,derived) ToggleButton.selectedForeground=@foreground -ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,3%,derived autoInverse) +ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,3%,derived) -ToggleButton.toolbar.selectedBackground=lighten($ToggleButton.background,7%,derived autoInverse) +ToggleButton.toolbar.selectedBackground=lighten($ToggleButton.background,7%,derived) #---- ToolTip ---- diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index 19e8ddbb..9ddd869d 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -73,8 +73,8 @@ controlDkShadow=darken($controlShadow,15%) Button.background=#ffffff Button.focusedBackground=#e3f1fa -Button.hoverBackground=darken($Button.background,3%,derived autoInverse) -Button.pressedBackground=darken($Button.background,10%,derived autoInverse) +Button.hoverBackground=darken($Button.background,3%,derived) +Button.pressedBackground=darken($Button.background,10%,derived) Button.borderColor=$Component.borderColor Button.disabledBorderColor=$Component.disabledBorderColor @@ -92,8 +92,8 @@ Button.default.focusedBorderColor=$Button.focusedBorderColor Button.default.focusColor=$Component.focusColor Button.default.borderWidth=2 -Button.toolbar.hoverBackground=darken($Button.background,12%,derived autoInverse) -Button.toolbar.pressedBackground=darken($Button.background,15%,derived autoInverse) +Button.toolbar.hoverBackground=darken($Button.background,12%,derived) +Button.toolbar.pressedBackground=darken($Button.background,15%,derived) #---- CheckBox ---- @@ -136,7 +136,7 @@ Component.error.borderColor=lighten(desaturate($Component.error.focusedBorderCol Component.error.focusedBorderColor=#e53e4d Component.warning.borderColor=lighten(saturate($Component.warning.focusedBorderColor,25%),20%) Component.warning.focusedBorderColor=#e2a53a -Component.custom.borderColor=lighten(desaturate(#f00,20%,derived),25%,derived) +Component.custom.borderColor=lighten(desaturate(#f00,20%,derived noAutoInverse),25%,derived noAutoInverse) #---- Desktop ---- @@ -164,8 +164,8 @@ InternalFrame.inactiveTitleForeground=@disabledText InternalFrame.activeBorderColor=darken($Component.borderColor,20%) InternalFrame.inactiveBorderColor=$Component.borderColor -InternalFrame.buttonHoverBackground=darken($InternalFrame.activeTitleBackground,10%,derived autoInverse) -InternalFrame.buttonPressedBackground=darken($InternalFrame.activeTitleBackground,20%,derived autoInverse) +InternalFrame.buttonHoverBackground=darken($InternalFrame.activeTitleBackground,10%,derived) +InternalFrame.buttonPressedBackground=darken($InternalFrame.activeTitleBackground,20%,derived) InternalFrame.closeHoverBackground=lazy(Actions.Red) InternalFrame.closePressedBackground=darken(Actions.Red,10%,lazy) InternalFrame.closeHoverForeground=#fff @@ -240,7 +240,7 @@ Separator.foreground=#d1d1d1 Slider.trackColor=#c4c4c4 Slider.thumbColor=#6e6e6e Slider.tickColor=#888888 -Slider.hoverColor=lighten($Slider.thumbColor,15%,derived autoInverse) +Slider.hoverColor=lighten($Slider.thumbColor,15%,derived) Slider.disabledForeground=#c0c0c0 @@ -275,9 +275,9 @@ TableHeader.bottomSeparatorColor=$TableHeader.separatorColor #---- ToggleButton ---- -ToggleButton.selectedBackground=darken($ToggleButton.background,20%,derived autoInverse) +ToggleButton.selectedBackground=darken($ToggleButton.background,20%,derived) ToggleButton.selectedForeground=@foreground -ToggleButton.disabledSelectedBackground=darken($ToggleButton.background,13%,derived autoInverse) +ToggleButton.disabledSelectedBackground=darken($ToggleButton.background,13%,derived) ToggleButton.toolbar.selectedBackground=$ToggleButton.selectedBackground diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties index 42b31e19..18664ec9 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties @@ -39,8 +39,8 @@ HelpButton.hoverBorderColor=null ToggleButton.startBackground=$ToggleButton.background ToggleButton.endBackground=$ToggleButton.background -[dark]ToggleButton.selectedBackground=lighten($ToggleButton.background,15%,derived autoInverse) -[dark]ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,5%,derived autoInverse) +[dark]ToggleButton.selectedBackground=lighten($ToggleButton.background,15%,derived) +[dark]ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,5%,derived) #---- theme specific ---- diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java index 4e322833..f8d7adc3 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java @@ -58,11 +58,15 @@ public class FlatThemeTokenMaker tokenMap.put( "hsla", TOKEN_FUNCTION ); tokenMap.put( "lighten", TOKEN_FUNCTION ); tokenMap.put( "darken", TOKEN_FUNCTION ); + tokenMap.put( "saturate", TOKEN_FUNCTION ); + tokenMap.put( "desaturate", TOKEN_FUNCTION ); tokenMap.put( "lazy", TOKEN_FUNCTION ); // function options tokenMap.put( "relative", Token.RESERVED_WORD ); + tokenMap.put( "derived", Token.RESERVED_WORD ); tokenMap.put( "autoInverse", Token.RESERVED_WORD ); + tokenMap.put( "noAutoInverse", Token.RESERVED_WORD ); } /**