Skip to content

Commit f15be53

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 f15be53

File tree

1 file changed

+26
-4
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics

1 file changed

+26
-4
lines changed

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1887,6 +1887,11 @@ <T> T applyUsingAnyHandle(Function<ImageHandle, T> function) {
18871887
return function.apply(zoomLevelToImageHandle.values().iterator().next());
18881888
}
18891889

1890+
private int getClosestAvailableZoom(int zoom) {
1891+
TreeSet<Integer> availableZooms = new TreeSet<>(zoomLevelToImageHandle.keySet());
1892+
return Optional.ofNullable(availableZooms.higher(zoom)).orElse(availableZooms.lower(zoom));
1893+
}
1894+
18901895
/**
18911896
* Invokes platform specific functionality to allocate a new image.
18921897
* <p>
@@ -1939,13 +1944,14 @@ public Collection<Integer> getPreservedZoomLevels() {
19391944
return Collections.emptySet();
19401945
}
19411946

1947+
protected abstract ElementAtZoom<ImageData> loadImageData(int zoom);
1948+
19421949
abstract ImageData newImageData(ZoomContext zoomContext);
19431950

19441951
abstract AbstractImageProviderWrapper createCopy(Image image);
19451952

19461953
ImageData getScaledImageData (int zoom) {
1947-
TreeSet<Integer> availableZooms = new TreeSet<>(zoomLevelToImageHandle.keySet());
1948-
int closestZoom = Optional.ofNullable(availableZooms.higher(zoom)).orElse(availableZooms.lower(zoom));
1954+
int closestZoom = getClosestAvailableZoom(zoom);
19491955
return DPIUtil.scaleImageData(device, getImageMetadata(new ZoomContext(closestZoom)).getImageData(), zoom, closestZoom);
19501956
}
19511957

@@ -2004,12 +2010,18 @@ 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+
int closestZoom = getClosestAvailableZoom(zoom);
2017+
ImageData imageData = getImageMetadata(new ZoomContext(closestZoom)).getImageData();
2018+
return new ElementAtZoom<>(imageData, closestZoom);
2019+
}
20072020
}
20082021

20092022
private abstract class ImageFromImageDataProviderWrapper extends AbstractImageProviderWrapper {
20102023
private final Map<Integer, ImageData> cachedImageData = new HashMap<>();
20112024

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

20142026
void initImage() {
20152027
// As the init call configured some Image attributes (e.g. type)
@@ -2194,6 +2206,12 @@ ImageData newImageData(ZoomContext zoomContext) {
21942206
return getScaledImageData(targetZoom);
21952207
}
21962208

2209+
@Override
2210+
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
2211+
int closestZoom = getClosestAvailableZoom(zoom);
2212+
return new ElementAtZoom<>(getImageMetadata(new ZoomContext(closestZoom)).getImageData(), closestZoom);
2213+
}
2214+
21972215
@Override
21982216
protected ImageHandle newImageHandle(ZoomContext zoomContext) {
21992217
int targetZoom = zoomContext.targetZoom();
@@ -2326,7 +2344,6 @@ private ImageHandle initializeHandleFromSource(int zoom) {
23262344
return init(imageData, zoom);
23272345
}
23282346

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

23312348
@Override
23322349
protected Rectangle getBounds(int zoom) {
@@ -2624,6 +2641,11 @@ ImageData newImageData(ZoomContext zoomContext) {
26242641
return getImageMetadata(zoomContext).getImageData();
26252642
}
26262643

2644+
@Override
2645+
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
2646+
return new ElementAtZoom<>(newImageData(new ZoomContext(zoom)), zoom);
2647+
}
2648+
26272649
@Override
26282650
protected ImageHandle newImageHandle(ZoomContext zoomContext) {
26292651
currentZoom = zoomContext;

0 commit comments

Comments
 (0)