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