Example usage for org.jfree.chart.axis CategoryLabelPosition getRotationAnchor

List of usage examples for org.jfree.chart.axis CategoryLabelPosition getRotationAnchor

Introduction

In this page you can find the example usage for org.jfree.chart.axis CategoryLabelPosition getRotationAnchor.

Prototype

public TextAnchor getRotationAnchor() 

Source Link

Document

Returns the rotation anchor point.

Usage

From source file:org.pentaho.plugin.jfreereport.reportcharts.CategoricalChartExpressionTest.java

@Test
public void testCreateUpRotationCategoryLabelPosition() {
    TestableCategoricalChartExpression e = new TestableCategoricalChartExpression();
    {/*from   www .  j  av  a 2  s. c om*/
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.BOTTOM, 0.0);
        Assert.assertEquals(RectangleAnchor.TOP, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.TOP_CENTER, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.TOP_CENTER, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.BOTTOM,
                90.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.TOP, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.CENTER_RIGHT, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.CENTER_RIGHT, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.BOTTOM,
                -90.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.TOP, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.CENTER_LEFT, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.CENTER_LEFT, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.BOTTOM,
                180.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.TOP, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.BOTTOM_CENTER, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.BOTTOM_CENTER, c.getRotationAnchor());
    }

    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.LEFT, 0.0);
        Assert.assertEquals(RectangleAnchor.RIGHT, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.CENTER_RIGHT, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.CENTER_RIGHT, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.LEFT,
                90.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.RIGHT, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.BOTTOM_CENTER, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.BOTTOM_CENTER, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.LEFT,
                -90.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.RIGHT, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.TOP_CENTER, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.TOP_CENTER, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.LEFT,
                180.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.RIGHT, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.CENTER_LEFT, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.CENTER_LEFT, c.getRotationAnchor());
    }

    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.TOP, 0.0);
        Assert.assertEquals(RectangleAnchor.BOTTOM, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.BOTTOM_CENTER, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.BOTTOM_CENTER, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.TOP,
                90.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.BOTTOM, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.CENTER_LEFT, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.CENTER_LEFT, c.getRotationAnchor());
    }

    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.RIGHT, 0.0);
        Assert.assertEquals(RectangleAnchor.LEFT, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.CENTER_LEFT, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.CENTER_LEFT, c.getRotationAnchor());
    }
    {
        CategoryLabelPosition c = e.createUpRotationCategoryLabelPosition(PlaneDirection.RIGHT,
                90.0 * Math.PI / 180.0);
        Assert.assertEquals(RectangleAnchor.LEFT, c.getCategoryAnchor());
        Assert.assertEquals(TextBlockAnchor.TOP_CENTER, c.getLabelAnchor());
        Assert.assertEquals(TextAnchor.TOP_CENTER, c.getRotationAnchor());
    }
}

From source file:org.jfree.eastwood.GCategoryAxis.java

/**
 * Creates a temporary list of ticks that can be used when drawing the axis.
 *
 * @param g2  the graphics device (used to get font measurements).
 * @param state  the axis state./*  www. j a  va 2 s  .  c  o m*/
 * @param dataArea  the area inside the axes.
 * @param edge  the location of the axis.
 *
 * @return A list of ticks.
 */
