package prefuse.render;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import prefuse.visual.VisualItem;
/**
* Interface for rendering VisualItems, providing drawing as well as location
* checking and bounding box routines.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
* @author alan newberger
*/
public interface Renderer {
/**
* Provides a default graphics context for renderers to do useful
* things like compute string widths when an external graphics context
* has not yet been provided.
*/
public static final Graphics2D DEFAULT_GRAPHICS = (Graphics2D)
new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB).getGraphics();
/**
* Render item into a Graphics2D context.
* @param g the Graphics2D context
* @param item the visual item to draw
*/
public void render(Graphics2D g, VisualItem item);
/**
* Returns true if the Point is located inside the extents of the item.
* This calculation matches against the exaxt item shape, and so is more
* sensitive than just checking within a bounding box.
* @param p the point to test for containment
* @param item the item to test containment against
* @return true if the point is contained within the the item, else false
*/
public boolean locatePoint(Point2D p, VisualItem item);
/**
* Calculates and sets the bounding rectangle for an item. This is called
* by a VisualItem when it validates its bounds.
* @param item the item to compute the bounding box for
*/
public void setBounds(VisualItem item);
} // end of interface Renderer