Skip to content

Commit 1033752

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 5a22598 commit 1033752

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
@@ -552,16 +552,7 @@ public Image(Device device, ImageFileNameProvider imageFileNameProvider) {
552552
super(device);
553553
this.imageProvider = new ImageFileNameProviderWrapper(imageFileNameProvider);
554554
initialNativeZoom = DPIUtil.getNativeDeviceZoom();
555-
ElementAtZoom<String> fileName = DPIUtil.validateAndGetImagePathAtZoom (imageFileNameProvider, getZoom());
556-
if (fileName.zoom() == getZoom()) {
557-
ImageHandle imageMetadata = initNative (fileName.element(), getZoom());
558-
if (imageMetadata == null) {
559-
init(new ImageData (fileName.element()), getZoom());
560-
}
561-
} else {
562-
ImageData resizedData = DPIUtil.autoScaleImageData (device, new ImageData (fileName.element()), fileName.zoom());
563-
init(resizedData, getZoom());
564-
}
555+
imageProvider.getImageMetadata(getZoom());
565556
init();
566557
this.device.registerResourceWithZoomSupport(this);
567558
}
@@ -599,9 +590,7 @@ public Image(Device device, ImageDataProvider imageDataProvider) {
599590
super(device);
600591
this.imageProvider = new ImageDataProviderWrapper(imageDataProvider);
601592
initialNativeZoom = DPIUtil.getNativeDeviceZoom();
602-
ElementAtZoom<ImageData> data = DPIUtil.validateAndGetImageDataAtZoom(imageDataProvider, getZoom());
603-
ImageData resizedData = DPIUtil.scaleImageData(device, data.element(), getZoom(), data.zoom());
604-
init (resizedData, getZoom());
593+
imageProvider.getImageMetadata(getZoom());
605594
init();
606595
this.device.registerResourceWithZoomSupport(this);
607596
}
@@ -2143,17 +2132,18 @@ ImageData getImageData(int zoom) {
21432132

21442133
@Override
21452134
ImageHandle getImageMetadata(int zoom) {
2146-
ElementAtZoom<String> imageCandidate = DPIUtil.validateAndGetImagePathAtZoom (provider, zoom);
2147-
ImageData imageData = new ImageData (imageCandidate.element());
2148-
if (imageCandidate.zoom() == zoom) {
2149-
/* Release current native resources */
2150-
ImageHandle imageMetadata = initNative(imageCandidate.element(), zoom);
2151-
if (imageMetadata == null) init(imageData, zoom);
2152-
init();
2153-
} else {
2154-
ImageData resizedData = DPIUtil.scaleImageData(device, imageData, zoom, imageCandidate.zoom());
2155-
ImageData newData = adaptImageDataIfDisabledOrGray(resizedData);
2156-
init(newData, zoom);
2135+
ElementAtZoom<String> fileForZoom = DPIUtil.validateAndGetImagePathAtZoom (provider, zoom);
2136+
ImageHandle nativeInitializedImage = null;
2137+
if (fileForZoom.zoom() == zoom) {
2138+
nativeInitializedImage = initNative(fileForZoom.element(), zoom);
2139+
}
2140+
if (nativeInitializedImage == null) {
2141+
ImageData imageData = new ImageData (fileForZoom.element());
2142+
if (fileForZoom.zoom() != zoom) {
2143+
imageData = DPIUtil.scaleImageData(device, imageData, zoom, fileForZoom.zoom());
2144+
}
2145+
imageData = adaptImageDataIfDisabledOrGray(imageData);
2146+
init(imageData, zoom);
21572147
}
21582148
return zoomLevelToImageHandle.get(zoom);
21592149
}
@@ -2210,7 +2200,6 @@ ImageHandle getImageMetadata(int zoom) {
22102200
ImageData resizedData = DPIUtil.scaleImageData (device, imageCandidate.element(), zoom, imageCandidate.zoom());
22112201
ImageData newData = adaptImageDataIfDisabledOrGray(resizedData);
22122202
init(newData, zoom);
2213-
init();
22142203
return zoomLevelToImageHandle.get(zoom);
22152204
}
22162205

0 commit comments

Comments
 (0)