krysalis-jcharts/src/java/org/krysalis/jcharts/axisChart StackedBarChart.java,1.1,1.2

Chris McKay <[email protected]> Thu, 01 Jul 2004 01:27:43 +0000
Newsgroups gmane.comp.krysalis.jcharts.cvs
Message-ID <[email protected]>
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;



-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com