public List refreshTicks(Graphics2D g2, AxisState state, Rectangle2D dataArea, RectangleEdge edge) {

    List ticks = new java.util.ArrayList();

    // sanity check for data area...
    if (dataArea.getHeight() <= 0.0 || dataArea.getWidth() < 0.0) {
        return ticks;
    }

    CategoryPlot plot = (CategoryPlot) getPlot();
    List categories = null;
    if (this.labels == null) {
        categories = plot.getCategories();
    } else {
        categories = new java.util.ArrayList(this.labels);
        // handle a little quirk in the Google Chart API - for a horizontal
        // bar chart, the labels on the axis get applied in reverse order
        // relative to the data values
        if (plot.getOrientation() == PlotOrientation.HORIZONTAL) {
            Collections.reverse(categories);
        }
    }
    double max = 0.0;

    if (categories != null) {
        CategoryLabelPosition position = getCategoryLabelPositions().getLabelPosition(edge);
        float r = getMaximumCategoryLabelWidthRatio();
        if (r <= 0.0) {
            r = position.getWidthRatio();
        }

        float l = 0.0f;
        if (position.getWidthType() == CategoryLabelWidthType.CATEGORY) {
            l = (float) calculateCategorySize(categories.size(), dataArea, edge);
        } else {
            if (RectangleEdge.isLeftOrRight(edge)) {
                l = (float) dataArea.getWidth();
            } else {
                l = (float) dataArea.getHeight();
            }
        }
        int categoryIndex = 0;
        Iterator iterator = categories.iterator();
        while (iterator.hasNext()) {
            Comparable category = (Comparable) iterator.next();
            TextBlock label = createLabel(category, l * r, edge, g2);
            if (edge == RectangleEdge.TOP || edge == RectangleEdge.BOTTOM) {
                max = Math.max(max, calculateTextBlockHeight(label, position, g2));
            } else if (edge == RectangleEdge.LEFT || edge == RectangleEdge.RIGHT) {
                max = Math.max(max, calculateTextBlockWidth(label, position, g2));
            }
            Tick tick = new CategoryTick(category, label, position.getLabelAnchor(),
                    position.getRotationAnchor(), position.getAngle());
            ticks.add(tick);
            categoryIndex = categoryIndex + 1;
        }
    }
    state.setMax(max);
    return ticks;

}

From source file:org.fhaes.fhrecorder.util.NumericCategoryAxis.java

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override//from  w  w  w  .  jav a  2s . c  o m
public List refreshTicks(Graphics2D g2, AxisState state, Rectangle2D dataArea, RectangleEdge edge) {

    List ticks = new java.util.ArrayList();

    // sanity check for data area...
    if (dataArea.getHeight() <= 0.0 || dataArea.getWidth() < 0.0) {
        return ticks;
    }

    CategoryPlot plot = (CategoryPlot) getPlot();
    List categories = plot.getCategoriesForAxis(this);
    double max = 0.0;

    if (categories != null) {
        CategoryLabelPosition position = this.getCategoryLabelPositions().getLabelPosition(edge);
        float r = this.getMaximumCategoryLabelWidthRatio();
        if (r <= 0.0) {
            r = position.getWidthRatio();
        }

        float l = 0.0f;
        if (position.getWidthType() == CategoryLabelWidthType.CATEGORY) {
            l = (float) calculateCategorySize(categories.size(), dataArea, edge);
        } else {
            if (RectangleEdge.isLeftOrRight(edge)) {
                l = (float) dataArea.getWidth();
            } else {
                l = (float) dataArea.getHeight();
            }
        }
        int categoryIndex = 0;
        Iterator iterator = categories.iterator();
        while (iterator.hasNext()) {
            Comparable category = (Comparable) iterator.next();

            try {
                Integer intcategory = Integer.valueOf(category.toString());

                int modulus = intcategory % labelEveryXCategories;

                if (modulus != 0)
                    category = " ";

            } catch (NumberFormatException e) {

            }

            TextBlock label = createLabel(category, l * r, edge, g2);
            if (edge == RectangleEdge.TOP || edge == RectangleEdge.BOTTOM) {
                max = Math.max(max, calculateTextBlockHeight(label, position, g2));
            } else if (edge == RectangleEdge.LEFT || edge == RectangleEdge.RIGHT) {
                max = Math.max(max, calculateTextBlockWidth(label, position, g2));
            }
            Tick tick = new CategoryTick(category, label, position.getLabelAnchor(),
                    position.getRotationAnchor(), position.getAngle());
            ticks.add(tick);
            categoryIndex = categoryIndex + 1;
        }
    }
    state.setMax(max);
    return ticks;
}