Skip to content

Commit e440f64

Browse files
committed
Adding loadImageData(zoom) to the AbstractImageProvider Wrapper
This refactoring is required to load unscaled ImageData for all wrappers The loadImageData for the added functions would have similar logic to newImageData() except the imageData returned would not be scaled but would be an ElementAtZoom
1 parent ce98326 commit e440f64

File tree

1 file changed

+22
-3
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics

1 file changed

+22
-3
lines changed

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,14 +1939,20 @@ public Collection<Integer> getPreservedZoomLevels() {
19391939
return Collections.emptySet();
19401940
}
19411941

1942+
protected abstract ElementAtZoom<ImageData> loadImageData(int zoom);
1943+
19421944
abstract ImageData newImageData(ZoomContext zoomContext);
19431945

19441946
abstract AbstractImageProviderWrapper createCopy(Image image);
19451947

19461948
ImageData getScaledImageData (int zoom) {
1949+
return DPIUtil.scaleImageData(device, getClosestAvailableImageData(zoom).element(), zoom, getClosestAvailableImageData(zoom).zoom());
1950+
}
1951+
1952+
ElementAtZoom<ImageData> getClosestAvailableImageData(int zoom) {
19471953
TreeSet<Integer> availableZooms = new TreeSet<>(zoomLevelToImageHandle.keySet());
19481954
int closestZoom = Optional.ofNullable(availableZooms.higher(zoom)).orElse(availableZooms.lower(zoom));
1949-
return DPIUtil.scaleImageData(device, getImageMetadata(new ZoomContext(closestZoom)).getImageData(), zoom, closestZoom);
1955+
return new ElementAtZoom<>(getImageMetadata(new ZoomContext(closestZoom)).getImageData(), closestZoom);
19501956
}
19511957

19521958
protected ImageHandle newImageHandle(ZoomContext zoomContext) {
@@ -2004,12 +2010,16 @@ AbstractImageProviderWrapper createCopy(Image image) {
20042010
public Collection<Integer> getPreservedZoomLevels() {
20052011
return Collections.singleton(zoomForHandle);
20062012
}
2013+
2014+
@Override
2015+
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
2016+
return getClosestAvailableImageData(zoom);
2017+
}
20072018
}
20082019

20092020
private abstract class ImageFromImageDataProviderWrapper extends AbstractImageProviderWrapper {
20102021
private final Map<Integer, ImageData> cachedImageData = new HashMap<>();
20112022

2012-
protected abstract ElementAtZoom<ImageData> loadImageData(int zoom);
20132023

20142024
void initImage() {
20152025
// As the init call configured some Image attributes (e.g. type)
@@ -2194,6 +2204,11 @@ ImageData newImageData(ZoomContext zoomContext) {
21942204
return getScaledImageData(targetZoom);
21952205
}
21962206

2207+
@Override
2208+
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
2209+
return getClosestAvailableImageData(zoom);
2210+
}
2211+
21972212
@Override
21982213
protected ImageHandle newImageHandle(ZoomContext zoomContext) {
21992214
int targetZoom = zoomContext.targetZoom();
@@ -2326,7 +2341,6 @@ private ImageHandle initializeHandleFromSource(int zoom) {
23262341
return init(imageData, zoom);
23272342
}
23282343

2329-
protected abstract ElementAtZoom<ImageData> loadImageData(int zoom);
23302344

23312345
@Override
23322346
protected Rectangle getBounds(int zoom) {
@@ -2624,6 +2638,11 @@ ImageData newImageData(ZoomContext zoomContext) {
26242638
return getImageMetadata(zoomContext).getImageData();
26252639
}
26262640

2641+
@Override
2642+
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
2643+
return new ElementAtZoom<>(newImageData(new ZoomContext(zoom)), zoom);
2644+
}
2645+
26272646
@Override
26282647
protected ImageHandle newImageHandle(ZoomContext zoomContext) {
26292648
currentZoom = zoomContext;

0 commit comments

Comments
 (0)