protected void layoutDecoration()

in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/editor/panel/content/driver/handles/AbstractGenericHandles.java [181:272]


    protected void layoutDecoration() {
        final Bounds b = getSceneGraphObjectBounds();
        
        final double minX = b.getMinX();
        final double minY = b.getMinY();
        final double maxX = b.getMaxX();
        final double maxY = b.getMaxY();
        final double midX = (minX + maxX) / 2.0;
        final double midY = (minY + maxY) / 2.0;
        
        final boolean zeroWidth = MathUtils.equals(minX, maxX);
        final boolean zeroHeight = MathUtils.equals(minY, maxY);
        
        final boolean snapToPixel = true;
        final Point2D pNW, pNE, pSE, pSW;
        final Point2D pNN, pEE, pSS, pWW;
        
        if (zeroWidth && zeroHeight) {
            pNW = pNE = pSE = pSW = 
            pNN = pEE = pSS = pWW = 
                    sceneGraphObjectToDecoration(minX, minY, snapToPixel);
        } else if (zeroWidth) {
            pNW = pNN = pNE =
                    sceneGraphObjectToDecoration(minX, minY, snapToPixel);
            pSW = pSS = pSE =
                    sceneGraphObjectToDecoration(minX, maxY, snapToPixel);
            pEE = pWW =
                    sceneGraphObjectToDecoration(minX, midY, snapToPixel);
        } else if (b.getHeight() == 0) {
            pNW = pWW = pSW =
                    sceneGraphObjectToDecoration(minX, minY, snapToPixel);
            pNE = pEE = pSE =
                    sceneGraphObjectToDecoration(maxX, minY, snapToPixel);
            pNN = pSS =
                    sceneGraphObjectToDecoration(midX, minY, snapToPixel);
        } else {
            pNW = sceneGraphObjectToDecoration(minX, minY, snapToPixel);
            pNE = sceneGraphObjectToDecoration(maxX, minY, snapToPixel);
            pSE = sceneGraphObjectToDecoration(maxX, maxY, snapToPixel);
            pSW = sceneGraphObjectToDecoration(minX, maxY, snapToPixel);

            pNN = sceneGraphObjectToDecoration(midX, minY, snapToPixel);
            pEE = sceneGraphObjectToDecoration(maxX, midY, snapToPixel);
            pSS = sceneGraphObjectToDecoration(midX, maxY, snapToPixel);
            pWW = sceneGraphObjectToDecoration(minX, midY, snapToPixel);
        }
        
        moveTo0.setX(pNW.getX());
        moveTo0.setY(pNW.getY());
        lineTo1.setX(pNE.getX());
        lineTo1.setY(pNE.getY());
        lineTo2.setX(pSE.getX());
        lineTo2.setY(pSE.getY());
        lineTo3.setX(pSW.getX());
        lineTo3.setY(pSW.getY());
        
        handleNW.setLayoutX(pNW.getX());
        handleNW.setLayoutY(pNW.getY());
        handleNE.setLayoutX(pNE.getX());
        handleNE.setLayoutY(pNE.getY());
        handleSE.setLayoutX(pSE.getX());
        handleSE.setLayoutY(pSE.getY());
        handleSW.setLayoutX(pSW.getX());
        handleSW.setLayoutY(pSW.getY());
        
        handleNN.setLayoutX(pNN.getX());
        handleNN.setLayoutY(pNN.getY());
        handleEE.setLayoutX(pEE.getX());
        handleEE.setLayoutY(pEE.getY());
        handleSS.setLayoutX(pSS.getX());
        handleSS.setLayoutY(pSS.getY());
        handleWW.setLayoutX(pWW.getX());
        handleWW.setLayoutY(pWW.getY());
        
        final Bounds handlesBounds = computeBounds(pNW, pNE, pSE, pSW);
        final int rotation = computeNWHandleRotation(pNW, handlesBounds);
        
        setupCornerHandle(handleNW, rotation +   0);
        setupCornerHandle(handleNE, rotation +  90);
        setupCornerHandle(handleSE, rotation + 180);
        setupCornerHandle(handleSW, rotation + 270);
        
        setupSideHandle(handleNN, rotation +   0);
        setupSideHandle(handleEE, rotation +  90);
        setupSideHandle(handleSS, rotation + 180);
        setupSideHandle(handleWW, rotation + 270);
        
        showHideSideHandle(handleNN, pNW, pNE);
        showHideSideHandle(handleEE, pNE, pSE);
        showHideSideHandle(handleSS, pSW, pSE);
        showHideSideHandle(handleWW, pNW, pSW);
    }