/*
* Author: tdanford
* Date: Jul 18, 2008
*/
package org.seqcode.viz.paintable;
import java.awt.*;
import java.awt.geom.*;
public class RotatingPaintable extends AbstractPaintable {
private double rotation;
private Point axis;
private Paintable inner;
public RotatingPaintable(double rot, Paintable in) {
axis = new Point(0, 0);
rotation = rot;
inner = in;
inner.addPaintableChangedListener(this);
}
public RotatingPaintable(Point ax, double rot, Paintable in) {
axis = ax;
rotation = rot;
inner = in;
inner.addPaintableChangedListener(this);
}
public void paintItem(Graphics g, int x1, int y1, int x2, int y2) {
Graphics2D g2 = (Graphics2D)g;
AffineTransform at = AffineTransform.getRotateInstance(rotation);
try {
AffineTransform invAt = at.createInverse();
g2.translate(axis.x, axis.y);
g2.transform(at);
inner.paintItem(g2, x1, y1, x2, y2);
g2.transform(invAt);
g2.translate(-axis.x, -axis.y);
} catch (NoninvertibleTransformException e) {
e.printStackTrace();
}
}
}