chart2/qa/extras/chart2export.cxx | 1 include/oox/export/chartexport.hxx | 4 + oox/source/export/chartexport.cxx | 76 +++++++++++++++++++++++-------------- 3 files changed, 54 insertions(+), 27 deletions(-)
New commits: commit b34b648fc3262c5d9aa295f621e8fe9c97d4c6b2 Author: Markus Mohrhard <[email protected]> Date: Tue May 12 03:13:41 2015 +0200 uno::Sequence provides now begin and end Change-Id: I7af0db5381737c7d28a491e4aca673d9cc4b1e19 diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 4fcf803..8a9c30f 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -161,7 +161,7 @@ template< typename T > void lcl_SequenceToVectorAppend( const Sequence< T > & rSource, ::std::vector< T > & rDestination ) { rDestination.reserve( rDestination.size() + rSource.getLength()); - ::std::copy( rSource.getConstArray(), rSource.getConstArray() + rSource.getLength(), + ::std::copy( rSource.begin(), rSource.end(), ::std::back_inserter( rDestination )); } @@ -377,7 +377,7 @@ void lcl_fillCategoriesIntoStringVector( { rOutCategories.clear(); Sequence< OUString > aTextData( xTextualDataSequence->getTextualData()); - ::std::copy( aTextData.getConstArray(), aTextData.getConstArray() + aTextData.getLength(), + ::std::copy( aTextData.begin(), aTextData.end(), ::std::back_inserter( rOutCategories )); } else @@ -399,7 +399,7 @@ void lcl_fillCategoriesIntoStringVector( if( xNumSeq.is()) { Sequence< double > aValues( xNumSeq->getNumericalData()); - ::std::copy( aValues.getConstArray(), aValues.getConstArray() + aValues.getLength(), + ::std::copy( aValues.begin(), aValues.end(), ::std::back_inserter( aResult )); } else if( xSeq.is()) commit ceac38106de4f2657e854d5e1d657d6df9321032 Author: Markus Mohrhard <[email protected]> Date: Tue May 12 02:54:19 2015 +0200 add test to make sure only one x axis is non-deleted in exported doc Change-Id: I8172015668cc43b4383276f2cd20cce4b0704277 diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index 7e4491c..d90cb64 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -1457,6 +1457,7 @@ void Chart2ExportTest::testMultipleAxisXLSX() assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart[1]/c:ser", 1); assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart[2]/c:ser", 1); assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx", 4); + assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:delete[@val='1']", 1); } CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest); commit 1573315ec978b7f53a8babeb7ad44e104896209e Author: Markus Mohrhard <[email protected]> Date: Tue May 12 02:33:08 2015 +0200 export each axis only once non-deleted, related tdf#84347 Change-Id: Ia0e23faf43fd266b8314f807b77423e9a3e15797 diff --git a/include/oox/export/chartexport.hxx b/include/oox/export/chartexport.hxx index 186ea75..c043fd7 100644 --- a/include/oox/export/chartexport.hxx +++ b/include/oox/export/chartexport.hxx @@ -30,6 +30,8 @@ #include <com/sun/star/chart2/RelativePosition.hpp> #include <com/sun/star/chart2/RelativeSize.hpp> +#include <set> + namespace com { namespace sun { namespace star { namespace chart { class XDiagram; @@ -103,6 +105,8 @@ private: bool mbStacked; bool mbPercent; + std::set<sal_Int32> maExportedAxis; + private: sal_Int32 getChartType(); diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 9c56a7e..4fcf803 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -2611,6 +2611,7 @@ void ChartExport::_exportAxis( pFS->startElement( FSNS( XML_c, XML_scaling ), FSEND ); + // logBase, min, max if(GetProperty( xAxisProp, "Logarithmic" ) ) { @@ -2671,8 +2672,15 @@ void ChartExport::_exportAxis( OUString ("Visible")) >>= bVisible; } + // only export each axis only once non-deleted + bool bDeleted = std::find(maExportedAxis.begin(), + maExportedAxis.end(), rAxisIdPair.nAxisType) != maExportedAxis.end(); + + if (!bDeleted) + maExportedAxis.insert(rAxisIdPair.nAxisType); + pFS->singleElement( FSNS( XML_c, XML_delete ), - XML_val, bVisible ? "0" : "1", + XML_val, !bDeleted && bVisible ? "0" : "1", FSEND ); // FIXME: axPos, need to check the property "ReverseDirection" commit aec34850ed7d27938bee2a3a7b8761e9eb74acdc Author: Markus Mohrhard <[email protected]> Date: Tue May 12 02:14:54 2015 +0200 remove and replace old OSL_TRACE messages Change-Id: Id6de1425c03be8552d1dd2597001bf0632292e90 diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 467c7ca..9c56a7e 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -494,9 +494,11 @@ OUString ChartExport::parseFormula( const OUString& rRange ) { } } + + SAL_WARN_IF(!xParser.is(), "oox", "creating formula parser failed"); + if( xParser.is() ) { - OSL_TRACE("ChartExport::parseFormula, parser is valid"); Reference< XPropertySet > xParserProps( xParser, uno::UNO_QUERY ); if( xParserProps.is() ) { @@ -511,7 +513,6 @@ OUString ChartExport::parseFormula( const OUString& rRange ) } else { - OSL_TRACE("ChartExport::parseFormula, parser is invalid"); //FIXME: currently just using simple converter, e.g $Sheet1.$A$1:$C$1 -> Sheet1!$A$1:$C$1 OUString aRange( rRange ); if( aRange.startsWith("$") ) @@ -520,13 +521,11 @@ OUString ChartExport::parseFormula( const OUString& rRange ) aResult = aRange; } - OSL_TRACE("ChartExport::parseFormula, the originla formula is %s, the new formula is %s ", OUStringToOString( rRange, RTL_TEXTENCODING_UTF8 ).getStr(), OUStringToOString( aResult, RTL_TEXTENCODING_UTF8 ).getStr()); return aResult; } ChartExport& ChartExport::WriteChartObj( const Reference< XShape >& xShape, sal_Int32 nChartCount ) { - OSL_TRACE("ChartExport::WriteChartObj -- writer chart object"); FSHelperPtr pFS = GetFS(); pFS->startElementNS( mnXmlNamespace, XML_graphicFrame, FSEND ); @@ -1299,7 +1298,7 @@ void ChartExport::exportPlotArea( ) } default: { - OSL_TRACE("ChartExport::exportPlotArea -- not support chart type"); + SAL_WARN("oox", "ChartExport::exportPlotArea -- not support chart type"); break; } } @@ -3162,7 +3161,6 @@ void ChartExport::exportDataPoints( if( xPropSet.is() ) { - OSL_TRACE("ChartExport::exportDataPoints -- writer data points "); FSHelperPtr pFS = GetFS(); pFS->startElement( FSNS( XML_c, XML_dPt ), FSEND ); commit 69c7625f6da8c6a2f97d7a26b6b7cba83238d978 Author: Markus Mohrhard <[email protected]> Date: Tue May 12 02:04:44 2015 +0200 use r prefix for reference Change-Id: Iad76b7263526da4e50ef3c0b6933a8833f567790 diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index a5257b6..467c7ca 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -1973,7 +1973,7 @@ void ChartExport::exportSurfaceChart( Reference< chart2::XChartType > xChartType pFS->endElement( FSNS( XML_c, nTypeId ) ); } -void ChartExport::exportAllSeries(Reference<chart2::XChartType> xChartType, sal_Int32& nAttachedAxis) +void ChartExport::exportAllSeries(Reference<chart2::XChartType> xChartType, sal_Int32& rAttachedAxis) { Reference< chart2::XDataSeriesContainer > xDSCnt( xChartType, uno::UNO_QUERY ); if( ! xDSCnt.is()) @@ -1981,11 +1981,11 @@ void ChartExport::exportAllSeries(Reference<chart2::XChartType> xChartType, sal_ // export dataseries for current chart-type Sequence< Reference< chart2::XDataSeries > > aSeriesSeq( xDSCnt->getDataSeries()); - exportSeries(xChartType, aSeriesSeq, nAttachedAxis); + exportSeries(xChartType, aSeriesSeq, rAttachedAxis); } void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, - Sequence<Reference<chart2::XDataSeries> >& rSeriesSeq, sal_Int32& nAttachedAxis ) + Sequence<Reference<chart2::XDataSeries> >& rSeriesSeq, sal_Int32& rAttachedAxis ) { OUString aLabelRole = xChartType->getRoleOfSequenceForSeriesLabel(); OUString aChartType( xChartType->getChartType()); @@ -2053,7 +2053,7 @@ void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, { sal_Int32 nLocalAttachedAxis; mAny >>= nLocalAttachedAxis; - nAttachedAxis = translateFromChart2AxisIndexToOox(nLocalAttachedAxis); + rAttachedAxis = translateFromChart2AxisIndexToOox(nLocalAttachedAxis); } // export shape properties @@ -2186,12 +2186,12 @@ void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, void ChartExport::exportCandleStickSeries( const Sequence< Reference< chart2::XDataSeries > > & aSeriesSeq, bool /*bJapaneseCandleSticks*/, - sal_Int32& nAttachedAxis ) + sal_Int32& rAttachedAxis ) { for( sal_Int32 nSeriesIdx=0; nSeriesIdx<aSeriesSeq.getLength(); ++nSeriesIdx ) { Reference< chart2::XDataSeries > xSeries( aSeriesSeq[nSeriesIdx] ); - nAttachedAxis = lcl_isSeriesAttachedToFirstAxis( xSeries ) ? AXIS_PRIMARY_Y : AXIS_SECONDARY_Y; + rAttachedAxis = lcl_isSeriesAttachedToFirstAxis( xSeries ) ? AXIS_PRIMARY_Y : AXIS_SECONDARY_Y; Reference< chart2::data::XDataSource > xSource( xSeries, uno::UNO_QUERY ); if( xSource.is()) commit 9ec0633e3179cbe3c50260d0ba46826264ef5f68 Author: Markus Mohrhard <[email protected]> Date: Tue May 12 02:01:27 2015 +0200 use chart2 API for attached axis export Change-Id: Ide1a30307711e3857d83b691c95d984439359005 diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 6af0092..a5257b6 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -117,6 +117,22 @@ namespace cssc = css::chart; namespace oox { namespace drawingml { +namespace { + +sal_Int32 translateFromChart2AxisIndexToOox(sal_Int32 nIndex) +{ + assert(nIndex == 0 || nIndex == 1); + if (nIndex == 0) + return AXIS_PRIMARY_Y; + else if (nIndex == 1) + return AXIS_SECONDARY_Y; + + // good default value for release builds + return AXIS_PRIMARY_Y; +} + +} + class lcl_MatchesRole : public ::std::unary_function< Reference< chart2::data::XLabeledDataSequence >, bool > { public: @@ -2032,19 +2048,19 @@ void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, if( xLabelSeq.is() ) exportSeriesText( xLabelSeq ); + Reference<XPropertySet> xPropSet(xDataSeries, UNO_QUERY_THROW); + if( GetProperty( xPropSet, "AttachedAxisIndex") ) + { + sal_Int32 nLocalAttachedAxis; + mAny >>= nLocalAttachedAxis; + nAttachedAxis = translateFromChart2AxisIndexToOox(nLocalAttachedAxis); + } + // export shape properties Reference< XPropertySet > xOldPropSet = SchXMLSeriesHelper::createOldAPISeriesPropertySet( rSeriesSeq[nSeriesIdx], getModel() ); if( xOldPropSet.is() ) { - if( GetProperty( xOldPropSet, "Axis") ) - { - mAny >>= nAttachedAxis; - if( nAttachedAxis == css::chart::ChartAxisAssign::SECONDARY_Y ) - nAttachedAxis = AXIS_SECONDARY_Y; - else - nAttachedAxis = AXIS_PRIMARY_Y; - } exportShapeProps( xOldPropSet ); } commit cafbd676785b5238f584982654c279f29d2393e0 Author: Markus Mohrhard <[email protected]> Date: Tue May 12 01:48:31 2015 +0200 rename variable Change-Id: I6606ca56c28569b6b2ceb1607c8dc570ce50bba7 diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index c7d5d64..6af0092 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -2033,11 +2033,11 @@ void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, exportSeriesText( xLabelSeq ); // export shape properties - Reference< XPropertySet > xPropSet = SchXMLSeriesHelper::createOldAPISeriesPropertySet( + Reference< XPropertySet > xOldPropSet = SchXMLSeriesHelper::createOldAPISeriesPropertySet( rSeriesSeq[nSeriesIdx], getModel() ); - if( xPropSet.is() ) + if( xOldPropSet.is() ) { - if( GetProperty( xPropSet, "Axis") ) + if( GetProperty( xOldPropSet, "Axis") ) { mAny >>= nAttachedAxis; if( nAttachedAxis == css::chart::ChartAxisAssign::SECONDARY_Y ) @@ -2045,7 +2045,7 @@ void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, else nAttachedAxis = AXIS_PRIMARY_Y; } - exportShapeProps( xPropSet ); + exportShapeProps( xOldPropSet ); } switch( eChartType ) @@ -2067,7 +2067,7 @@ void ChartExport::exportSeries( Reference<chart2::XChartType> xChartType, case chart::TYPEID_PIE: case chart::TYPEID_DOUGHNUT: { - if( xPropSet.is() && GetProperty( xPropSet, "SegmentOffset") ) + if( xOldPropSet.is() && GetProperty( xOldPropSet, "SegmentOffset") ) { sal_Int32 nOffset = 0; mAny >>= nOffset; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
