package vooga.fighter.view; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import vooga.fighter.controller.interfaces.ViewDataSource; /** * Defines a layout for paintable elements for the canvas. * * @author Wayne You * @author Bill Muensterman * */ public abstract class CanvasLayout { public abstract void paintComponents(Graphics2D pen, ViewDataSource data, Dimension screenSize); /** * Default paint of a Paintable to the location specified. * * @param pen * Graphics pen given by Java * @param data * Data source containing the paintables * @param objectNumber * The specific object being referenced and painted */ protected void defaultPaint(Graphics2D pen, ViewDataSource data, int objectNumber) { data.getPaintable(objectNumber).paint(pen, data.getLocation(objectNumber), data.getSize(objectNumber)); } protected void horizontalReversePaint(Graphics2D pen, ViewDataSource data, int objectNumber) { AffineTransform saveAT = pen.getTransform(); pen.transform(AffineTransform.getScaleInstance(1, -1)); data.getPaintable(objectNumber).paint(pen, data.getLocation(objectNumber), data.getSize(objectNumber)); pen.setTransform(saveAT); } }