/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package de.cismet.cismap.commons.gui.piccolo;
import edu.umd.cs.piccolo.PNode;
import java.awt.Paint;
import java.awt.PaintContext;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.TexturePaint;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
/**
* DOCUMENT ME!
*
* @author mroncoroni
* @version $Revision$, $Date$
*/
public class PFixedTexturePaint implements java.awt.Paint, PSticky, PaintWrapper {
//~ Instance fields --------------------------------------------------------
java.awt.TexturePaint paint;
BufferedImage img;
Rectangle2D anchor;
PNode parent;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new PFixedTexturePaint object.
*
* @param img DOCUMENT ME!
* @param anchor DOCUMENT ME!
* @param parent DOCUMENT ME!
*/
public PFixedTexturePaint(final BufferedImage img, final Rectangle2D anchor, final PNode parent) {
this.img = img;
this.anchor = anchor;
paint = new TexturePaint(img, anchor);
}
//~ Methods ----------------------------------------------------------------
@Override
public PaintContext createContext(final ColorModel cm,
final Rectangle deviceBounds,
final Rectangle2D userBounds,
final AffineTransform xform,
final RenderingHints hints) {
return paint.createContext(cm, deviceBounds, userBounds, xform, hints);
}
@Override
public int getTransparency() {
return paint.getTransparency();
}
@Override
public boolean getVisible() {
if (parent == null) {
return false;
}
return parent.getVisible();
}
@Override
public PNode getParent() {
return parent;
}
@Override
public void setScale(final double scale) {
paint = new TexturePaint(
img,
new Rectangle2D.Double(
anchor.getX()
* scale,
anchor.getY()
* scale,
anchor.getWidth()
* scale,
anchor.getHeight()
* scale));
}
@Override
public Paint getPaint() {
return paint;
}
}