Search in sources :

Example 16 with Size2D

use of org.jfree.ui.Size2D in project SIMVA-SoS by SESoS.

the class BorderArrangement method arrange.

/**
 * Arranges the items in the specified container, subject to the given
 * constraint.
 *
 * @param container  the container.
 * @param g2  the graphics device.
 * @param constraint  the constraint.
 *
 * @return The block size.
 */
@Override
public Size2D arrange(BlockContainer container, Graphics2D g2, RectangleConstraint constraint) {
    RectangleConstraint contentConstraint = container.toContentConstraint(constraint);
    Size2D contentSize = null;
    LengthConstraintType w = contentConstraint.getWidthConstraintType();
    LengthConstraintType h = contentConstraint.getHeightConstraintType();
    if (w == LengthConstraintType.NONE) {
        if (h == LengthConstraintType.NONE) {
            contentSize = arrangeNN(container, g2);
        } else if (h == LengthConstraintType.FIXED) {
            throw new RuntimeException("Not implemented.");
        } else if (h == LengthConstraintType.RANGE) {
            throw new RuntimeException("Not implemented.");
        }
    } else if (w == LengthConstraintType.FIXED) {
        if (h == LengthConstraintType.NONE) {
            contentSize = arrangeFN(container, g2, constraint.getWidth());
        } else if (h == LengthConstraintType.FIXED) {
            contentSize = arrangeFF(container, g2, constraint);
        } else if (h == LengthConstraintType.RANGE) {
            contentSize = arrangeFR(container, g2, constraint);
        }
    } else if (w == LengthConstraintType.RANGE) {
        if (h == LengthConstraintType.NONE) {
            throw new RuntimeException("Not implemented.");
        } else if (h == LengthConstraintType.FIXED) {
            throw new RuntimeException("Not implemented.");
        } else if (h == LengthConstraintType.RANGE) {
            contentSize = arrangeRR(container, constraint.getWidthRange(), constraint.getHeightRange(), g2);
        }
    }
    assert contentSize != null;
    return new Size2D(container.calculateTotalWidth(contentSize.getWidth()), container.calculateTotalHeight(contentSize.getHeight()));
}
Also used : Size2D(org.jfree.ui.Size2D)

Example 17 with Size2D

use of org.jfree.ui.Size2D in project SIMVA-SoS by SESoS.

the class BorderArrangement method arrangeFR.

/**
 * Performs an arrangement with a fixed width and a range for the height.
 *
 * @param container  the container.
 * @param g2  the graphics device.
 * @param constraint  the constraint.
 *
 * @return The container size after the arrangement.
 */
protected Size2D arrangeFR(BlockContainer container, Graphics2D g2, RectangleConstraint constraint) {
    Size2D size1 = arrangeFN(container, g2, constraint.getWidth());
    if (constraint.getHeightRange().contains(size1.getHeight())) {
        return size1;
    } else {
        double h = constraint.getHeightRange().constrain(size1.getHeight());
        RectangleConstraint c2 = constraint.toFixedHeight(h);
        return arrange(container, g2, c2);
    }
}
Also used : Size2D(org.jfree.ui.Size2D)

Example 18 with Size2D

use of org.jfree.ui.Size2D in project SIMVA-SoS by SESoS.

the class BorderArrangement method arrangeFF.

/**
 * Arranges the items within a container.
 *
 * @param container  the container.
 * @param constraint  the constraint.
 * @param g2  the graphics device.
 *
 * @return The container size after the arrangement.
 */
protected Size2D arrangeFF(BlockContainer container, Graphics2D g2, RectangleConstraint constraint) {
    double[] w = new double[5];
    double[] h = new double[5];
    w[0] = constraint.getWidth();
    if (this.topBlock != null) {
        RectangleConstraint c1 = new RectangleConstraint(w[0], null, LengthConstraintType.FIXED, 0.0, new Range(0.0, constraint.getHeight()), LengthConstraintType.RANGE);
        Size2D size = this.topBlock.arrange(g2, c1);
        h[0] = size.height;
    }
    w[1] = w[0];
    if (this.bottomBlock != null) {
        RectangleConstraint c2 = new RectangleConstraint(w[0], null, LengthConstraintType.FIXED, 0.0, new Range(0.0, constraint.getHeight() - h[0]), LengthConstraintType.RANGE);
        Size2D size = this.bottomBlock.arrange(g2, c2);
        h[1] = size.height;
    }
    h[2] = constraint.getHeight() - h[1] - h[0];
    if (this.leftBlock != null) {
        RectangleConstraint c3 = new RectangleConstraint(0.0, new Range(0.0, constraint.getWidth()), LengthConstraintType.RANGE, h[2], null, LengthConstraintType.FIXED);
        Size2D size = this.leftBlock.arrange(g2, c3);
        w[2] = size.width;
    }
    h[3] = h[2];
    if (this.rightBlock != null) {
        RectangleConstraint c4 = new RectangleConstraint(0.0, new Range(0.0, Math.max(constraint.getWidth() - w[2], 0.0)), LengthConstraintType.RANGE, h[2], null, LengthConstraintType.FIXED);
        Size2D size = this.rightBlock.arrange(g2, c4);
        w[3] = size.width;
    }
    h[4] = h[2];
    w[4] = constraint.getWidth() - w[3] - w[2];
    RectangleConstraint c5 = new RectangleConstraint(w[4], h[4]);
    if (this.centerBlock != null) {
        this.centerBlock.arrange(g2, c5);
    }
    if (this.topBlock != null) {
        this.topBlock.setBounds(new Rectangle2D.Double(0.0, 0.0, w[0], h[0]));
    }
    if (this.bottomBlock != null) {
        this.bottomBlock.setBounds(new Rectangle2D.Double(0.0, h[0] + h[2], w[1], h[1]));
    }
    if (this.leftBlock != null) {
        this.leftBlock.setBounds(new Rectangle2D.Double(0.0, h[0], w[2], h[2]));
    }
    if (this.rightBlock != null) {
        this.rightBlock.setBounds(new Rectangle2D.Double(w[2] + w[4], h[0], w[3], h[3]));
    }
    if (this.centerBlock != null) {
        this.centerBlock.setBounds(new Rectangle2D.Double(w[2], h[0], w[4], h[4]));
    }
    return new Size2D(constraint.getWidth(), constraint.getHeight());
}
Also used : Size2D(org.jfree.ui.Size2D) Rectangle2D(java.awt.geom.Rectangle2D) Range(org.jfree.data.Range)

