|
37 | 37 | import org.eclipse.swt.graphics.GC; |
38 | 38 | import org.eclipse.swt.graphics.Image; |
39 | 39 | import org.eclipse.swt.graphics.ImageData; |
| 40 | +import org.eclipse.swt.graphics.ImageDataProvider; |
40 | 41 | import org.eclipse.swt.graphics.ImageGcDrawer; |
41 | 42 | import org.eclipse.swt.graphics.PaletteData; |
42 | 43 | import org.eclipse.swt.graphics.Point; |
@@ -133,13 +134,17 @@ public void handleEvent(Event event) { |
133 | 134 | } |
134 | 135 | } |
135 | 136 |
|
136 | | - BufferedImage image = getBufferedImage(size.x, size.y, colors, |
137 | | - CSSSWTColorHelper.getPercents(grad)); |
138 | | - // long startTime = System.currentTimeMillis(); |
139 | | - ImageData imagedata = convertToSWT(image); |
140 | | - // System.out.println("Conversion took " |
141 | | - // + (System.currentTimeMillis() - startTime) + " ms"); |
142 | | - gradientImage = new Image(control.getDisplay(), imagedata); |
| 137 | + ImageDataProvider imageDataProvider = zoom -> { |
| 138 | + float scaleFactor = zoom / 100f; |
| 139 | + int scaledWidth = Math.round(size.x * scaleFactor); |
| 140 | + int scaledHeight = Math.round(size.y * scaleFactor); |
| 141 | + BufferedImage image = getBufferedImage(scaledWidth, scaledHeight, colors, |
| 142 | + CSSSWTColorHelper.getPercents(grad)); |
| 143 | + ImageData imagedata = convertToSWT(image); |
| 144 | + return imagedata; |
| 145 | + }; |
| 146 | + |
| 147 | + gradientImage = new Image(control.getDisplay(), imageDataProvider); |
143 | 148 | radialGradient = true; |
144 | 149 | } else if (oldImage == null || oldImage.isDisposed() |
145 | 150 | || oldImage.getBounds().height != size.y || radialGradient |
|
0 commit comments