// Copyright 2001-2004, FreeHEP.
package org.freehep.postscript;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
/**
* @author Mark Donszelmann
* @version $Id: PanelDevice.java 10178 2006-12-08 09:03:07Z duns $
*/
public class PanelDevice extends PSDevice {
private final JPanel panel;
private Graphics2D imageGraphics = null;
public PanelDevice(JPanel panel) {
this.panel = panel;
// forward the resize
panel.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent event) {
fireComponentResizedEvent(event);
}
});
}
public double getWidth() {
return panel.getWidth();
}
public double getHeight() {
return panel.getHeight();
}
public AffineTransform getDeviceTransform() {
return panel.getGraphicsConfiguration().getDefaultTransform();
}
public Graphics getDeviceGraphics() {
return panel.getGraphics();
}
public Graphics2D getGraphics() {
if (imageGraphics != null) return imageGraphics;
return super.getGraphics();
}
public void refresh() {
panel.repaint();
}
public BufferedImage convertToImage(int width, int height) {
BufferedImage image = (BufferedImage)panel.createImage(width, height);
imageGraphics = (Graphics2D)image.getGraphics();
return image;
}
}