From 3facca5499848665854eda2ce0e95985296e2dea Mon Sep 17 00:00:00 2001 From: laing raven Date: Sun, 10 Mar 2024 19:12:29 +0700 Subject: [PATCH] add LinearGradient paint in svg color filter --- .../formdev/flatlaf/extras/FlatSVGIcon.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java index 2d461722..a1121f4d 100644 --- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java +++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java @@ -25,6 +25,7 @@ import java.awt.Image; import java.awt.Paint; import java.awt.Rectangle; import java.awt.RenderingHints; +import java.awt.LinearGradientPaint; import java.awt.image.BufferedImage; import java.awt.image.RGBImageFilter; import java.io.File; @@ -980,8 +981,16 @@ public class FlatSVGIcon @Override public void setPaint( Paint paint ) { - if( paint instanceof Color ) + if( paint instanceof Color ) { paint = filterColor( (Color) paint ); + } else if( paint instanceof LinearGradientPaint ) { + LinearGradientPaint oldPaint = (LinearGradientPaint) paint; + paint = new LinearGradientPaint( oldPaint.getStartPoint(), + oldPaint.getEndPoint(), + oldPaint.getFractions(), + filterColors( oldPaint.getColors() ), + oldPaint.getCycleMethod() ); + } super.setPaint( paint ); } @@ -1001,5 +1010,13 @@ public class FlatSVGIcon } return color; } + + private Color[] filterColors( Color[] colors ) { + Color[] newColor = new Color[colors.length]; + for( int i = 0; i < colors.length; i++ ) { + newColor[i] = filterColor( colors[i] ); + } + return newColor; + } } }