in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/editor/panel/content/util/CardinalPoint.java [131:210]
public Bounds getResizedBounds(Bounds currentBounds, double dx, double dy) {
/*
*
* NW N NE
* *----------------*----------------*
* | |
* | |
* | |
* W * * E
* | |
* | |
* | |
* *----------------*----------------*
* SW S SE
*
*
*/
// x axis
final double minX = currentBounds.getMinX();
final double maxX = currentBounds.getMaxX();
final double newMinX, newMaxX;
switch(this) {
case NW:
case W:
case SW:
newMinX = Math.min(minX + dx, maxX);
newMaxX = maxX;
break;
case NE:
case E:
case SE:
newMinX = minX;
newMaxX = Math.max(maxX + dx, minX);
break;
case N:
case S:
newMinX = minX;
newMaxX = maxX;
break;
default:
// Emergency code
assert false : "unexpected value=" + this;
newMinX = minX;
newMaxX = maxX;
break;
}
// y axis
final double minY = currentBounds.getMinY();
final double maxY = currentBounds.getMaxY();
final double newMinY, newMaxY;
switch(this) {
case NW:
case N:
case NE:
newMinY = Math.min(minY + dy, maxY);
newMaxY = maxY;
break;
case SE:
case S:
case SW:
newMinY = minY;
newMaxY = Math.max(maxY + dy, minY);
break;
case E:
case W:
newMinY = minY;
newMaxY = maxY;
break;
default:
// Emergency code
assert false : "unexpected value=" + this;
newMinY = minY;
newMaxY = maxY;
break;
}
return new BoundingBox(newMinX, newMinY, newMaxX - newMinX, newMaxY - newMinY);
}