93 public void drawItem(Graphics2D g2, XYItemRendererState state, Rectangle2D dataArea, PlotRenderingInfo info,
94 XYPlot plot, ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset,
int series,
int item,
95 CrosshairState crosshairState,
int pass) {
97 if (!getItemVisible(series, item))
99 PlotOrientation orientation = plot.getOrientation();
100 java.awt.Paint seriesPaint = getItemPaint(series, item);
101 java.awt.Stroke seriesStroke = getItemStroke(series, item);
102 g2.setPaint(seriesPaint);
103 g2.setStroke(seriesStroke);
104 double x0 = dataset.getXValue(series, item);
105 double y0 = dataset.getYValue(series, item);
106 if (java.lang.Double.isNaN(y0))
108 org.jfree.chart.ui.RectangleEdge xAxisLocation = plot.getDomainAxisEdge();
109 org.jfree.chart.ui.RectangleEdge yAxisLocation = plot.getRangeAxisEdge();
110 double transX0 = domainAxis.valueToJava2D(x0, dataArea, xAxisLocation);
111 double transY0 = rangeAxis.valueToJava2D(y0, dataArea, yAxisLocation);
113 double x1 = 0, y1 = 0;
114 if (item < dataset.getItemCount(series) - 1) {
115 x1 = dataset.getXValue(series, item + 1);
116 y1 = dataset.getYValue(series, item + 1);
118 x1 = dataArea.getMaxX();
119 y1 = dataArea.getMaxY();
122 boolean useFillPaint = getUseFillPaint();
124 boolean drawOutlines = getDrawOutlines();
125 if (!java.lang.Double.isNaN(y0)) {
128 if (item < dataset.getItemCount(series) - 1) {
129 transX1 = domainAxis.valueToJava2D(x1, dataArea, xAxisLocation);
130 transY1 = rangeAxis.valueToJava2D(y1, dataArea, yAxisLocation);
135 Line2D line = state.workingLine;
136 if (orientation == PlotOrientation.HORIZONTAL) {
137 line.setLine(transY0, transX0, transY0, transX1);
139 }
else if (orientation == PlotOrientation.VERTICAL) {
140 line.setLine(transX0, transY0, transX1, transY0);
144 if (getItemShapeVisible(series, item)) {
145 Shape shape = getItemShape(series, item);
146 if (orientation == PlotOrientation.HORIZONTAL)
147 shape = ShapeUtilities.createTranslatedShape(shape, transY0, transX0);
148 else if (orientation == PlotOrientation.VERTICAL)
149 shape = ShapeUtilities.createTranslatedShape(shape, transX0, transY0);
150 if (shape.intersects(dataArea)) {
151 if (getItemShapeFilled(series, item)) {
153 g2.setPaint(getItemFillPaint(series, item));
155 g2.setPaint(getItemPaint(series, item));
159 if (getUseOutlinePaint())
160 g2.setPaint(getItemOutlinePaint(series, item));
162 g2.setPaint(getItemPaint(series, item));
163 g2.setStroke(getItemOutlineStroke(series, item));
168 if (isItemLabelVisible(series, item)) {
171 if (orientation == PlotOrientation.HORIZONTAL) {
175 drawItemLabel(g2, orientation, dataset, series, item, xx, yy, y0 < 0.0D);
177 int domainAxisIndex = plot.getDomainAxisIndex(domainAxis);
183 updateCrosshairValues(crosshairState, x0, y0, domainAxisIndex, transX0, transY0, orientation);
184 if (state.getInfo() !=
null) {
185 EntityCollection entities = state.getEntityCollection();
186 if (entities !=
null) {
187 int r = getDefaultEntityRadius();
188 java.awt.Shape shape = orientation != PlotOrientation.VERTICAL
189 ? ((java.awt.Shape) (
new java.awt.geom.Rectangle2D.Double(transY0 - (
double) r, transX0 - (
double) r,
191 : ((java.awt.Shape) (
new java.awt.geom.Rectangle2D.Double(transX0 - (
double) r, transY0 - (
double) r,
195 XYToolTipGenerator generator = getToolTipGenerator(series, item);
196 if (generator !=
null)
197 tip = generator.generateToolTip(dataset, series, item);
199 if (getURLGenerator() !=
null)
200 url = getURLGenerator().generateURL(dataset, series, item);
201 XYItemEntity entity =
new XYItemEntity(shape, dataset, series, item, tip, url);
202 entities.add(entity);