From: Chris M. <ki...@us...> - 2004-07-01 01:27:49
|
Update of /cvsroot/jcharts/krysalis-jcharts/src/java/org/krysalis/jcharts/axisChart In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6229/src/java/org/krysalis/jcharts/axisChart Modified Files: StackedBarChart.java Log Message: Fixes for stacked bar values to go negative and addition of render events Index: StackedBarChart.java =================================================================== RCS file: /cvsroot/jcharts/krysalis-jcharts/src/java/org/krysalis/jcharts/axisChart/StackedBarChart.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** StackedBarChart.java 17 May 2003 16:56:57 -0000 1.1 --- StackedBarChart.java 1 Jul 2004 01:27:41 -0000 1.2 *************** *** 42,45 **** --- 42,46 ---- import org.krysalis.jcharts.properties.DataAxisProperties; import org.krysalis.jcharts.properties.StackedBarChartProperties; + import org.krysalis.jcharts.axisChart.customRenderers.axisValue.AxisValueRenderEvent; import java.awt.*; *************** *** 213,236 **** float startingY ) { //IDataSeries iDataSeries= (IDataSeries) axisChart.getIAxisDataSeries(); //LOOP //---initial postion of each line. for( int i = 0; i < iAxisChartDataSet.getNumberOfDataItems(); i++ ) { //---draw each bar in stack for( int j = 0; j < iAxisChartDataSet.getNumberOfDataSets(); j++ ) { //---if segment has a zero value, draw nothing. if( iAxisChartDataSet.getValue( j, i ) == 0 ) { continue; } rectangle.height = BarChart.computeScaleHeightOfValue( iAxisChartDataSet.getValue( j, i ), axisChart.getYAxis().getOneUnitPixelSize() ); ! rectangle.y -= rectangle.height; ! g2d.setPaint( iAxisChartDataSet.getPaint( j ) ); g2d.fill( rectangle ); --- 214,280 ---- float startingY ) { + float yPos, yNeg; //IDataSeries iDataSeries= (IDataSeries) axisChart.getIAxisDataSeries(); + //---setup the total area rectangle + Rectangle2D.Float totalItemArea = new Rectangle2D.Float(); + totalItemArea.x = axisChart.getXAxis().getOrigin() + 1; + totalItemArea.y = axisChart.getYAxis().getOrigin() - axisChart.getYAxis().getPixelLength() + 1; + totalItemArea.width = axisChart.getXAxis().getScalePixelWidth() - 1; + totalItemArea.height = axisChart.getYAxis().getPixelLength() - 1; + + //---reuse the same Object for pre and post render events. + AxisValueRenderEvent axisValueRenderEvent = new AxisValueRenderEvent( axisChart, + iAxisChartDataSet, + g2d, + totalItemArea, + axisChart.getYAxis().getZeroLineCoordinate() ); + //LOOP //---initial postion of each line. for( int i = 0; i < iAxisChartDataSet.getNumberOfDataItems(); i++ ) { + //---reset the paint as it might have changed for the outline drawing + g2d.setPaint( iAxisChartDataSet.getPaint( 0 ) ); + + //---set values for the preRender event + axisValueRenderEvent.setValueX( (float) rectangle.getCenterX() ); + axisValueRenderEvent.setValueY( axisChart.getYAxis().getZeroLineCoordinate() ); + axisValueRenderEvent.setValueIndex( i ); + //---draw each bar in stack + yNeg = yPos = startingY; + for( int j = 0; j < iAxisChartDataSet.getNumberOfDataSets(); j++ ) { + axisValueRenderEvent.setDataSetIndex( j ); + //---if segment has a zero value, draw nothing. if( iAxisChartDataSet.getValue( j, i ) == 0 ) { + axisValueRenderEvent.setValueY( yNeg ); + stackedBarChartProperties.firePreRender( axisValueRenderEvent ); continue; } rectangle.height = BarChart.computeScaleHeightOfValue( iAxisChartDataSet.getValue( j, i ), axisChart.getYAxis().getOneUnitPixelSize() ); ! // negative values are stacked below the zero coord ! if( iAxisChartDataSet.getValue( j, i ) < 0 ) ! { ! rectangle.y = yNeg; //startingY; ! yNeg += rectangle.height; ! axisValueRenderEvent.setValueY( rectangle.y + rectangle.height ); ! } ! else ! { ! yPos -= rectangle.height; ! rectangle.y = yPos; ! axisValueRenderEvent.setValueY( rectangle.y ); ! } g2d.setPaint( iAxisChartDataSet.getPaint( j ) ); + //---we want to do this regardless if we render an item + stackedBarChartProperties.firePreRender( axisValueRenderEvent ); + g2d.fill( rectangle ); *************** *** 257,260 **** --- 301,307 ---- } + //---notify everyone we just rendered + stackedBarChartProperties.firePostRender( axisValueRenderEvent ); + rectangle.x += axisChart.getXAxis().getScalePixelWidth(); rectangle.y = startingY; |