meyfa/nsdlib

View on GitHub
src/main/java/nsdlib/rendering/renderer/awt/AwtRenderer.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package nsdlib.rendering.renderer.awt;

import java.awt.Canvas;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.image.BufferedImage;

import nsdlib.rendering.renderer.NSDRenderer;
import nsdlib.rendering.renderer.RenderAdapter;
import nsdlib.rendering.renderer.RenderContext;


/**
 * Renderer subclass for rendering to AWT's {@link BufferedImage}.
 *
 * @see NSDRenderer
 * @see AwtRenderAdapter
 */
public class AwtRenderer extends NSDRenderer<BufferedImage>
{
    static final Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 12);
    private static final FontMetrics fontMetrics = new Canvas().getFontMetrics(font);

    private static final RenderContext ctx = new RenderContext(10, 10,
            fontMetrics::stringWidth, s -> fontMetrics.getAscent());

    @Override
    public RenderContext createContext()
    {
        return ctx;
    }

    @Override
    public RenderAdapter<BufferedImage> createAdapter(RenderContext context, int width, int height, double scale)
    {
        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        return new AwtRenderAdapter(context, img, scale);
    }
}