rectangleinsets.java

来自「JfreeChart 常用图表例子」· Java 代码 · 共 542 行 · 第 1/2 页

JAVA
542
字号
     *      * @return The inset rectangle.     */    public Rectangle2D createInsetRectangle(final Rectangle2D base) {        return createInsetRectangle(base, true, true);    }        /**     * Creates an 'inset' rectangle.     *      * @param base  the base rectangle (<code>null</code> not permitted).     * @param horizontal  apply horizontal insets?     * @param vertical  apply vertical insets?     *      * @return The inset rectangle.     */    public Rectangle2D createInsetRectangle(final Rectangle2D base,                                            final boolean horizontal, 											final boolean vertical) {        if (base == null) {            throw new IllegalArgumentException("Null 'base' argument.");        }        double topMargin = 0.0;        double bottomMargin = 0.0;        if (vertical) {            topMargin = calculateTopInset(base.getHeight());            bottomMargin = calculateBottomInset(base.getHeight());        }        double leftMargin = 0.0;        double rightMargin = 0.0;        if (horizontal) {            leftMargin = calculateLeftInset(base.getWidth());            rightMargin = calculateRightInset(base.getWidth());        }        return new Rectangle2D.Double(            base.getX() + leftMargin,             base.getY() + topMargin,            base.getWidth() - leftMargin - rightMargin,            base.getHeight() - topMargin - bottomMargin        );    }        /**     * Creates an outset rectangle.     *      * @param base  the base rectangle (<code>null</code> not permitted).     *      * @return An outset rectangle.     */    public Rectangle2D createOutsetRectangle(final Rectangle2D base) {        return createOutsetRectangle(base, true, true);    }        /**     * Creates an outset rectangle.     *      * @param base  the base rectangle (<code>null</code> not permitted).     * @param horizontal  apply horizontal insets?     * @param vertical  apply vertical insets?      *      * @return An outset rectangle.     */    public Rectangle2D createOutsetRectangle(final Rectangle2D base,                                             final boolean horizontal, 											 final boolean vertical) {        if (base == null) {            throw new IllegalArgumentException("Null 'base' argument.");        }        double topMargin = 0.0;        double bottomMargin = 0.0;        if (vertical) {            topMargin = calculateTopOutset(base.getHeight());            bottomMargin = calculateBottomOutset(base.getHeight());        }        double leftMargin = 0.0;        double rightMargin = 0.0;        if (horizontal) {            leftMargin = calculateLeftOutset(base.getWidth());            rightMargin = calculateRightOutset(base.getWidth());        }        return new Rectangle2D.Double(            base.getX() - leftMargin,             base.getY() - topMargin,            base.getWidth() + leftMargin + rightMargin,            base.getHeight() + topMargin + bottomMargin        );    }        /**     * Returns the top margin.     *      * @param height  the height of the base rectangle.     *      * @return The top margin (in Java2D units).     */    public double calculateTopInset(final double height) {        double result = this.top;        if (this.unitType == UnitType.RELATIVE) {            result = (this.top * height);        }        return result;    }        /**     * Returns the top margin.     *      * @param height  the height of the base rectangle.     *      * @return The top margin (in Java2D units).     */    public double calculateTopOutset(final double height) {        double result = this.top;        if (this.unitType == UnitType.RELATIVE) {            result = (height / (1 - this.top - this.bottom)) * this.top;        }        return result;    }        /**     * Returns the bottom margin.     *      * @param height  the height of the base rectangle.     *      * @return The bottom margin (in Java2D units).     */    public double calculateBottomInset(final double height) {        double result = this.bottom;        if (this.unitType == UnitType.RELATIVE) {            result = (this.bottom * height);        }        return result;    }    /**     * Returns the bottom margin.     *      * @param height  the height of the base rectangle.     *      * @return The bottom margin (in Java2D units).     */    public double calculateBottomOutset(final double height) {        double result = this.bottom;        if (this.unitType == UnitType.RELATIVE) {            result = (height / (1 - this.top - this.bottom)) * this.bottom;        }        return result;    }    /**     * Returns the left margin.     *      * @param width  the width of the base rectangle.     *      * @return The left margin (in Java2D units).     */    public double calculateLeftInset(final double width) {        double result = this.left;        if (this.unitType == UnitType.RELATIVE) {            result = (this.left * width);        }        return result;    }        /**     * Returns the left margin.     *      * @param width  the width of the base rectangle.     *      * @return The left margin (in Java2D units).     */    public double calculateLeftOutset(final double width) {        double result = this.left;        if (this.unitType == UnitType.RELATIVE) {            result = (width / (1 - this.left - this.right)) * this.left;        }        return result;    }        /**     * Returns the right margin.     *      * @param width  the width of the base rectangle.     *      * @return The right margin (in Java2D units).     */    public double calculateRightInset(final double width) {        double result = this.right;        if (this.unitType == UnitType.RELATIVE) {            result = (this.right * width);        }        return result;    }        /**     * Returns the right margin.     *      * @param width  the width of the base rectangle.     *      * @return The right margin (in Java2D units).     */    public double calculateRightOutset(final double width) {        double result = this.right;        if (this.unitType == UnitType.RELATIVE) {            result = (width / (1 - this.left - this.right)) * this.right;        }        return result;    }        /**     * Trims the given width to allow for the insets.     *      * @param width  the width.     *      * @return The trimmed width.     */    public double trimWidth(final double width) {        return width - calculateLeftInset(width) - calculateRightInset(width);       }        /**     * Extends the given width to allow for the insets.     *      * @param width  the width.     *      * @return The extended width.     */    public double extendWidth(final double width) {        return width + calculateLeftOutset(width) + calculateRightOutset(width);       }    /**     * Trims the given height to allow for the insets.     *      * @param height  the height.     *      * @return The trimmed height.     */    public double trimHeight(final double height) {        return height                - calculateTopInset(height) - calculateBottomInset(height);       }        /**     * Extends the given height to allow for the insets.     *      * @param height  the height.     *      * @return The extended height.     */    public double extendHeight(final double height) {        return height                + calculateTopOutset(height) + calculateBottomOutset(height);       }    /**     * Shrinks the given rectangle by the amount of these insets.     *      * @param area  the area (<code>null</code> not permitted).     */    public void trim(final Rectangle2D area) {        final double w = area.getWidth();        final double h = area.getHeight();        final double l = calculateLeftInset(w);        final double r = calculateRightInset(w);        final double t = calculateTopInset(h);        final double b = calculateBottomInset(h);        area.setRect(area.getX() + l, area.getY() + t, w - l - r, h - t - b);        }    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?