1 34 35 package org.krysalis.jcharts.axisChart; 36 37 38 import org.krysalis.jcharts.chartData.interfaces.IAxisChartDataSet; 39 import org.krysalis.jcharts.chartData.interfaces.IDataSeries; 40 import org.krysalis.jcharts.imageMap.CircleMapArea; 41 import org.krysalis.jcharts.properties.PointChartProperties; 42 import org.krysalis.jcharts.properties.DataAxisProperties; 43 44 import java.awt.*; 45 import java.awt.geom.AffineTransform ; 46 import java.awt.geom.Rectangle2D ; 47 48 49 54 abstract class PointChart 55 { 56 57 63 static void render( AxisChart axisChart, IAxisChartDataSet iAxisChartDataSet ) 64 { 65 Graphics2D g2d=axisChart.getGraphics2D(); 66 PointChartProperties pointChartProperties=(PointChartProperties) iAxisChartDataSet.getChartTypeProperties(); 67 68 DataAxisProperties dataAxisProperties= (DataAxisProperties) axisChart.getAxisProperties().getYAxisProperties(); 70 IDataSeries iDataSeries= (IDataSeries) axisChart.getIAxisDataSeries(); 71 72 73 float xPosition=axisChart.getXAxis().getTickStart(); 74 float yPosition; 75 76 double[] cornerXOffset=new double[ iAxisChartDataSet.getNumberOfDataSets() ]; 78 double[] cornerYOffset=new double[ iAxisChartDataSet.getNumberOfDataSets() ]; 79 80 81 AffineTransform affineTransform=g2d.getTransform(); 83 84 Rectangle2D rectangle; 85 86 for( int i=0; i < iAxisChartDataSet.getNumberOfDataSets(); i++ ) 89 { 90 rectangle=pointChartProperties.getShape( i ).getBounds2D(); 91 cornerXOffset[ i ]=rectangle.getWidth() / 2; 92 cornerYOffset[ i ]=rectangle.getHeight() / 2; 93 } 94 95 g2d.setStroke( PointChartProperties.DEFAULT_POINT_BORDER_STROKE ); 96 97 for( int i=0; i < iAxisChartDataSet.getNumberOfDataItems(); i++ ) 100 { 101 for( int dataSetIndex=0; dataSetIndex < iAxisChartDataSet.getNumberOfDataSets(); dataSetIndex++ ) 104 { 105 if( Double.isNaN( iAxisChartDataSet.getValue( dataSetIndex, i ) ) ) 107 { 108 continue; 109 } 110 111 yPosition= axisChart.getYAxis().computeAxisCoordinate( axisChart.getYAxis().getOrigin(), 112 iAxisChartDataSet.getValue( dataSetIndex, i ), 113 axisChart.getYAxis().getScaleCalculator().getMinValue() ); 114 115 if( axisChart.getGenerateImageMapFlag() ) 117 { 118 String label; 119 if( axisChart.getXAxis().getAxisLabelsGroup() != null ) 120 { 121 label = axisChart.getXAxis().getAxisLabelsGroup().getTextTag( i ).getText(); 122 } 123 else 124 { 125 label = null; 126 } 127 128 axisChart.getImageMap().addImageMapArea( new CircleMapArea( xPosition, 129 yPosition, 130 iAxisChartDataSet.getValue( dataSetIndex, i ), 131 label, 132 iAxisChartDataSet.getLegendLabel( dataSetIndex ) ) ); 133 } 134 135 g2d.translate( xPosition - cornerXOffset[ dataSetIndex ], yPosition - cornerYOffset[ dataSetIndex ] ); 137 138 g2d.setPaint( iAxisChartDataSet.getPaint( dataSetIndex ) ); 139 140 if( pointChartProperties.getFillPointsFlag( dataSetIndex ) ) 142 { 143 g2d.fill( pointChartProperties.getShape( dataSetIndex ) ); 145 146 if( pointChartProperties.getPointOutlinePaints( dataSetIndex ) != null ) 148 { 149 g2d.setPaint( pointChartProperties.getPointOutlinePaints( dataSetIndex ) ); 150 g2d.draw( pointChartProperties.getShape( dataSetIndex ) ); 151 } 152 } 153 else 154 { 155 g2d.draw( pointChartProperties.getShape( dataSetIndex ) ); 157 } 158 159 g2d.setTransform( affineTransform ); 160 } 161 162 xPosition+=axisChart.getXAxis().getScalePixelWidth(); 164 } 165 } 166 } 167 | Popular Tags |