/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.wms.map; import java.awt.image.RenderedImage; import java.util.Collections; import java.util.List; import org.geoserver.wms.WMSMapContent; import org.geoserver.wms.WebMap; import org.geotools.coverage.grid.GridCoverage2D; /** * A {@link WebMap} where the map is given by a {@link RenderedImage} * * @author Gabriel Roldan */ public class RenderedImageMap extends WebMap { private RenderedImage image; private List<GridCoverage2D> renderedCoverages; public RenderedImageMap(final WMSMapContent mapContent, final RenderedImage image, final String mimeType) { super(mapContent); this.image = image; setMimeType(mimeType); } public RenderedImage getImage() { return image; } @Override protected void disposeInternal() { image = null; } /** * Returns the list of rendered coverages to produce this map, needed so they're disposed after * writing them down to the destination output stream when their rendered images are used * directly instead of pre-rendered to a buffered image or such. * * @return the list of rendered coverages or {@code null} */ @SuppressWarnings("unchecked") public List<GridCoverage2D> getRenderedCoverages() { return renderedCoverages == null ? Collections.EMPTY_LIST : renderedCoverages; } /** * Allows to store the coverages rendered for this map so that they can be disposed at a later * stage. Useful in case there's a rendering pipeline making direct use of the coverages */ public void setRenderedCoverages(List<GridCoverage2D> renderedCoverages) { this.renderedCoverages = renderedCoverages; } /** * Access to the map's context this map is created for */ public WMSMapContent getMapContext() { return mapContent; } }