DelegatingGraphicContext.java

package de.slothsoft.charts.internal;

import java.util.Objects;

import de.slothsoft.charts.Area;
import de.slothsoft.charts.Font;
import de.slothsoft.charts.GraphicContext;

/**
 * This is a {@link GraphicContext} that only delegates to another one. Used to override
 * only one method.
 *
 * @author Stef Schulz
 * @since 0.1.0
 */

public class DelegatingGraphicContext implements GraphicContext {

	private final GraphicContext delegate;

	public DelegatingGraphicContext(GraphicContext delegate) {
		this.delegate = Objects.requireNonNull(delegate);
	}

	@Override
	public void setColor(int backgroundColor) {
		this.delegate.setColor(backgroundColor);
	}

	@Override
	public int getColor() {
		return this.delegate.getColor();
	}

	@Override
	public void setFont(Font font) {
		this.delegate.setFont(font);
	}

	@Override
	public Font getFont() {
		return this.delegate.getFont();
	}

	@Override
	public void translate(double x, double y) {
		this.delegate.translate(x, y);
	}

	@Override
	public void scale(double factor) {
		this.delegate.scale(factor);
	}

	@Override
	public void scale(double x, double y) {
		this.delegate.scale(x, y);
	}

	@Override
	public void clip(Area rect) {
		this.delegate.clip(rect);
	}

	@Override
	public void drawLine(double x1, double y1, double x2, double y2) {
		this.delegate.drawLine(x1, y1, x2, y2);
	}

	@Override
	public void fillRectangle(double x, double y, double width, double height) {
		this.delegate.fillRectangle(x, y, width, height);
	}

	@Override
	public void drawPolyline(double[] x, double[] y) {
		this.delegate.drawPolyline(x, y);
	}

	@Override
	public void fillPolygon(double[] x, double[] y) {
		this.delegate.fillPolygon(x, y);
	}

	@Override
	public void drawText(double x, double y, String text) {
		this.delegate.drawText(x, y, text);
	}

	@Override
	public void fillOval(double x, double y, double width, double height) {
		this.delegate.fillOval(x, y, width, height);
	}

	@Override
	public void fillArc(double x, double y, double width, double height, double startAngle, double arcAngle) {
		this.delegate.fillArc(x, y, width, height, startAngle, arcAngle);
	}

	@Override
	public Area calculateTextSize(String text) {
		return this.delegate.calculateTextSize(text);
	}
}