package graphics.charts;
import java.awt.*;
public class Ticks extends Canvas
implements Paintable {
private DoubleData dd;
private int xtickNumber = 1;
private int ytickNumber = 1;
public Ticks(DoubleData _dd, Dimension d) {
dd = _dd;
setSize(d);
}
public void setNumberOfTicks(int _xtickNumber,
int _ytickNumber) {
xtickNumber = _xtickNumber;
ytickNumber = _ytickNumber;
}
protected void drawGrid(Graphics g) {
if (!dd.isGridOn()) return;
Dimension d = getSize();
int width = d.width;
int height = d.height;
int numXTicks = dd.getNumTicks
(dd.getXVals(), width);
int numYTicks = dd.getNumTicks(dd.getYVals(), height);
double xIncrement = dd.getXIncrement();
double deltaY = dd.getDeltaY();
int yIncrement =
(int) Math.round(dd.getYIncrement());
g.setColor(Color.darkGray);
double xCoord = dd.getXAxisCoord();
double yCoord = dd.getYAxisCoord();
int yHeightPos = (int) (yCoord + yIncrement);
int yHeightNeg = (int) (yCoord - yIncrement);
int yLeft = 0;
int yRight = width;
while (yHeightPos > 0) {
yHeightPos = yHeightPos - ((int) yIncrement);
g.drawLine(yLeft, yHeightPos, yRight, yHeightPos);
}
while (yHeightNeg < height) {
yHeightNeg = yHeightNeg + (int) yIncrement;
g.drawLine(yLeft, yHeightNeg, yRight, yHeightNeg);
}
int xTop = 0;
int xBottom = height;
int xWidthPos = (int) (xCoord + xIncrement);
int xWidthNeg = (int) (xCoord - xIncrement);
while (xWidthPos > 0) {
xWidthPos = xWidthPos - (int) xIncrement;
g.drawLine(xWidthPos, xTop, xWidthPos, xBottom);
}
while (xWidthNeg < width) {
xWidthNeg = xWidthNeg + (int) xIncrement;
g.drawLine(xWidthNeg, xTop, xWidthNeg, xBottom);
}
}
protected void drawAxes(Graphics g) {
g.setColor(Color.blue);
int xorig = (int) dd.getXAxisCoord();
int yorig = (int) dd.getYAxisCoord();
g.drawLine(0, yorig, getSize().width, yorig);
g.drawLine(xorig, 0, xorig, getSize().height);
}
public void paint(Graphics g) {
Dimension d = getSize();
drawAxes(g);
int width = d.width;
int height = d.height;
double xIncrement = width / xtickNumber;
double deltaY = dd.getDeltaY();
double yIncrement = height / ytickNumber;
int xCoord = (int) dd.getXAxisCoord();
int yCoord = (int) dd.getYAxisCoord();
int yLeft = xCoord - 2;
int yRight = xCoord + 2;
int xTop = yCoord + 2;
int xBottom = yCoord - 2;
int yHeightPos = (int) (yCoord + yIncrement);
int yHeightNeg = (int) (yCoord - yIncrement);
int xWidthPos = (int) (xCoord + xIncrement);
int xWidthNeg = (int) (xCoord - xIncrement);
while (yHeightPos > 0) {
yHeightPos = yHeightPos - ((int) yIncrement);
g.drawLine(yLeft, yHeightPos, yRight, yHeightPos);
}
while (yHeightNeg < height) {
yHeightNeg = yHeightNeg + (int) yIncrement;
g.drawLine(yLeft, yHeightNeg, yRight, yHeightNeg);
}
while (xWidthPos > 0) {
xWidthPos = xWidthPos - (int) xIncrement;
g.drawLine(xWidthPos, xTop, xWidthPos, xBottom);
}
while (xWidthNeg < width) {
xWidthNeg = xWidthNeg + (int) xIncrement;
g.drawLine(xWidthNeg, xTop, xWidthNeg, xBottom);
}
}
}