Skip to content

Commit 31a54c4

Browse files
committed
[Win32] Combine duplicate initialization logic for image from providers
Images based on ImageFileNameProvider and ImageDataProvider are initialized with data based on the default zoom and can later on be reinitialized with data for others zooms when `getImageData()` is called. At both places, the same functionality is implemented twice. This change makes the initial creation of image data use the already existing implementation for reinitializing it for another zoom. It also unifies the previous two implementations and removes obsolete calls to init() which are just required once for starting resource tracking.
1 parent d25bdc3 commit 31a54c4

File tree

1 file changed

+14
-25
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics

1 file changed

+14
-25
lines changed

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

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -555,16 +555,7 @@ public Image(Device device, ImageFileNameProvider imageFileNameProvider) {
555555
super(device);
556556
this.imageProvider = new ImageFileNameProviderWrapper(imageFileNameProvider);
557557
initialNativeZoom = DPIUtil.getNativeDeviceZoom();
558-
ElementAtZoom<String> fileName = DPIUtil.validateAndGetImagePathAtZoom (imageFileNameProvider, getZoom());
559-
if (fileName.zoom() == getZoom()) {
560-
ImageHandle imageMetadata = initNative (fileName.element(), getZoom());
561-
if (imageMetadata == null) {
562-
init(new ImageData (fileName.element()), getZoom());
563-
}
564-
} else {
565-
ImageData resizedData = DPIUtil.autoScaleImageData (device, new ImageData (fileName.element()), fileName.zoom());
566-
init(resizedData, getZoom());
567-
}
558+
imageProvider.getImageMetadata(getZoom());
568559
init();
569560
this.device.registerResourceWithZoomSupport(this);
570561
}
@@ -602,9 +593,7 @@ public Image(Device device, ImageDataProvider imageDataProvider) {
602593
super(device);
603594
this.imageProvider = new ImageDataProviderWrapper(imageDataProvider);
604595
initialNativeZoom = DPIUtil.getNativeDeviceZoom();
605-
ElementAtZoom<ImageData> data = DPIUtil.validateAndGetImageDataAtZoom(imageDataProvider, getZoom());
606-
ImageData resizedData = DPIUtil.scaleImageData(device, data.element(), getZoom(), data.zoom());
607-
init (resizedData, getZoom());
596+
imageProvider.getImageMetadata(getZoom());
608597
init();
609598
this.device.registerResourceWithZoomSupport(this);
610599
}
@@ -2146,17 +2135,18 @@ ImageData getImageData(int zoom) {
21462135

21472136
@Override
21482137
ImageHandle getImageMetadata(int zoom) {
2149-
ElementAtZoom<String> imageCandidate = DPIUtil.validateAndGetImagePathAtZoom (provider, zoom);
2150-
ImageData imageData = new ImageData (imageCandidate.element());
2151-
if (imageCandidate.zoom() == zoom) {
2152-
/* Release current native resources */
2153-
ImageHandle imageMetadata = initNative(imageCandidate.element(), zoom);
2154-
if (imageMetadata == null) init(imageData, zoom);
2155-
init();
2156-
} else {
2157-
ImageData resizedData = DPIUtil.scaleImageData(device, imageData, zoom, imageCandidate.zoom());
2158-
ImageData newData = adaptImageDataIfDisabledOrGray(resizedData);
2159-
init(newData, zoom);
2138+
ElementAtZoom<String> fileForZoom = DPIUtil.validateAndGetImagePathAtZoom (provider, zoom);
2139+
ImageHandle nativeInitializedImage = null;
2140+
if (fileForZoom.zoom() == zoom) {
2141+
nativeInitializedImage = initNative(fileForZoom.element(), zoom);
2142+
}
2143+
if (nativeInitializedImage == null) {
2144+
ImageData imageData = new ImageData (fileForZoom.element());
2145+
if (fileForZoom.zoom() != zoom) {
2146+
imageData = DPIUtil.scaleImageData(device, imageData, zoom, fileForZoom.zoom());
2147+
}
2148+
imageData = adaptImageDataIfDisabledOrGray(imageData);
2149+
init(imageData, zoom);
21602150
}
21612151
return zoomLevelToImageHandle.get(zoom);
21622152
}
@@ -2213,7 +2203,6 @@ ImageHandle getImageMetadata(int zoom) {
22132203
ImageData resizedData = DPIUtil.scaleImageData (device, imageCandidate.element(), zoom, imageCandidate.zoom());
22142204
ImageData newData = adaptImageDataIfDisabledOrGray(resizedData);
22152205
init(newData, zoom);
2216-
init();
22172206
return zoomLevelToImageHandle.get(zoom);
22182207
}
22192208

0 commit comments

Comments
 (0)