width = totalStrokeWidth / 2d * STROKE_MITER_LIMIT_FACTOR.get(this);
width = totalStrokeWidth / 2d * STROKE_MITER_LIMIT.get(this);
    public Rectangle2D.Double getFigureDrawBounds() {        double totalStrokeWidth = AttributeKeys.getStrokeTotalWidth(this);        double width = 0d;        if (STROKE_COLOR.get(this) != null) {            switch (STROKE_PLACEMENT.get(this)) {                case INSIDE :                    width = 0d;                    break;                case OUTSIDE :                    if (STROKE_JOIN.get(this) == BasicStroke.JOIN_MITER) {                        width = totalStrokeWidth * STROKE_MITER_LIMIT_FACTOR.get(this);                    } else {                        width = totalStrokeWidth;                    }                    break;                case CENTER :                    if (STROKE_JOIN.get(this) == BasicStroke.JOIN_MITER) {                        width = totalStrokeWidth / 2d * STROKE_MITER_LIMIT_FACTOR.get(this);                    } else {                        width = totalStrokeWidth / 2d;                    }                    break;            }        }        width++;        Rectangle2D.Double r = getBounds();                Geom.grow(r, width, width);        return r;    }