@@ -1939,14 +1939,20 @@ public Collection<Integer> getPreservedZoomLevels() {
1939
1939
return Collections .emptySet ();
1940
1940
}
1941
1941
1942
+ protected abstract ElementAtZoom <ImageData > loadImageData (int zoom );
1943
+
1942
1944
abstract ImageData newImageData (ZoomContext zoomContext );
1943
1945
1944
1946
abstract AbstractImageProviderWrapper createCopy (Image image );
1945
1947
1946
1948
ImageData getScaledImageData (int zoom ) {
1949
+ return DPIUtil .scaleImageData (device , getClosestAvailableImageData (zoom ).element (), zoom , getClosestAvailableImageData (zoom ).zoom ());
1950
+ }
1951
+
1952
+ ElementAtZoom <ImageData > getClosestAvailableImageData (int zoom ) {
1947
1953
TreeSet <Integer > availableZooms = new TreeSet <>(zoomLevelToImageHandle .keySet ());
1948
1954
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 );
1950
1956
}
1951
1957
1952
1958
protected ImageHandle newImageHandle (ZoomContext zoomContext ) {
@@ -2004,12 +2010,16 @@ AbstractImageProviderWrapper createCopy(Image image) {
2004
2010
public Collection <Integer > getPreservedZoomLevels () {
2005
2011
return Collections .singleton (zoomForHandle );
2006
2012
}
2013
+
2014
+ @ Override
2015
+ protected ElementAtZoom <ImageData > loadImageData (int zoom ) {
2016
+ return getClosestAvailableImageData (zoom );
2017
+ }
2007
2018
}
2008
2019
2009
2020
private abstract class ImageFromImageDataProviderWrapper extends AbstractImageProviderWrapper {
2010
2021
private final Map <Integer , ImageData > cachedImageData = new HashMap <>();
2011
2022
2012
- protected abstract ElementAtZoom <ImageData > loadImageData (int zoom );
2013
2023
2014
2024
void initImage () {
2015
2025
// As the init call configured some Image attributes (e.g. type)
@@ -2194,6 +2204,11 @@ ImageData newImageData(ZoomContext zoomContext) {
2194
2204
return getScaledImageData (targetZoom );
2195
2205
}
2196
2206
2207
+ @ Override
2208
+ protected ElementAtZoom <ImageData > loadImageData (int zoom ) {
2209
+ return getClosestAvailableImageData (zoom );
2210
+ }
2211
+
2197
2212
@ Override
2198
2213
protected ImageHandle newImageHandle (ZoomContext zoomContext ) {
2199
2214
int targetZoom = zoomContext .targetZoom ();
@@ -2326,7 +2341,6 @@ private ImageHandle initializeHandleFromSource(int zoom) {
2326
2341
return init (imageData , zoom );
2327
2342
}
2328
2343
2329
- protected abstract ElementAtZoom <ImageData > loadImageData (int zoom );
2330
2344
2331
2345
@ Override
2332
2346
protected Rectangle getBounds (int zoom ) {
@@ -2624,6 +2638,11 @@ ImageData newImageData(ZoomContext zoomContext) {
2624
2638
return getImageMetadata (zoomContext ).getImageData ();
2625
2639
}
2626
2640
2641
+ @ Override
2642
+ protected ElementAtZoom <ImageData > loadImageData (int zoom ) {
2643
+ return new ElementAtZoom <>(newImageData (new ZoomContext (zoom )), zoom );
2644
+ }
2645
+
2627
2646
@ Override
2628
2647
protected ImageHandle newImageHandle (ZoomContext zoomContext ) {
2629
2648
currentZoom = zoomContext ;
0 commit comments