package ini.trakem2.display.graphics;
import ini.trakem2.display.Display;
import ini.trakem2.display.Layer;
import ini.trakem2.display.Paintable;
import ini.trakem2.display.Patch;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
public class TestGraphicsSource implements GraphicsSource {
/** Replaces all Patch instances by a smiley face. */
public List<? extends Paintable> asPaintable(final List<? extends Paintable> ds) {
final ArrayList<Paintable> a = new ArrayList<Paintable>();
for (final Paintable p : ds) {
if (p instanceof Patch) {
final Paintable pa = new Paintable() {
public void paint(Graphics2D g, Rectangle srcRect, double magnification, boolean active, int channels, Layer active_layer, List<Layer> layers) {
Patch patch = (Patch)p;
Rectangle r = patch.getBoundingBox();
g.setColor(Color.magenta);
g.fillRect(r.x, r.y, r.width, r.height);
g.setColor(Color.green);
g.fillOval(r.x + r.width/3, r.y + r.height/3, r.width/10, r.width/10);
g.fillOval(r.x + 2 * (r.width/3), r.y + r.height/3, r.width/10, r.width/10);
g.fillOval(r.x + r.width/3, r.y + 2*(r.height/3), r.width/3, r.height/6);
}
public void prePaint(Graphics2D g, Rectangle srcRect, double magnification, boolean active, int channels, Layer active_layer, List<Layer> layers) {
this.paint(g, srcRect, magnification, active, channels, active_layer, layers);
}
};
a.add(pa);
} else {
a.add(p);
}
}
return a;
}
/** Does nothing. */
public void paintOnTop(final Graphics2D g, final Display display, final Rectangle srcRect, final double magnification) {}
}