/* (c) 2017 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.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.image.ImageObserver; import java.awt.image.RenderedImage; import java.awt.image.renderable.RenderableImage; import java.text.AttributedCharacterIterator; import org.apache.batik.ext.awt.g2d.AbstractGraphics2D; import org.apache.batik.ext.awt.g2d.GraphicContext; /** * Fake Graphics2D, pretends to draw but actually does nothing (Very dishonest!) * * Implementation note, the base class provides a lot of state management ensuring clients * do not go NPE when asking for current clip, color, stroke and the like * * @author Andrea Aime - GeoSolutions */ class NoOpGraphics2D extends AbstractGraphics2D { public NoOpGraphics2D() { super(true); this.gc = new GraphicContext(); } @Override public void draw(Shape s) { } @Override public void drawRenderedImage(RenderedImage img, AffineTransform xform) { } @Override public void drawRenderableImage(RenderableImage img, AffineTransform xform) { } @Override public void drawString(String str, float x, float y) { } @Override public void drawString(AttributedCharacterIterator iterator, float x, float y) { } @Override public void fill(Shape s) { } @Override public GraphicsConfiguration getDeviceConfiguration() { return null; } @Override public Graphics create() { return this; } @Override public void setXORMode(Color c1) { } @Override public FontMetrics getFontMetrics(Font f) { // works also in headless mode return new Canvas().getFontMetrics(f); } @Override public void copyArea(int x, int y, int width, int height, int dx, int dy) { } @Override public boolean drawImage(Image img, int x, int y, ImageObserver observer) { return false; } @Override public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) { return false; } @Override public void dispose() { } }