1 34 35 package org.krysalis.jcharts.axisChart; 36 37 38 import org.krysalis.jcharts.chartData.interfaces.IAxisChartDataSet; 39 import org.krysalis.jcharts.imageMap.ImageMapNotSupportedException; 40 41 import java.awt.*; 42 import java.awt.geom.Area ; 43 import java.awt.geom.GeneralPath ; 44 45 46 51 abstract class AreaChart 52 { 53 54 60 static void render( AxisChart axisChart, IAxisChartDataSet iAxisChartDataSet ) 61 { 62 if( axisChart.getImageMap() != null ) 64 { 65 throw new ImageMapNotSupportedException( "HTML client-side image maps are not supported on Area Charts." ); 67 } 68 69 70 float xPosition=axisChart.getXAxis().getTickStart(); 72 73 GeneralPath generalPaths[]=new GeneralPath [ iAxisChartDataSet.getNumberOfDataSets() ]; 74 75 76 79 80 for( int i=0; i < generalPaths.length; i++ ) 84 { 85 generalPaths[ i ]=new GeneralPath (); 86 generalPaths[ i ].moveTo( xPosition, axisChart.getYAxis().getZeroLineCoordinate() ); 87 generalPaths[ i ].lineTo( xPosition, axisChart.getYAxis().computeAxisCoordinate( axisChart.getYAxis().getOrigin(), 88 iAxisChartDataSet.getValue( i, 0 ), 89 axisChart.getYAxis().getScaleCalculator().getMinValue() ) ); 90 } 91 92 for( int j=1; j < iAxisChartDataSet.getNumberOfDataItems(); j++ ) 94 { 95 xPosition+=axisChart.getXAxis().getScalePixelWidth(); 96 97 for( int i=0; i < generalPaths.length; i++ ) 99 { 100 generalPaths[ i ].lineTo( xPosition, axisChart.getYAxis().computeAxisCoordinate( axisChart.getYAxis().getOrigin(), 101 iAxisChartDataSet.getValue( i, j ), 102 axisChart.getYAxis().getScaleCalculator().getMinValue() ) ); 103 } 104 } 105 106 107 Area [] areas=new Area [ generalPaths.length ]; 108 109 110 for( int i=0; i < generalPaths.length; i++ ) 113 { 114 generalPaths[ i ].lineTo( xPosition, axisChart.getYAxis().getZeroLineCoordinate() ); 115 generalPaths[ i ].closePath(); 116 117 areas[ i ]=new Area ( generalPaths[ i ] ); 118 } 119 120 Graphics2D g2d=axisChart.getGraphics2D(); 121 122 for( int i=0; i < areas.length; i++ ) 125 { 126 g2d.setPaint( iAxisChartDataSet.getPaint( i ) ); 127 g2d.fill( areas[ i ] ); 128 } 129 } 130 131 } 132 | Popular Tags |