/* @(#)Methods.java 1.0 20 September 2004 */ /* Useful imports */ import edu.neu.ccs.*; import edu.neu.ccs.gui.*; import edu.neu.ccs.codec.*; import edu.neu.ccs.console.*; import edu.neu.ccs.filter.*; import edu.neu.ccs.jpf.*; import edu.neu.ccs.parser.*; import edu.neu.ccs.pedagogy.*; import edu.neu.ccs.quick.*; import edu.neu.ccs.util.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.font.*; import java.awt.image.*; import javax.swing.*; import javax.swing.border.*; import java.io.*; import java.util.*; import java.math.*; import java.beans.*; import java.lang.reflect.*; import java.net.*; import java.util.regex.*; // import java.text.*; public class Methods extends JPF { public static void main(String[] args) { new Methods(); } int size = 20; Ellipse2D.Double circle = new Ellipse2D.Double(0, 0, size, size); Color color = Colors.red; ShapePaintable sp = new ShapePaintable (circle, PaintMode.FILL, color); String sample = "Graphics Sample"; Font font = new Font("serif", Font.PLAIN, 48); Color textcolor = Colors.blue; TextAnchor.Locator anchor = TextAnchor.CENTER_BASELINE; // position text so its center baseline // is at (200, 300) TextPaintable text = new TextPaintable (sample, font, textcolor, null, anchor, 200, 300); AffineTransform flip = new AffineTransform(1, 0, 0, -1, 0, 400); // works but does not try to move ball public void BallA() { window.clearPanel(); Graphics2D g = window.getBufferGraphics(); sp.paint(g); window.repaint(); } // doesn't work properly // balls go off screen public void BallB() { window.clearPanel(); Graphics2D g = window.getBufferGraphics(); MutatablePaintable mp = new MutatableWrapper(sp); mp.addPostMutation(flip); int dx = 40; int dy = 20; for (int i = 0; i <= 5; i++) { mp.paint(g); mp.move(dx, dy); } window.repaint(); } // doesn't work properly // balls remain on screen but text is inverted public void BallC() { window.clearPanel(); Graphics2D g = window.getBufferGraphics(); g.transform(flip); MutatablePaintable mp = new MutatableWrapper(sp); int dx = 40; int dy = 20; for (int i = 0; i <= 5; i++) { mp.paint(g); mp.move(dx, dy); } text.paint(g); window.repaint(); } }