calcCanvasLocation(); calcChildLocations();
    public Dimension positionPositioned(CssContext cssCtx) {        int initialX = this.x;        int initialY = this.y;                CalculatedStyle style = getStyle().getCalculatedStyle();        Rectangle boundingBox = null;                int cbContentHeight = getContainingBlock().getContentAreaEdge(0, 0, cssCtx).height;        if (getStyle().isAbsolute() && getContainingBlock() instanceof BlockBox) {            boundingBox = getContainingBlock().getPaddingEdge(0, 0, cssCtx);        } else {            boundingBox = getContainingBlock().getContentAreaEdge(0, 0, cssCtx);        }        if (!style.isIdent(CSSName.LEFT, IdentValue.AUTO)) {            this.x += style.getFloatPropertyProportionalWidth(CSSName.LEFT, getContainingBlock().getContentWidth(), cssCtx);        } else if (!style.isIdent(CSSName.RIGHT, IdentValue.AUTO)) {            if (getStyle().isAbsolute() || getStyle().isFixed()) {                this.x += boundingBox.width -                        style.getFloatPropertyProportionalWidth(CSSName.RIGHT, getContainingBlock().getContentWidth(), cssCtx) - getWidth();            } else {                this.x += style.getFloatPropertyProportionalWidth(CSSName.RIGHT, getContainingBlock().getContentWidth(), cssCtx);            }        }        if (!style.isIdent(CSSName.TOP, IdentValue.AUTO)) {            this.y += style.getFloatPropertyProportionalHeight(CSSName.TOP, cbContentHeight, cssCtx);        } else if (!style.isIdent(CSSName.BOTTOM, IdentValue.AUTO)) {            if (getStyle().isAbsolute() || getStyle().isFixed()) {                this.y += boundingBox.height -                        style.getFloatPropertyProportionalWidth(CSSName.BOTTOM, cbContentHeight, cssCtx) - getHeight();            } else {                this.y += style.getFloatPropertyProportionalHeight(CSSName.BOTTOM, cbContentHeight, cssCtx);            }        }        if (getStyle().isAbsolute()) {            this.x += boundingBox.x;            this.y += boundingBox.y;        }                return new Dimension(this.x - initialX, this.y - initialY);    }