package fplot;
import java.awt.*;
/**
*
*
* @author Christian Semrau
*
* Christian.Semrau@student.uni-magdeburg.de
*
Homepage
*/
public class Line {
boolean drawStart, drawDest;
int startX, startY, destX, destY;
int sX, sY, dX, dY;
int w, h;
final static int
OUTLOW = -10,
OUTHIGH = -11,
OUTLEFT = -12,
OUTRIGHT = -13,
UNDEFINED = -14;
/**
*
*/
public Line() {
drawStart = drawDest = false;
startX = startY = destX = destY = UNDEFINED;
h = w = 0;
sX = sY = dX = dY = -1;
}
/**
*
* @param sX int
* @param sY int
* @param dX int
* @param dY int
*/
public Line(int asX, int asY, int adX, int adY, Dimension p) {
this.h = p.height;
this.w = p.width;
this.startX = asX;
this.startY = asY;
this.destX = adX;
this.destY = adY;
this.drawStart = this.startX!=UNDEFINED && this.startY!=UNDEFINED;
this.drawDest = this.destX !=UNDEFINED && this.destY !=UNDEFINED;
this.sX = drawX(this.startX);
this.sY = drawY(this.startY);
this.dX = drawX(this.destX);
this.dY = drawY(this.destY);
}
/**
* Line constructor comment.
*/
public Line(int X, int Y, Dimension p) {
this(X, Y, X, Y, p);
}
/**
*
* @param last fplot.Line
* @param dX int
* @param dY int
*/
public Line(Line last, int dX, int dY, Dimension p) {
this(last.destX, last.destY, dX, dY, p);
}
/**
*
*/
public int drawX(int x) {
return x==OUTRIGHT ? w : (x==OUTLEFT ? -1 : x);
;
}
/**
*
*/
public int drawY(int y) {
return y==OUTHIGH ? -1 : (y==OUTLOW ? h : y);
}
/**
*
* @param g Graphics
*/
public void paint(Graphics g) {
if (drawStart && drawDest){
// beide OK
g.drawLine(dX, dY, sX, sY);
}else
// hoechstens einer ist OK
if (drawDest){
// der aktuelle Wert ist OK
g.drawLine(dX, dY, dX, dY);
}
}
/**
*
* @return java.lang.String
*/
public String toString() {
return getClass().getName()+"["
+startX+"/"+startY+"-"+destX+"/"+destY+
","+sX+"/"+sY+"-"+dX+"/"+dY+
"]";
}
}