Example usage for org.jfree.chart.renderer.xy XYItemRenderer getPassCount

List of usage examples for org.jfree.chart.renderer.xy XYItemRenderer getPassCount

Introduction

In this page you can find the example usage for org.jfree.chart.renderer.xy XYItemRenderer getPassCount.

Prototype

public int getPassCount();

Source Link

Document

Returns the number of passes through the data required by the renderer.

Usage

From source file:org.openfaces.component.chart.impl.plots.XYPlotAdapter.java

@Override
public boolean render(Graphics2D g2, Rectangle2D dataArea, int index, PlotRenderingInfo info,
        CrosshairState crosshairState) {
    final XYItemRenderer renderer = getRenderer();
    final boolean customRenderingModeEnabled = renderer instanceof AreaFillRenderer;

    if (!customRenderingModeEnabled) {
        return super.render(g2, dataArea, index, info, crosshairState);
    }/*from  ww w . j  av a 2s  .  c  om*/

    XYDataset xyDataset = getDataset(index);
    final boolean isDataSetNotEmpty = !DatasetUtilities.isEmptyOrNull(xyDataset);

    if (!isDataSetNotEmpty) {
        return false;
    }
    ValueAxis xValueAxis = getDomainAxisForDataset(index);
    ValueAxis yValueAxis = getRangeAxisForDataset(index);
    XYItemRenderer xyItemRenderer = findRenderer(index);

    if (xValueAxis == null || yValueAxis == null || xyItemRenderer == null) {
        return false;
    }

    XYItemRendererState state = xyItemRenderer.initialise(g2, dataArea, this, xyDataset, info);
    boolean isReverseSeriesRenderingOrder = getSeriesRenderingOrder() == SeriesRenderingOrder.REVERSE;
    int totalRendererPasses = xyItemRenderer.getPassCount();
    int totalSeries = xyDataset.getSeriesCount();

    if (isReverseSeriesRenderingOrder) {
        for (int seriesIndex = totalSeries - 1; seriesIndex >= 0; seriesIndex--) {
            renderItems(g2, dataArea, info, crosshairState, xyDataset, xValueAxis, yValueAxis, xyItemRenderer,
                    state, totalRendererPasses, seriesIndex);
        }
    } else {
        for (int seriesIndex = 0; seriesIndex < totalSeries; seriesIndex++) {
            renderItems(g2, dataArea, info, crosshairState, xyDataset, xValueAxis, yValueAxis, xyItemRenderer,
                    state, totalRendererPasses, seriesIndex);
        }
    }

    return true;
}

From source file:ucar.unidata.idv.control.chart.MyXYPlot.java

/**
 * Draws a representation of the data within the dataArea region, using the
 * current renderer.//from w ww. j a  va2s  .  c  o m
 * <P>
 * The <code>info</code> and <code>crosshairState</code> arguments may be
 * <code>null</code>.
 *
 * @param g2  the graphics device.
 * @param dataArea  the region in which the data is to be drawn.
 * @param index  the dataset index.
 * @param info  an optional object for collection dimension information.
 * @param crosshairState  collects crosshair information
 *                        (<code>null</code> permitted).
 *
 * @return A flag that indicates whether any data was actually rendered.
 */
public boolean render(Graphics2D g2, Rectangle2D dataArea, int index, PlotRenderingInfo info,
        CrosshairState crosshairState) {

    boolean foundData = false;
    XYDataset dataset = getDataset(index);
    if (!DatasetUtilities.isEmptyOrNull(dataset)) {
        foundData = true;
        ValueAxis xAxis = getDomainAxisForDataset(index);
        ValueAxis yAxis = getRangeAxisForDataset(index);
        XYItemRenderer renderer = getRenderer(index);
        if (renderer == null) {
            renderer = getRenderer();
        }

        XYItemRendererState state = renderer.initialise(g2, dataArea, this, dataset, info);
        int passCount = renderer.getPassCount();

        SeriesRenderingOrder seriesOrder = getSeriesRenderingOrder();
        ucar.unidata.util.Trace.call1("render", " pass:" + passCount);
        if (seriesOrder == SeriesRenderingOrder.REVERSE) {
            //render series in reverse order
            for (int pass = 0; pass < passCount; pass++) {
                int seriesCount = dataset.getSeriesCount();
                for (int series = seriesCount - 1; series >= 0; series--) {
                    int itemCount = dataset.getItemCount(series);
                    ucar.unidata.util.Trace.call1("series loop",
                            " items=" + itemCount + " renderer:" + renderer.getClass().getName());
                    for (int item = 0; item < itemCount; item++) {
                        renderer.drawItem(g2, state, dataArea, info, this, xAxis, yAxis, dataset, series, item,
                                crosshairState, pass);
                    }
                    ucar.unidata.util.Trace.call2("series loop");
                }
            }
        } else {
            //render series in forward order
            for (int pass = 0; pass < passCount; pass++) {
                int seriesCount = dataset.getSeriesCount();
                for (int series = 0; series < seriesCount; series++) {
                    int itemCount = dataset.getItemCount(series);
                    for (int item = 0; item < itemCount; item++) {
                        renderer.drawItem(g2, state, dataArea, info, this, xAxis, yAxis, dataset, series, item,
                                crosshairState, pass);
                    }
                }
            }
        }
        ucar.unidata.util.Trace.call2("render");
    }
    return foundData;
}