From 81dc48a3cd17dfd538210e3c3129c9b18bce3819 Mon Sep 17 00:00:00 2001 From: arunjose696 Date: Fri, 6 Jun 2025 09:09:54 +0200 Subject: [PATCH] Use constructor Image(Device, ImageDataProvider) for Radial gradients This PR does not cause a visual impact but is meant for completeness to Replace Image(Device, ImageData) with Imagde(Device, ImageDataProvider) making sure the earlier behaviour is preserved --- .../GradientBackgroundListener.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/GradientBackgroundListener.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/GradientBackgroundListener.java index dca44f5ec7b..492d53cf188 100644 --- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/GradientBackgroundListener.java +++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/GradientBackgroundListener.java @@ -37,6 +37,7 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.ImageDataProvider; import org.eclipse.swt.graphics.ImageGcDrawer; import org.eclipse.swt.graphics.PaletteData; import org.eclipse.swt.graphics.Point; @@ -135,13 +136,17 @@ public void handleEvent(Event event) { } } - BufferedImage image = getBufferedImage(size.x, size.y, colors, - CSSSWTColorHelper.getPercents(grad)); - // long startTime = System.currentTimeMillis(); - ImageData imagedata = convertToSWT(image); - // System.out.println("Conversion took " - // + (System.currentTimeMillis() - startTime) + " ms"); - gradientImage = new Image(control.getDisplay(), imagedata); + ImageDataProvider imageDataProvider = zoom -> { + float scaleFactor = zoom / 100.0f; + int scaledWidth = Math.round(size.x * scaleFactor); + int scaledHeight = Math.round(size.y * scaleFactor); + BufferedImage image = getBufferedImage(scaledWidth, scaledHeight, colors, + CSSSWTColorHelper.getPercents(grad)); + ImageData imagedata = convertToSWT(image); + return imagedata; + }; + + gradientImage = new Image(control.getDisplay(), imageDataProvider); radialGradient = true; } else if (oldImage == null || oldImage.isDisposed() || oldImage.getBounds().height != size.y || radialGradient