Example 19 with Size2D

use of org.jfree.ui.Size2D in project SIMVA-SoS by SESoS.

the class BorderArrangement method arrangeNN.

/**
 * Performs an arrangement without constraints.
 *
 * @param container  the container.
 * @param g2  the graphics device.
 *
 * @return The container size after the arrangement.
 */
protected Size2D arrangeNN(BlockContainer container, Graphics2D g2) {
    double[] w = new double[5];
    double[] h = new double[5];
    if (this.topBlock != null) {
        Size2D size = this.topBlock.arrange(g2, RectangleConstraint.NONE);
        w[0] = size.width;
        h[0] = size.height;
    }
    if (this.bottomBlock != null) {
        Size2D size = this.bottomBlock.arrange(g2, RectangleConstraint.NONE);
        w[1] = size.width;
        h[1] = size.height;
    }
    if (this.leftBlock != null) {
        Size2D size = this.leftBlock.arrange(g2, RectangleConstraint.NONE);
        w[2] = size.width;
        h[2] = size.height;
    }
    if (this.rightBlock != null) {
        Size2D size = this.rightBlock.arrange(g2, RectangleConstraint.NONE);
        w[3] = size.width;
        h[3] = size.height;
    }
    h[2] = Math.max(h[2], h[3]);
    h[3] = h[2];
    if (this.centerBlock != null) {
        Size2D size = this.centerBlock.arrange(g2, RectangleConstraint.NONE);
        w[4] = size.width;
        h[4] = size.height;
    }
    double width = Math.max(w[0], Math.max(w[1], w[2] + w[4] + w[3]));
    double centerHeight = Math.max(h[2], Math.max(h[3], h[4]));
    double height = h[0] + h[1] + centerHeight;
    if (this.topBlock != null) {
        this.topBlock.setBounds(new Rectangle2D.Double(0.0, 0.0, width, h[0]));
    }
    if (this.bottomBlock != null) {
        this.bottomBlock.setBounds(new Rectangle2D.Double(0.0, height - h[1], width, h[1]));
    }
    if (this.leftBlock != null) {
        this.leftBlock.setBounds(new Rectangle2D.Double(0.0, h[0], w[2], centerHeight));
    }
    if (this.rightBlock != null) {
        this.rightBlock.setBounds(new Rectangle2D.Double(width - w[3], h[0], w[3], centerHeight));
    }
    if (this.centerBlock != null) {
        this.centerBlock.setBounds(new Rectangle2D.Double(w[2], h[0], width - w[2] - w[3], centerHeight));
    }
    return new Size2D(width, height);
}
Also used : Size2D(org.jfree.ui.Size2D) Rectangle2D(java.awt.geom.Rectangle2D)

Example 20 with Size2D

use of org.jfree.ui.Size2D in project SIMVA-SoS by SESoS.

the class CenterArrangement method arrangeNN.

/**
 * Arranges the blocks without any constraints.  This puts all blocks
 * into a single row.
 *
 * @param container  the container.
 * @param g2  the graphics device.
 *
 * @return The size after the arrangement.
 */
protected Size2D arrangeNN(BlockContainer container, Graphics2D g2) {
    List blocks = container.getBlocks();
    Block b = (Block) blocks.get(0);
    Size2D s = b.arrange(g2, RectangleConstraint.NONE);
    b.setBounds(new Rectangle2D.Double(0.0, 0.0, s.width, s.height));
    return new Size2D(s.width, s.height);
}
Also used : Size2D(org.jfree.ui.Size2D) Rectangle2D(java.awt.geom.Rectangle2D) List(java.util.List)

Aggregations

Size2D (org.jfree.ui.Size2D)62 Test (org.junit.Test)19 Rectangle2D (java.awt.geom.Rectangle2D)18 Range (org.jfree.data.Range)14 List (java.util.List)10 RectangleConstraint (org.jfree.chart.block.RectangleConstraint)8 RectangleEdge (org.jfree.ui.RectangleEdge)5 Graphics2D (java.awt.Graphics2D)4 BufferedImage (java.awt.image.BufferedImage)4 ArrayList (java.util.ArrayList)4 LengthConstraintType (org.jfree.chart.block.LengthConstraintType)4 RectangleInsets (org.jfree.ui.RectangleInsets)4 FontMetrics (java.awt.FontMetrics)3 Shape (java.awt.Shape)3 Point2D (java.awt.geom.Point2D)2 BlockParams (org.jfree.chart.block.BlockParams)2 EntityBlockResult (org.jfree.chart.block.EntityBlockResult)2 G2TextMeasurer (org.jfree.text.G2TextMeasurer)2 Arc2D (java.awt.geom.Arc2D)1 Iterator (java.util.Iterator)1