public Bounds getResizedBounds()

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);
    }