/** * Draws the arc to represent an interval. * * @param g2 the graphics device. * @param meterArea the drawing area. * @param interval the interval. */ protected void drawArcForInterval(Graphics2D g2, Rectangle2D meterArea, MeterInterval interval) { double minValue = interval.getRange().getLowerBound(); double maxValue = interval.getRange().getUpperBound(); Paint outlinePaint = interval.getOutlinePaint(); Stroke outlineStroke = interval.getOutlineStroke(); Paint backgroundPaint = interval.getBackgroundPaint(); if (backgroundPaint != null) { fillArc(g2, meterArea, minValue, maxValue, backgroundPaint, false); } if (outlinePaint != null) { if (outlineStroke != null) { drawArc(g2, meterArea, minValue, maxValue, outlinePaint, outlineStroke); } drawTick(g2, meterArea, minValue, true); drawTick(g2, meterArea, maxValue, true); } }
/** * Returns an item for each interval. * * @return A collection of legend items. */ public LegendItemCollection getLegendItems() { LegendItemCollection result = new LegendItemCollection(); Iterator iterator = this.intervals.iterator(); while (iterator.hasNext()) { MeterInterval mi = (MeterInterval) iterator.next(); Paint color = mi.getBackgroundPaint(); if (color == null) { color = mi.getOutlinePaint(); } LegendItem item = new LegendItem(mi.getLabel(), mi.getLabel(), null, null, new Rectangle2D.Double(-4.0, -4.0, 8.0, 8.0), color); item.setDataset(getDataset()); result.add(item); } return result; }
/** * Converts a JasperReports meter interval to one that JFreeChart understands. * * @param interval the JasperReports definition of an interval * @param evaluation current evaluation time * @return the JFreeChart version of the same interval * @throws JRException thrown when the interval contains an invalid range */ protected MeterInterval convertInterval(JRMeterInterval interval, byte evaluation) throws JRException { String label = interval.getLabel(); if (label == null) label = ""; Range range = convertRange(interval.getDataRange(), evaluation); Color color = interval.getBackgroundColor(); float[] components = color.getRGBColorComponents(null); float alpha = interval.getAlphaDouble() == null ? (float)JRMeterInterval.DEFAULT_TRANSPARENCY : interval.getAlphaDouble().floatValue(); Color alphaColor = new Color(components[0], components[1], components[2], alpha); return new MeterInterval(label, range, alphaColor, null, alphaColor); }
Range range = interval.getRange(); double min = range.getLowerBound(); double max = range.getUpperBound();
drawArcForInterval(g2, meterArea, new MeterInterval("", this.range, this.dialOutlinePaint, new BasicStroke(1.0f), null));
/** * Draws the arc to represent an interval. * * @param g2 the graphics device. * @param meterArea the drawing area. * @param interval the interval. */ protected void drawArcForInterval(Graphics2D g2, Rectangle2D meterArea, MeterInterval interval) { double minValue = interval.getRange().getLowerBound(); double maxValue = interval.getRange().getUpperBound(); Paint outlinePaint = interval.getOutlinePaint(); Stroke outlineStroke = interval.getOutlineStroke(); Paint backgroundPaint = interval.getBackgroundPaint(); if (backgroundPaint != null) { fillArc(g2, meterArea, minValue, maxValue, backgroundPaint, false); } if (outlinePaint != null) { if (outlineStroke != null) { drawArc(g2, meterArea, minValue, maxValue, outlinePaint, outlineStroke); } drawTick(g2, meterArea, minValue, true); drawTick(g2, meterArea, maxValue, true); } }
drawArcForInterval(g2, meterArea, new MeterInterval("", this.range, this.dialOutlinePaint, new BasicStroke(1.0f), null));
/** * Returns an item for each interval. * * @return A collection of legend items. */ @Override public LegendItemCollection getLegendItems() { LegendItemCollection result = new LegendItemCollection(); Iterator iterator = this.intervals.iterator(); while (iterator.hasNext()) { MeterInterval mi = (MeterInterval) iterator.next(); Paint color = mi.getBackgroundPaint(); if (color == null) { color = mi.getOutlinePaint(); } LegendItem item = new LegendItem(mi.getLabel(), mi.getLabel(), null, null, new Rectangle2D.Double(-4.0, -4.0, 8.0, 8.0), color); item.setDataset(getDataset()); result.add(item); } return result; }
/** * Converts a JasperReports meter interval to one that JFreeChart understands. * * @param interval the JasperReports definition of an interval * @return the JFreeChart version of the same interval * @throws JRException thrown when the interval contains an invalid range */ protected MeterInterval convertInterval(JRMeterInterval interval) throws JRException { String label = interval.getLabel(); if (label == null) label = ""; Range range = convertRange(interval.getDataRange()); Color color = interval.getBackgroundColor() == null ? getChart().getBackcolor() : interval.getBackgroundColor();//FIXMETHEME check this null protection float[] components = color.getRGBColorComponents(null); float alpha = interval.getAlphaDouble() == null ? (float)JRMeterInterval.DEFAULT_TRANSPARENCY : interval.getAlphaDouble().floatValue(); Color alphaColor = new Color(components[0], components[1], components[2], alpha); return new MeterInterval(label, range, alphaColor, null, alphaColor); }
MeterInterval interval = new MeterInterval( label, range, outlinePaint, outlineStroke, backgroundPaint );
private JFreeChart getGaugeChart( BaseChart chart, ValueDataset dataSet ) { MeterPlot meterPlot = new MeterPlot( dataSet ); meterPlot.setUnits( "" ); meterPlot.setRange( new Range( 0.0d, 100d ) ); for ( int i = 0; i < 10; i++ ) { double start = i * 10d; double end = start + 10d; String label = String.valueOf( start ); meterPlot.addInterval( new MeterInterval( label, new Range( start, end ), COLOR_LIGHT_GRAY, null, COLOR_LIGHT_GRAY ) ); } meterPlot.setMeterAngle(180); meterPlot.setDialBackgroundPaint( COLOR_LIGHT_GRAY ); meterPlot.setDialShape( DialShape.CHORD ); meterPlot.setNeedlePaint( COLORS[0] ); meterPlot.setTickLabelsVisible( true ); meterPlot.setTickLabelFont( LABEL_FONT ); meterPlot.setTickLabelPaint( Color.BLACK ); meterPlot.setTickPaint( COLOR_LIGHTER_GRAY ); meterPlot.setValueFont( TITLE_FONT ); meterPlot.setValuePaint( Color.BLACK ); JFreeChart meterChart = new JFreeChart( chart.getName(), meterPlot ); setBasicConfig( meterChart, chart ); meterChart.removeLegend(); return meterChart; }