@Override
	public StringBuffer getOOXML( String catAxisId, String valAxisId, String serAxisId )
	{
		StringBuffer cooxml = new StringBuffer();

		// chart type: contains chart options and series data
		cooxml.append( "<c:ofPieChart>" );
		cooxml.append( "\r\n" );
		cooxml.append( "<c:ofPieType val=\"" + (ofPie.isPieOfPie() ? "pie" : "bar") + "\"/>" );
		cooxml.append( "<c:varyColors val=\"1\"/>" );

		// *** Series Data:	ser, cat, val for most chart types
		cooxml.append( getParentChart().getChartSeries().getOOXML( getChartType(), false, 0 ) );

		// chart data labels, if any
		//TODO: FINISH		    	
		//cooxml.append(getDataLabelsOOXML(cf));
		// gapWidth
		if( ofPie.getpcGap() != 150 )
		{
			cooxml.append( "<c:gapWidth val=\"" + ofPie.getpcGap() + "\"/>" );
		}
		// splitType
		if( ofPie.getSplitType() != -1 )
		{
			cooxml.append( "<c:splitType val=\"" + ofPie.getSplitTypeOOXML() + "\"/>" );
		}
		// splitPos
		if( ofPie.getSplitPos() != 0 )
		{
			cooxml.append( "<c:splitPos val=\"" + ofPie.getSplitPos() + "\"/>" );
		}
		// custSplit TODO: FINISH
		// secondPieSize
		if( ofPie.getSecondPieSize() != 75 )
		{
			cooxml.append( "<c:secondPieSize val=\"" + ofPie.getSecondPieSize() + "\"/>" );
		}
		// serLines 
		ChartLine cl = cf.getChartLinesRec();
		if( cl != null )
		{
			cooxml.append( cl.getOOXML() );
		}
		cooxml.append( "</c:ofPieChart>" );
		cooxml.append( "\r\n" );

		return cooxml;
	}