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

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

Introduction

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

Prototype

public void drawItem(Graphics2D g2, XYItemRendererState state, Rectangle2D dataArea, PlotRenderingInfo info,
        XYPlot plot, ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset, int series, int item,
        CrosshairState crosshairState, int pass);

Source Link

Document

Called for each item to be plotted.

Usage

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

private void renderItems(Graphics2D g2, Rectangle2D dataArea, PlotRenderingInfo info,
        CrosshairState crosshairState, XYDataset xyDataset, ValueAxis xValueAxis, ValueAxis yValueAxis,
        XYItemRenderer xyItemRenderer, XYItemRendererState state, int totalRendererPasses, int seriesIndex) {
    for (int currentPassIndex = 0; currentPassIndex < totalRendererPasses; currentPassIndex++) {
        if (xyDataset.getItemCount(seriesIndex) == 0) {
            return;
        }//  w w w.j a v  a2 s.c o m

        int firstItemIndex = 0;
        int lastItemIndex = xyDataset.getItemCount(seriesIndex) - 1;

        if (state.getProcessVisibleItemsOnly()) {
            final double xLowerBound = xValueAxis.getLowerBound();
            final double xUpperBound = xValueAxis.getUpperBound();
            int[] itemBounds = RendererUtilities.findLiveItems(xyDataset, seriesIndex, xLowerBound,
                    xUpperBound);
            firstItemIndex = itemBounds[0] - 1;
            if (firstItemIndex < 0) {
                firstItemIndex = 0;
            }
            final int lastBoundaryIndex = itemBounds[1] + 1;
            if (lastBoundaryIndex < lastItemIndex) {
                lastItemIndex = lastBoundaryIndex;
            }
        }

        state.startSeriesPass(xyDataset, seriesIndex, firstItemIndex, lastItemIndex, currentPassIndex,
                totalRendererPasses);

        for (int item = firstItemIndex; item <= lastItemIndex; item++) {
            xyItemRenderer.drawItem(g2, state, dataArea, info, this, xValueAxis, yValueAxis, xyDataset,
                    seriesIndex, item, crosshairState, currentPassIndex);
        }

        state.endSeriesPass(xyDataset, seriesIndex, firstItemIndex, lastItemIndex, currentPassIndex,
                totalRendererPasses);
    }
}

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  www .  j av  a 2  s  .com
 * <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;
}