}
}
}
// Define start connection point
CornerPoint startCorner = null;
CornerPoint endCorner = null;
switch (shapeEnterDirection) {
case 0:
startCorner = new CornerPoint(shapeLeft, first.endPoint.getTop().intValue());
break;
case 1:
startCorner = new CornerPoint(first.endPoint.getLeft().intValue(), shapeTop);
break;
case 2:
startCorner = new CornerPoint(shapeRight, first.endPoint.getTop().intValue());
break;
case 3:
startCorner = new CornerPoint(first.endPoint.getLeft().intValue(), shapeBottom);
break;
}
// Define leave connection point
switch (shapeLeaveDirection) {
case 0:
endCorner = new CornerPoint(shapeLeft, last.endPoint.getTop().intValue());
break;
case 1:
endCorner = new CornerPoint(last.endPoint.getLeft().intValue(), shapeTop);
break;
case 2:
endCorner = new CornerPoint(shapeRight, last.endPoint.getTop().intValue());
break;
case 3:
endCorner = new CornerPoint(last.endPoint.getLeft().intValue(), shapeBottom);
break;
}
// Define middle connection points
i = shapeEnterDirection;
proceed = true;
CornerPoint tempCorner = null;
List<CornerPoint> middleCorners = new ArrayList<CornerPoint>();
while (i != shapeLeaveDirection) {
if (direction == 0) {
i++;
if (i == 4) {
i = 0;
}
} else {
i--;
if (i == -1) {
i = 3;
}
}
switch (i) {
case 0:
if (direction == 0) {
tempCorner = new CornerPoint(shapeLeft, shapeBottom);
} else {
tempCorner = new CornerPoint(shapeLeft, shapeTop);
}
break;
case 1:
if (direction == 0) {
tempCorner = new CornerPoint(shapeLeft, shapeTop);
} else {
tempCorner = new CornerPoint(shapeRight, shapeTop);
}
break;
case 2:
if (direction == 0) {
tempCorner = new CornerPoint(shapeRight, shapeTop);
} else {
tempCorner = new CornerPoint(shapeRight, shapeBottom);
}
break;
case 3:
if (direction == 0) {
tempCorner = new CornerPoint(shapeRight, shapeBottom);
} else {
tempCorner = new CornerPoint(shapeLeft, shapeBottom);
}
break;
}
middleCorners.add(tempCorner);
}
// add startEndPoint and endEndPoint to corners, for easier defining
// insert position
CornerPoint firstSectionStart = new CornerPoint(first.startPoint.getLeft(), first.startPoint.getTop());
CornerPoint lastSectionEnd = new CornerPoint(last.endPoint.getLeft(), last.endPoint.getTop());
boolean addToRemove = false;
// Index in cornerpoints list after which new corner points will be inserted
int insertIndex = -1;
List<CornerPoint> toRemove = new ArrayList<CornerPoint>();
CornerPoint startEndPointCorner =
new CornerPoint(this.startEndPoint.getLeft().intValue(), this.startEndPoint.getTop().intValue());
CornerPoint endEndPointCorner =
new CornerPoint(this.endEndPoint.getLeft().intValue(), this.endEndPoint.getTop().intValue());
corners.add(0, startEndPointCorner);
corners.add(endEndPointCorner);
// define corner points to remove (corners lying inside evaded shape)