Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1939,14 +1939,21 @@ public Collection<Integer> getPreservedZoomLevels() {
return Collections.emptySet();
}

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

abstract ImageData newImageData(ZoomContext zoomContext);

abstract AbstractImageProviderWrapper createCopy(Image image);

ImageData getScaledImageData (int zoom) {
ElementAtZoom<ImageData> closestAvailableImageData = getClosestAvailableImageData(zoom);
return DPIUtil.scaleImageData(device, closestAvailableImageData.element(), zoom, closestAvailableImageData.zoom());
}

ElementAtZoom<ImageData> getClosestAvailableImageData(int zoom) {
TreeSet<Integer> availableZooms = new TreeSet<>(zoomLevelToImageHandle.keySet());
int closestZoom = Optional.ofNullable(availableZooms.higher(zoom)).orElse(availableZooms.lower(zoom));
return DPIUtil.scaleImageData(device, getImageMetadata(new ZoomContext(closestZoom)).getImageData(), zoom, closestZoom);
return new ElementAtZoom<>(getImageMetadata(new ZoomContext(closestZoom)).getImageData(), closestZoom);
}

protected ImageHandle newImageHandle(ZoomContext zoomContext) {
Expand Down Expand Up @@ -2004,12 +2011,16 @@ AbstractImageProviderWrapper createCopy(Image image) {
public Collection<Integer> getPreservedZoomLevels() {
return Collections.singleton(zoomForHandle);
}

@Override
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
return getClosestAvailableImageData(zoom);
}
}

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

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

void initImage() {
// As the init call configured some Image attributes (e.g. type)
Expand Down Expand Up @@ -2194,6 +2205,11 @@ ImageData newImageData(ZoomContext zoomContext) {
return getScaledImageData(targetZoom);
}

@Override
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
return getClosestAvailableImageData(zoom);
}

@Override
protected ImageHandle newImageHandle(ZoomContext zoomContext) {
int targetZoom = zoomContext.targetZoom();
Expand Down Expand Up @@ -2326,7 +2342,6 @@ private ImageHandle initializeHandleFromSource(int zoom) {
return init(imageData, zoom);
}

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

@Override
protected Rectangle getBounds(int zoom) {
Expand Down Expand Up @@ -2621,7 +2636,12 @@ protected long configureGCData(GCData data) {

@Override
ImageData newImageData(ZoomContext zoomContext) {
return getImageMetadata(zoomContext).getImageData();
return loadImageData(zoomContext.targetZoom).element();
}

@Override
protected ElementAtZoom<ImageData> loadImageData(int zoom) {
return new ElementAtZoom<>(getImageMetadata(new ZoomContext(zoom)).getImageData(), zoom);
}

@Override
Expand Down
Loading