/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.legendgraphic;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.IndexColorModel;
import java.util.HashMap;
import java.util.logging.Logger;
import javax.xml.namespace.QName;
import org.geoserver.catalog.Catalog;
import org.geoserver.data.test.MockData;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.wms.GetLegendGraphic;
import org.geoserver.wms.GetLegendGraphicRequest;
import org.geoserver.wms.WMSTestSupport;
import org.geoserver.wms.map.ImageUtils;
import org.geotools.util.logging.Logging;
import org.junit.After;
import org.junit.Before;
public class BaseLegendTest extends WMSTestSupport {
protected static final Logger LOGGER = Logging
.getLogger(AbstractLegendGraphicOutputFormatTest.class);
protected BufferedImageLegendGraphicBuilder legendProducer;
protected GetLegendGraphic service;
@Override
protected void onSetUp(SystemTestData testData) throws Exception {
super.onSetUp(testData);
Catalog catalog = getCatalog();
testData.addRasterLayer(new QName("http://www.geo-solutions.it", "world", "gs"),
"world.tiff", "tiff", new HashMap(), MockData.class, catalog);
testData.addStyle("rainfall", MockData.class, catalog);
testData.addStyle("rainfall_ramp", MockData.class, catalog);
testData.addStyle("rainfall_classes", MockData.class, catalog);
testData.addStyle("rainfall_classes_nolabels", MockData.class, catalog);
// add raster layer for rendering transform test
testData.addRasterLayer(new QName("http://www.opengis.net/wcs/1.1.1", "DEM", "wcs"),
"tazdem.tiff", "tiff", new HashMap(), MockData.class, catalog);
}
@Before
public void setLegendProducer() throws Exception {
this.legendProducer = new BufferedImageLegendGraphicBuilder() {
public String getContentType() {
return "image/png";
}
};
service = new GetLegendGraphic(getWMS());
}
@After
public void resetLegendProducer() throws Exception {
this.legendProducer = null;
}
protected int getTitleHeight(GetLegendGraphicRequest req) {
final BufferedImage image = ImageUtils.createImage(req.getWidth(), req.getHeight(),
(IndexColorModel) null, req.isTransparent());
return getRenderedLabel(image, "TESTTITLE", req).getHeight();
}
private BufferedImage getRenderedLabel(BufferedImage image, String label,
GetLegendGraphicRequest request) {
Font labelFont = LegendUtils.getLabelFont(request);
boolean useAA = LegendUtils.isFontAntiAliasing(request);
final Graphics2D graphics = image.createGraphics();
graphics.setFont(labelFont);
if (useAA) {
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
} else {
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);
}
return LegendUtils.renderLabel(label, graphics, request);
}
}