Skip to content

Commit 2f08cde

Browse files
Streamline calls to Image#adaptImageDataIfDisabledOrGray()
Enabling a consistent pattern to apply disablement or graying of an Image. They are applied whenever a handle is being created from init method. Ensuring streamline usage and avoid double calls to this method.
1 parent 32b6cd0 commit 2f08cde

File tree

1 file changed

+23
-33
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics

1 file changed

+23
-33
lines changed

bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ private boolean isReusable(int width, int height) {
172172
private Optional<ImageHandle> createHandleAtExactSize(int width, int height) {
173173
Optional<ImageData> imageData = imageProvider.loadImageDataAtExactSize(width, height);
174174
if (imageData.isPresent()) {
175-
ImageData adaptedData = adaptImageDataIfDisabledOrGray(imageData.get());
176-
ImageHandle imageHandle = init(adaptedData, -1);
175+
ImageHandle imageHandle = init(imageData.get(), -1);
177176
return Optional.of(imageHandle);
178177
}
179178
return Optional.empty();
@@ -186,9 +185,8 @@ private ImageHandle getOrCreateImageHandleAtClosestSize(int widthHint, int heigh
186185
int imageZoom = DPIUtil.getZoomForAutoscaleProperty(Math.max(imageZoomForWidth, imageZoomForHeight));
187186
ImageHandle bestFittingHandle = zoomLevelToImageHandle.get(imageZoom);
188187
if (bestFittingHandle == null) {
189-
ImageData bestFittingImageData = imageProvider.loadImageData(imageZoom).element();
190-
ImageData adaptedData = adaptImageDataIfDisabledOrGray(bestFittingImageData);
191-
bestFittingHandle = init(adaptedData, -1);
188+
ImageData bestFittingImageData = imageProvider.loadImageDataWithGrayOrDisablement(imageZoom).element();
189+
bestFittingHandle = init(bestFittingImageData, -1);
192190
}
193191
return bestFittingHandle;
194192
}
@@ -333,21 +331,10 @@ public Image(Device device, Image srcImage, int flag) {
333331
}
334332
break;
335333
}
336-
case SWT.IMAGE_DISABLE: {
337-
for (ImageHandle imageHandle : srcImage.zoomLevelToImageHandle.values()) {
338-
Rectangle rect = imageHandle.getBounds();
339-
ImageData data = srcImage.getImageData(imageHandle.zoom);
340-
ImageData newData = applyDisableImageData(data, rect.height, rect.width);
341-
init (newData, imageHandle.zoom);
342-
}
343-
break;
344-
}
334+
case SWT.IMAGE_DISABLE:
345335
case SWT.IMAGE_GRAY: {
346336
for (ImageHandle imageHandle : srcImage.zoomLevelToImageHandle.values()) {
347-
Rectangle rect = imageHandle.getBounds();
348-
ImageData data = srcImage.getImageData(imageHandle.zoom);
349-
ImageData newData = applyGrayImageData(data, rect.height, rect.width);
350-
init (newData, imageHandle.zoom);
337+
srcImage.getImageData(imageHandle.zoom);
351338
}
352339
break;
353340
}
@@ -698,9 +685,9 @@ public Image(Device device, ImageGcDrawer imageGcDrawer, int width, int height)
698685
init();
699686
}
700687

