/** * Javier Abell�n, 24 Mayo 2006. * Trazo que se dibuja en el paint. */ package gafetes.modules.sign; import java.awt.Color; import java.awt.geom.Point2D; import java.util.LinkedList; /** * Trazo que se dibuja en el paint. Esta compuesto de muchos puntos que se * unir�n por una l�nea de color. * @author javaapplication4 * */ public class Trazo { /** Color del trazo */ private Color color = Color.black; /** Devuelve el color del trazo */ public Color getColor() { return color; } /** Fija el color para el trazo */ public void setColor(Color color) { this.color = color; } /** Lista de puntos que compone el trazo */ private LinkedList<Point2D> puntos = new LinkedList<Point2D>(); /** A�ade un nuevo punto al trazo */ public void addPunto(Point2D punto) { puntos.add(punto); } /** Devuelve la lista de puntos que compone el trazo */ public LinkedList<Point2D> getPuntos() { return puntos; } /** Devuelve cu�ntos puntos componen el trazo */ public int getNumeroPuntos() { return puntos.size(); } /** A�ade un nuevo punto al trazo */ public void addPunto(int x, int y) { Point2D p = new Point2D.Float(x, y); puntos.add(p); } /** Devuelve el punto de la lista en la posici�n indicada * * @param posicion en la lista, entre 0 y getNumeroPuntos()-1 * @return El punto */ public Point2D getPunto(int posicion) { return puntos.get(posicion); } /** * Devuelve una pseudodistancia entre el punto x,y y el punto m�s cercano * del trazo. * M�todo �til para saber a qu� distancia del trazo se pincha el rat�n. * @param x de un punto exterior al trazo * @param y de un punto exterior al trazo. * @return La distancia */ public double dameDistanciaMinima(int x, int y) { double distancia = dameDistancia(x, y, 0); for (int i = 1; i < puntos.size(); i++) { distancia = Math.min(dameDistancia(x, y, i), distancia); } return distancia; } /** * Devuelve la pseudo-distancia entre el punto x,y y el punto i de la lista. * @param x de un punto exterior al trazo * @param y de un punto exterior al trazo * @param i La posicion de un punto en la lista de puntos de este trazo * @return La pseuod-distancia entre x,y y el punto de posicion i */ private double dameDistancia(int x, int y, int i) { return Math.abs(puntos.get(i).getX() - x) + Math.abs(puntos.get(i).getY() - y); } }