private void drawBody(G g, R r) {
if (xgate == null && ygate == null) return;
+
+ int N = 7;
+ int TSIZE = 10;
+ double TSQR = TSIZE / Math.sqrt(2.0);
+
R body = r;
g.color(BODY_COLOR);
R xgater = null;
R ygater = null;
- int N = 7;
R gateArea = body.plus(12+N, 12+N, -(4+N), -(4+N));
if (xgate==null) ygater = gateArea;
else if (ygate==null) xgater = gateArea;
else {
double factor = gateArea.width()/2;
- xgater = gateArea.plus(0, 0, factor, factor);
- ygater = gateArea.plus(factor, 0, 0, factor);
+ xgater = gateArea.plus(0, 0, -factor, -factor);
+ ygater = gateArea.plus(factor, 0, 0, -factor);
}
- R xring = gateArea.plus(4, 4, -4, -4);
- R yring = gateArea.plus(6, 6, -6, -6);
-
- int rot = 0;
- switch (fpslicCell.yi()) {
- case NORTH: rot = 2; break;
- case SOUTH: rot = 0; break;
- case WEST: rot = 3; break;
- case EAST: rot = 1; break;
- default: rot = 0;
- }
+ R xring = gateArea.plus(-4, -4, 4, 4);
+ R yring = gateArea.plus(-6, -6, 6, 6);
if (xgate != null) {
- xgate.rotation = rot;
+ xgate.rotation(fpslicCell.yi());
xgate.gateArea = gateArea;
+ xgate.r = xgater;
}
if (ygate != null) {
- ygate.rotation = rot;
+ ygate.rotation(fpslicCell.yi());
ygate.gateArea = gateArea;
+ ygate.r = ygater;
}
- int TSIZE = 10;
- double TSQR = TSIZE / Math.sqrt(2.0);
g.color(XGATE_COLOR);
- P p = null;
- switch (fpslicCell.xi()) {
- case SW: p = new P(r.minx(), r.miny()); break;
- case SE: p = new P(r.maxx(), r.miny()); break;
- case NW: p = new P(r.minx(), r.maxy()); break;
- case NE: p = new P(r.maxx(), r.maxy()); break;
- }
+ P p = r.corner(fpslicCell.xi());
if (p!=null) {
if (ygate != null) {
- g.route(p, xring, ygate.getInput(1, ygater));
- g.line(ygate.getInput(1, ygater), ygate.getInputDest(1, ygater));
+ g.route(p, xring, ygate.getInput(1));
+ g.line(ygate.getInput(1), ygate.getInputDest(1));
}
if (xgate != null) {
- g.route(p, xring, xgate.getInput(0, xgater));
- g.line(xgate.getInput(0, xgater), xgate.getInputDest(0, xgater));
+ g.route(p, xring, xgate.getInput(0));
+ g.line(xgate.getInput(0), xgate.getInputDest(0));
}
}
- p = null;
+ p = r.corner(fpslicCell.yi());
g.color(YGATE_COLOR);
- switch (fpslicCell.yi()) {
- case NORTH: p = new P(r.cx(), r.maxy()); break;
- case SOUTH: p = new P(r.cx(), r.miny()); break;
- case WEST: p = new P(r.minx(), r.cy()); break;
- case EAST: p = new P(r.maxx(), r.cy()); break;
- }
if (p!=null) {
if (ygate != null) {
- g.route(p, yring, ygate.getInput(0, ygater));
- g.line(ygate.getInput(0, ygater), ygate.getInputDest(0, ygater));
+ g.route(p, yring, ygate.getInput(0));
+ g.line(ygate.getInput(0), ygate.getInputDest(0));
}
if (xgate != null) {
- g.route(p, yring, xgate.getInput(1, xgater));
- g.line(xgate.getInput(1, xgater), xgate.getInputDest(1, xgater));
+ g.route(p, yring, xgate.getInput(1));
+ g.line(xgate.getInput(1), xgate.getInputDest(1));
}
}
P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1));
R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1),
r.maxx()-2*(layer+1), r.maxy()-2*(layer+1));
- g.route(p2, r2, xgate.getInput(3, xgater));
+ g.route(p2, r2, xgate.getInput(3));
}
*/
if (fpslicCell.wi() != NONE) {
P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1));
R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1),
r.maxx()-2*(layer+1), r.maxy()-2*(layer+1));
- g.route(p2, r2, xgate.getInput(2, xgater));
- g.line(xgate.getInput(2, xgater), xgate.getInputDest(2, xgater));
+ g.route(p2, r2, xgate.getInput(2));
+ g.line(xgate.getInput(2), xgate.getInputDest(2));
}
- xgate.draw(g, xgater, XGATE_COLOR);
+ xgate.draw(g, XGATE_COLOR);
}
if (ygater != null) {
/*
P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1));
R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1),
r.maxx()-2*(layer+1), r.maxy()-2*(layer+1));
- g.route(p2, r2, ygate.getInput(3, ygater));
+ g.route(p2, r2, ygate.getInput(3));
}
*/
if (fpslicCell.wi() != NONE) {
P p2 = new P(r.minx()+2*(layer+1), r.miny()+2*(layer+1));
R r2 = new R(r.minx()+2*(layer+1), r.miny()+2*(layer+1),
r.maxx()-2*(layer+1), r.maxy()-2*(layer+1));
- g.route(p2, r2, ygate.getInput(2, ygater));
- g.line(ygate.getInput(2, ygater), ygate.getInputDest(2, ygater));
+ g.route(p2, r2, ygate.getInput(2));
+ g.line(ygate.getInput(2), ygate.getInputDest(2));
}
- ygate.draw(g, ygater, YGATE_COLOR);
+ ygate.draw(g, YGATE_COLOR);
}
}
}
\ No newline at end of file