701-
private ImageData adaptImageDataIfDisabledOrGray(ImageData data) {
688+
private static ImageData adaptImageDataIfDisabledOrGray(ImageData data, int styleFlag) {
702689
ImageData returnImageData = null;
703-
switch (this.styleFlag) {
690+
switch (styleFlag) {
704691
case SWT.IMAGE_DISABLE: {
705692
ImageData newData = applyDisableImageData(data, data.height, data.width);
706693
returnImageData = newData;
@@ -726,7 +713,7 @@ void init() {
726713
this.isInitialized = true;
727714
}
728715

729-
private ImageData applyDisableImageData(ImageData data, int height, int width) {
716+
private static ImageData applyDisableImageData(ImageData data, int height, int width) {
730717
PaletteData palette = data.palette;
731718
ImageData newData = new ImageData(width, height, 32, new PaletteData(0xFF, 0xFF00, 0xFF0000));
732719
newData.alpha = data.alpha;
@@ -775,7 +762,7 @@ private ImageData applyDisableImageData(ImageData data, int height, int width) {
775762
return newData;
776763
}
777764

778-
private ImageData applyGrayImageData(ImageData data, int pHeight, int pWidth) {
765+
private static ImageData applyGrayImageData(ImageData data, int pHeight, int pWidth) {
779766
PaletteData palette = data.palette;
780767
ImageData newData = data;
781768
if (!palette.isDirect) {
@@ -1456,7 +1443,7 @@ private static ImageData directToDirect(ImageData src, int newDepth, PaletteData
14561443

14571444
private record HandleForImageDataContainer(int type, ImageData imageData, long[] handles) {}
14581445

1459-
private static HandleForImageDataContainer init(Device device, ImageData i) {
1446+
private static HandleForImageDataContainer init(Device device, ImageData i, int styleFlag) {
14601447
/* Windows does not support 2-bit images. Convert to 4-bit image. */
14611448
if (i.depth == 2) {
14621449
i = indexToIndex(i, 4);
@@ -1665,7 +1652,7 @@ private void setImageMetadataForHandle(ImageHandle imageMetadata, int zoom) {
16651652

16661653
private ImageHandle initIconHandle(Device device, ImageData source, ImageData mask, Integer zoom) {
16671654
ImageData imageData = applyMask(source, mask);
1668-
HandleForImageDataContainer imageDataHandle = init(device, imageData);
1655+
HandleForImageDataContainer imageDataHandle = init(device, imageData, this.styleFlag);
16691656
return initIconHandle(imageDataHandle.handles, zoom);
16701657
}
16711658

@@ -1690,7 +1677,7 @@ private ImageHandle initBitmapHandle(ImageData imageData, long handle, Integer z
16901677

16911678
static long [] initIcon(Device device, ImageData source, ImageData mask) {
16921679
ImageData imageData = applyMask(source, mask);
1693-
return init(device, imageData).handles;
1680+
return init(device, imageData, SWT.NONE).handles;
16941681
}
16951682

16961683
private static ImageData applyMask(ImageData source, ImageData mask) {
@@ -1770,7 +1757,7 @@ private static ImageData applyMask(ImageData source, ImageData mask) {
17701757

17711758
private ImageHandle init(ImageData i, int zoom) {
17721759
if (i == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
1773-
HandleForImageDataContainer imageDataHandle = init(device, i);
1760+
HandleForImageDataContainer imageDataHandle = init(device, i, this.styleFlag);
17741761
switch (imageDataHandle.type()) {
17751762
case SWT.ICON: {
17761763
return initIconHandle(imageDataHandle.handles(), zoom);
@@ -2007,6 +1994,11 @@ public Collection<Integer> getPreservedZoomLevels() {
20071994

20081995
protected abstract ElementAtZoom<ImageData> loadImageData(int zoom);
20091996

1997+
protected ElementAtZoom<ImageData> loadImageDataWithGrayOrDisablement(int zoom) {
1998+
ElementAtZoom<ImageData> imageDataAtZoom = loadImageData(zoom);
1999+
return new ElementAtZoom<>(adaptImageDataIfDisabledOrGray(imageDataAtZoom.element(), styleFlag), imageDataAtZoom.zoom());
2000+
}
2001+
20102002
abstract ImageData newImageData(ZoomContext zoomContext);
20112003

20122004
abstract AbstractImageProviderWrapper createCopy(Image image);
@@ -2119,9 +2111,8 @@ protected ImageHandle newImageHandle(ZoomContext zoomContext) {
21192111
}
21202112

21212113
private ImageHandle initializeHandleFromSource(ZoomContext zoomContext) {
2122-
ElementAtZoom<ImageData> imageDataAtZoom = loadImageData(zoomContext.targetZoom());
2114+
ElementAtZoom<ImageData> imageDataAtZoom = loadImageDataWithGrayOrDisablement(zoomContext.targetZoom());
21232115
ImageData imageData = DPIUtil.scaleImageData(device, imageDataAtZoom.element(), zoomContext.targetZoom(), imageDataAtZoom.zoom());
2124-
imageData = adaptImageDataIfDisabledOrGray(imageData);
21252116
return newImageHandle(imageData, zoomContext);
21262117
}
21272118
}
@@ -2413,9 +2404,8 @@ protected ImageHandle newImageHandle(ZoomContext zoomContext) {
24132404
}
24142405

24152406
private ImageHandle initializeHandleFromSource(int zoom) {
2416-
ElementAtZoom<ImageData> imageDataAtZoom = loadImageData(zoom);
2407+
ElementAtZoom<ImageData> imageDataAtZoom = loadImageDataWithGrayOrDisablement(zoom);
24172408
ImageData imageData = DPIUtil.scaleImageData (device, imageDataAtZoom.element(), zoom, imageDataAtZoom.zoom());
2418-
imageData = adaptImageDataIfDisabledOrGray(imageData);
24192409
return init(imageData, zoom);
24202410
}
24212411

@@ -2736,7 +2726,7 @@ protected long configureGCData(GCData data) {
27362726

27372727
@Override
27382728
ImageData newImageData(ZoomContext zoomContext) {
2739-
return loadImageData(zoomContext.targetZoom).element();
2729+
return loadImageDataWithGrayOrDisablement(zoomContext.targetZoom).element();
27402730
}
27412731

27422732
@Override
@@ -2765,8 +2755,8 @@ protected ImageHandle newImageHandle(ZoomContext zoomContext) {
27652755
drawer.drawOn(gc, width, height);
27662756
ImageData imageData = image.getImageData(targetZoom);
27672757
drawer.postProcess(imageData);
2768-
ImageData newData = adaptImageDataIfDisabledOrGray(imageData);
2769-
return init(newData, targetZoom);
2758+
imageData = adaptImageDataIfDisabledOrGray(imageData, styleFlag);
2759+
return init(imageData, targetZoom);
27702760
} finally {
27712761
gc.dispose();
27722762
image.dispose();

0 commit comments

Comments
 (0)