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

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

Introduction

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

Prototype

public XYItemRendererState initialise(Graphics2D g2, Rectangle2D dataArea, XYPlot plot, XYDataset dataset,
        PlotRenderingInfo info);

Source Link

Document

Initialises the renderer then returns the number of 'passes' through the data that the renderer will require (usually just one).

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);
    }//ww  w . j  a va  2 s . 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./*w w  w  .ja v  a2 s  .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;
}