chart2/qa/extras/chart2export.cxx | 30 ++ chart2/qa/extras/chart2import.cxx | 2 chart2/qa/extras/charttest.hxx | 6 chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx |binary include/oox/export/chartexport.hxx | 113 ++++---- oox/source/export/chartexport.cxx | 203 +++++++++++----- 6 files changed, 235 insertions(+), 119 deletions(-)
New commits: commit 967b8c33225ae2aab5733639f0713a84cb1971da Author: Markus Mohrhard <[email protected]> Date: Sat Apr 25 04:13:05 2015 +0200 add test for plotArea manualLayout, tdf#90851 Change-Id: I18ac4e702a7ef4a2d9dbb4ba7d0ece1e69c7e379 diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index 00bec71..2535dcb 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -91,6 +91,7 @@ public: void testBubble3DXLSX(); void testNoMarkerXLSX(); void testTitleManualLayoutXLSX(); + void testPlotAreaManualLayoutXLSX(); CPPUNIT_TEST_SUITE(Chart2ExportTest); CPPUNIT_TEST(testErrorBarXLSX); @@ -146,6 +147,7 @@ public: CPPUNIT_TEST(testBubble3DXLSX); CPPUNIT_TEST(testNoMarkerXLSX); CPPUNIT_TEST(testTitleManualLayoutXLSX); + CPPUNIT_TEST(testPlotAreaManualLayoutXLSX); CPPUNIT_TEST_SUITE_END(); protected: @@ -1338,6 +1340,34 @@ void Chart2ExportTest::testTitleManualLayoutXLSX() assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:bodyPr", "rot", "1200000"); } +void Chart2ExportTest::testPlotAreaManualLayoutXLSX() +{ + load("/chart2/qa/extras/data/xlsx/", "plot_area_manual_layout.xlsx"); + xmlDocPtr pXmlDoc = parseExport("xl/charts/chart", "Calc Office Open XML"); + CPPUNIT_ASSERT(pXmlDoc); + + assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:xMode", "val", "edge"); + assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:yMode", "val", "edge"); + + OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:x", "val"); + double nX = aXVal.toDouble(); + CPPUNIT_ASSERT(nX > 0 && nX < 1); + + OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:y", "val"); + double nY = aYVal.toDouble(); + CPPUNIT_ASSERT(nY > 0 && nY < 1); + CPPUNIT_ASSERT(nX != nY); + + OUString aWVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:w", "val"); + double nW = aWVal.toDouble(); + CPPUNIT_ASSERT(nW > 0 && nW < 1); + + OUString aHVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:h", "val"); + double nH = aHVal.toDouble(); + CPPUNIT_ASSERT(nH > 0 && nH < 1); + CPPUNIT_ASSERT(nH != nW); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx new file mode 100644 index 0000000..f0bc588 Binary files /dev/null and b/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx differ commit 8ccb2c0ed7e15329cf44fa82feb0435d42c891f9 Author: Markus Mohrhard <[email protected]> Date: Sat Apr 25 03:51:01 2015 +0200 and in the chart tests Change-Id: I1ed69bb1c09982e8d0964a700da9b22b66af82f8 diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx index 71588c1..9150b30 100644 --- a/chart2/qa/extras/chart2import.cxx +++ b/chart2/qa/extras/chart2import.cxx @@ -637,7 +637,7 @@ void Chart2ImportTest::testTransparentBackground(OUString const & filename) Reference< beans::XPropertySet > xPropSet( xChart2Doc->getArea(), uno::UNO_QUERY); CPPUNIT_ASSERT_MESSAGE("failed to get Area", xPropSet.is()); - com::sun::star::drawing::FillStyle aStyle; + css::drawing::FillStyle aStyle; xPropSet -> getPropertyValue("FillStyle") >>= aStyle; CPPUNIT_ASSERT_MESSAGE("Background needs to be with solid fill style", aStyle == 1); diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx index e640118..6e7be74 100644 --- a/chart2/qa/extras/charttest.hxx +++ b/chart2/qa/extras/charttest.hxx @@ -64,8 +64,8 @@ #include <boost/shared_ptr.hpp> #include <boost/make_shared.hpp> -using namespace com::sun::star; -using namespace com::sun::star::uno; +using namespace css; +using namespace css::uno; class ChartTest : public test::BootstrapFixture, public unotest::MacrosTest { @@ -152,7 +152,7 @@ void ChartTest::setUp() { test::BootstrapFixture::setUp(); - mxDesktop.set( com::sun::star::frame::Desktop::create( comphelper::getComponentContext(getMultiServiceFactory()) ) ); + mxDesktop.set( css::frame::Desktop::create( comphelper::getComponentContext(getMultiServiceFactory()) ) ); } void ChartTest::tearDown() commit 8536af3439a94787e8f785da30776b83942fb82e Author: Markus Mohrhard <[email protected]> Date: Sat Apr 25 03:49:31 2015 +0200 do the same in the source file Change-Id: I087d5da6280d889e1e155559edf9c70c5c5ffaba diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 76d9ec8..e0f8745 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -94,26 +94,26 @@ #include <rtl/math.hxx> -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::drawing; +using namespace css; +using namespace css::uno; +using namespace css::drawing; using namespace ::oox::core; -using ::com::sun::star::beans::PropertyState; -using ::com::sun::star::beans::PropertyValue; -using ::com::sun::star::beans::XPropertySet; -using ::com::sun::star::beans::XPropertyState; -using ::com::sun::star::container::XEnumeration; -using ::com::sun::star::container::XEnumerationAccess; -using ::com::sun::star::container::XIndexAccess; -using ::com::sun::star::container::XNamed; -using ::com::sun::star::io::XOutputStream; -using ::com::sun::star::table::CellAddress; -using ::com::sun::star::sheet::XFormulaParser; -using ::com::sun::star::sheet::XFormulaTokens; +using css::beans::PropertyState; +using css::beans::PropertyValue; +using css::beans::XPropertySet; +using css::beans::XPropertyState; +using css::container::XEnumeration; +using css::container::XEnumerationAccess; +using css::container::XIndexAccess; +using css::container::XNamed; +using css::io::XOutputStream; +using css::table::CellAddress; +using css::sheet::XFormulaParser; +using css::sheet::XFormulaTokens; using ::oox::core::XmlFilterBase; using ::sax_fastparser::FSHelperPtr; -namespace cssc = com::sun::star::chart; +namespace cssc = css::chart; namespace oox { namespace drawingml { @@ -484,12 +484,12 @@ OUString ChartExport::parseFormula( const OUString& rRange ) Reference< XPropertySet > xParserProps( xParser, uno::UNO_QUERY ); if( xParserProps.is() ) { - xParserProps->setPropertyValue("FormulaConvention", uno::makeAny(::com::sun::star::sheet::AddressConvention::OOO) ); + xParserProps->setPropertyValue("FormulaConvention", uno::makeAny(css::sheet::AddressConvention::OOO) ); } uno::Sequence<sheet::FormulaToken> aTokens = xParser->parseFormula( rRange, CellAddress( 0, 0, 0 ) ); if( xParserProps.is() ) { - xParserProps->setPropertyValue("FormulaConvention", uno::makeAny(::com::sun::star::sheet::AddressConvention::XL_OOX) ); + xParserProps->setPropertyValue("FormulaConvention", uno::makeAny(css::sheet::AddressConvention::XL_OOX) ); } aResult = xParser->printFormula( aTokens, CellAddress( 0, 0, 0 ) ); } @@ -673,7 +673,7 @@ void ChartExport::ExportContent() void ChartExport::_ExportContent() { - Reference< ::com::sun::star::chart::XChartDocument > xChartDoc( getModel(), uno::UNO_QUERY ); + Reference< css::chart::XChartDocument > xChartDoc( getModel(), uno::UNO_QUERY ); if( xChartDoc.is()) { // determine if data comes from the outside @@ -732,7 +732,7 @@ void ChartExport::_ExportContent() } } -void ChartExport::exportChartSpace( Reference< ::com::sun::star::chart::XChartDocument > rChartDoc, +void ChartExport::exportChartSpace( Reference< css::chart::XChartDocument > rChartDoc, bool bIncludeTable ) { FSHelperPtr pFS = GetFS(); @@ -771,7 +771,7 @@ void ChartExport::exportChartSpace( Reference< ::com::sun::star::chart::XChartDo pFS->endElement( FSNS( XML_c, XML_chartSpace ) ); } -void ChartExport::exportExternalData( Reference< ::com::sun::star::chart::XChartDocument > rChartDoc ) +void ChartExport::exportExternalData( Reference< css::chart::XChartDocument > rChartDoc ) { // Embedded external data is grab bagged for docx file hence adding export part of // external data for docx files only. @@ -822,7 +822,7 @@ void ChartExport::exportExternalData( Reference< ::com::sun::star::chart::XChart } } -void ChartExport::exportChart( Reference< ::com::sun::star::chart::XChartDocument > rChartDoc ) +void ChartExport::exportChart( Reference< css::chart::XChartDocument > rChartDoc ) { Reference< chart2::XChartDocument > xNewDoc( rChartDoc, uno::UNO_QUERY ); mxDiagram.set( rChartDoc->getDiagram() ); @@ -948,7 +948,7 @@ void ChartExport::exportMissingValueTreatment(uno::Reference<beans::XPropertySet FSEND); } -void ChartExport::exportLegend( Reference< ::com::sun::star::chart::XChartDocument > rChartDoc ) +void ChartExport::exportLegend( Reference< css::chart::XChartDocument > rChartDoc ) { FSHelperPtr pFS = GetFS(); pFS->startElement( FSNS( XML_c, XML_legend ), @@ -958,7 +958,7 @@ void ChartExport::exportLegend( Reference< ::com::sun::star::chart::XChartDocume if( xProp.is() ) { // position - ::com::sun::star::chart::ChartLegendPosition aLegendPos = ::com::sun::star::chart::ChartLegendPosition_NONE; + css::chart::ChartLegendPosition aLegendPos = css::chart::ChartLegendPosition_NONE; try { Any aAny( xProp->getPropertyValue( @@ -973,20 +973,20 @@ void ChartExport::exportLegend( Reference< ::com::sun::star::chart::XChartDocume const char* strPos = NULL; switch( aLegendPos ) { - case ::com::sun::star::chart::ChartLegendPosition_LEFT: + case css::chart::ChartLegendPosition_LEFT: strPos = "l"; break; - case ::com::sun::star::chart::ChartLegendPosition_RIGHT: + case css::chart::ChartLegendPosition_RIGHT: strPos = "r"; break; - case ::com::sun::star::chart::ChartLegendPosition_TOP: + case css::chart::ChartLegendPosition_TOP: strPos = "t"; break; - case ::com::sun::star::chart::ChartLegendPosition_BOTTOM: + case css::chart::ChartLegendPosition_BOTTOM: strPos = "b"; break; - case ::com::sun::star::chart::ChartLegendPosition_NONE: - case ::com::sun::star::chart::ChartLegendPosition_MAKE_FIXED_SIZE: + case css::chart::ChartLegendPosition_NONE: + case css::chart::ChartLegendPosition_MAKE_FIXED_SIZE: // nothing break; } @@ -1262,7 +1262,7 @@ void ChartExport::exportPlotArea( ) * Export the Plot area Shape Properties * eg: Fill and Outline */ - Reference< ::com::sun::star::chart::X3DDisplay > xWallFloorSupplier( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::X3DDisplay > xWallFloorSupplier( mxDiagram, uno::UNO_QUERY ); if( xWallFloorSupplier.is() ) { Reference< beans::XPropertySet > xWallPropSet( xWallFloorSupplier->getWall(), uno::UNO_QUERY ); @@ -1529,7 +1529,7 @@ void ChartExport::exportBarChart( Reference< chart2::XChartType > xChartType ) if( mbIs3DChart ) { // Shape - namespace cssc = ::com::sun::star::chart; + namespace cssc = css::chart; sal_Int32 nGeom3d = cssc::ChartSolidType::RECTANGULAR_SOLID; if( xPropSet.is() && GetProperty( xPropSet, "SolidType") ) mAny >>= nGeom3d; @@ -1625,7 +1625,7 @@ void ChartExport::exportLineChart( Reference< chart2::XChartType > xChartType ) exportSeries( xChartType, nAttachedAxis ); // show marker? - sal_Int32 nSymbolType = ::com::sun::star::chart::ChartSymbolType::NONE; + sal_Int32 nSymbolType = css::chart::ChartSymbolType::NONE; Reference< XPropertySet > xPropSet( mxDiagram , uno::UNO_QUERY); if( GetProperty( xPropSet, "SymbolType" ) ) mAny >>= nSymbolType; @@ -1634,7 +1634,7 @@ void ChartExport::exportLineChart( Reference< chart2::XChartType > xChartType ) { exportHiLowLines(); exportUpDownBars(xChartType); - const char* marker = nSymbolType == ::com::sun::star::chart::ChartSymbolType::NONE? "0":"1"; + const char* marker = nSymbolType == css::chart::ChartSymbolType::NONE? "0":"1"; pFS->singleElement( FSNS( XML_c, XML_marker ), XML_val, marker, FSEND ); @@ -1707,7 +1707,7 @@ void ChartExport::exportScatterChart( Reference< chart2::XChartType > xChartType FSEND ); // TODO:scatterStyle - sal_Int32 nSymbolType = ::com::sun::star::chart::ChartSymbolType::NONE; + sal_Int32 nSymbolType = css::chart::ChartSymbolType::NONE; Reference< XPropertySet > xPropSet( mxDiagram , uno::UNO_QUERY); if( GetProperty( xPropSet, "SymbolType" ) ) mAny >>= nSymbolType; @@ -1743,7 +1743,7 @@ void ChartExport::exportStockChart( Reference< chart2::XChartType > xChartType ) sal_Int32 nAttachedAxis = AXIS_PRIMARY_Y; exportSeries( xChartType, nAttachedAxis ); // export stock properties - Reference< ::com::sun::star::chart::XStatisticDisplay > xStockPropProvider( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XStatisticDisplay > xStockPropProvider( mxDiagram, uno::UNO_QUERY ); if( xStockPropProvider.is()) { exportHiLowLines(); @@ -1759,7 +1759,7 @@ void ChartExport::exportHiLowLines() { FSHelperPtr pFS = GetFS(); // export the chart property - Reference< ::com::sun::star::chart::XStatisticDisplay > xChartPropProvider( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XStatisticDisplay > xChartPropProvider( mxDiagram, uno::UNO_QUERY ); if (!xChartPropProvider.is()) return; @@ -1781,7 +1781,7 @@ void ChartExport::exportUpDownBars( Reference< chart2::XChartType > xChartType) FSHelperPtr pFS = GetFS(); // export the chart property - Reference< ::com::sun::star::chart::XStatisticDisplay > xChartPropProvider( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XStatisticDisplay > xChartPropProvider( mxDiagram, uno::UNO_QUERY ); if(xChartPropProvider.is()) { // updownbar @@ -1926,7 +1926,7 @@ void ChartExport::exportSeries( Reference< chart2::XChartType > xChartType, sal_ if( GetProperty( xPropSet, "Axis") ) { mAny >>= nAttachedAxis; - if( nAttachedAxis == ::com::sun::star::chart::ChartAxisAssign::SECONDARY_Y ) + if( nAttachedAxis == css::chart::ChartAxisAssign::SECONDARY_Y ) nAttachedAxis = AXIS_SECONDARY_Y; else nAttachedAxis = AXIS_PRIMARY_Y; @@ -2365,7 +2365,7 @@ void ChartExport::exportAxis(const AxisIdPair& rAxisIdPair) { case AXIS_PRIMARY_X: { - Reference< ::com::sun::star::chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY ); if( xAxisXSupp.is()) xAxisProp = xAxisXSupp->getXAxis(); if( bHasXAxisTitle ) @@ -2387,7 +2387,7 @@ void ChartExport::exportAxis(const AxisIdPair& rAxisIdPair) } case AXIS_PRIMARY_Y: { - Reference< ::com::sun::star::chart::XAxisYSupplier > xAxisYSupp( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XAxisYSupplier > xAxisYSupp( mxDiagram, uno::UNO_QUERY ); if( xAxisYSupp.is()) xAxisProp = xAxisYSupp->getYAxis(); if( bHasYAxisTitle ) @@ -2404,7 +2404,7 @@ void ChartExport::exportAxis(const AxisIdPair& rAxisIdPair) } case AXIS_PRIMARY_Z: { - Reference< ::com::sun::star::chart::XAxisZSupplier > xAxisZSupp( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XAxisZSupplier > xAxisZSupp( mxDiagram, uno::UNO_QUERY ); if( xAxisZSupp.is()) xAxisProp = xAxisZSupp->getZAxis(); if( bHasZAxisTitle ) @@ -2426,12 +2426,12 @@ void ChartExport::exportAxis(const AxisIdPair& rAxisIdPair) } case AXIS_SECONDARY_Y: { - Reference< ::com::sun::star::chart::XTwoAxisYSupplier > xAxisTwoYSupp( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XTwoAxisYSupplier > xAxisTwoYSupp( mxDiagram, uno::UNO_QUERY ); if( xAxisTwoYSupp.is()) xAxisProp = xAxisTwoYSupp->getSecondaryYAxis(); if( bHasSecondaryYAxisTitle ) { - Reference< ::com::sun::star::chart::XSecondAxisTitleSupplier > xAxisSupp( mxDiagram, uno::UNO_QUERY ); + Reference< css::chart::XSecondAxisTitleSupplier > xAxisSupp( mxDiagram, uno::UNO_QUERY ); xAxisTitle.set( xAxisSupp->getSecondYAxisTitle(), uno::UNO_QUERY ); } @@ -2576,8 +2576,8 @@ void ChartExport::_exportAxis( if(GetProperty( xAxisProp, "Marks" ) ) { mAny >>= nValue; - bool bInner = nValue & ::com::sun::star::chart::ChartAxisMarks::INNER; - bool bOuter = nValue & ::com::sun::star::chart::ChartAxisMarks::OUTER; + bool bInner = nValue & css::chart::ChartAxisMarks::INNER; + bool bOuter = nValue & css::chart::ChartAxisMarks::OUTER; const char* majorTickMark = NULL; if( bInner && bOuter ) majorTickMark = "cross"; @@ -2595,8 +2595,8 @@ void ChartExport::_exportAxis( if(GetProperty( xAxisProp, "HelpMarks" ) ) { mAny >>= nValue; - bool bInner = nValue & ::com::sun::star::chart::ChartAxisMarks::INNER; - bool bOuter = nValue & ::com::sun::star::chart::ChartAxisMarks::OUTER; + bool bInner = nValue & css::chart::ChartAxisMarks::INNER; + bool bOuter = nValue & css::chart::ChartAxisMarks::OUTER; const char* minorTickMark = NULL; if( bInner && bOuter ) minorTickMark = "cross"; @@ -2617,18 +2617,18 @@ void ChartExport::_exportAxis( mAny >>= bDisplayLabel; if( bDisplayLabel && (GetProperty( xAxisProp, "LabelPosition" ) ) ) { - ::com::sun::star::chart::ChartAxisLabelPosition eLabelPosition = ::com::sun::star::chart::ChartAxisLabelPosition_NEAR_AXIS; + css::chart::ChartAxisLabelPosition eLabelPosition = css::chart::ChartAxisLabelPosition_NEAR_AXIS; mAny >>= eLabelPosition; switch( eLabelPosition ) { - case ::com::sun::star::chart::ChartAxisLabelPosition_NEAR_AXIS: - case ::com::sun::star::chart::ChartAxisLabelPosition_NEAR_AXIS_OTHER_SIDE: + case css::chart::ChartAxisLabelPosition_NEAR_AXIS: + case css::chart::ChartAxisLabelPosition_NEAR_AXIS_OTHER_SIDE: sTickLblPos = "nextTo"; break; - case ::com::sun::star::chart::ChartAxisLabelPosition_OUTSIDE_START: + case css::chart::ChartAxisLabelPosition_OUTSIDE_START: sTickLblPos = "low"; break; - case ::com::sun::star::chart::ChartAxisLabelPosition_OUTSIDE_END: + case css::chart::ChartAxisLabelPosition_OUTSIDE_END: sTickLblPos = "high"; break; default: @@ -2656,17 +2656,17 @@ void ChartExport::_exportAxis( const char* sCrosses = NULL; if(GetProperty( xAxisProp, "CrossoverPosition" ) ) { - ::com::sun::star::chart::ChartAxisPosition ePosition( ::com::sun::star::chart::ChartAxisPosition_ZERO ); + css::chart::ChartAxisPosition ePosition( css::chart::ChartAxisPosition_ZERO ); mAny >>= ePosition; switch( ePosition ) { - case ::com::sun::star::chart::ChartAxisPosition_START: + case css::chart::ChartAxisPosition_START: sCrosses = "min"; break; - case ::com::sun::star::chart::ChartAxisPosition_END: + case css::chart::ChartAxisPosition_END: sCrosses = "max"; break; - case ::com::sun::star::chart::ChartAxisPosition_ZERO: + case css::chart::ChartAxisPosition_ZERO: sCrosses = "autoZero"; break; default: commit 720c787e117771cc8fc940085a2d7b1c81b1f151 Author: Markus Mohrhard <[email protected]> Date: Sat Apr 25 03:47:09 2015 +0200 replace com::sun::star with css in chart ooxml export Change-Id: Ia508cecc0a06fd1af5adca9756dce394337260fc diff --git a/include/oox/export/chartexport.hxx b/include/oox/export/chartexport.hxx index 98ca528..2a3ff80 100644 --- a/include/oox/export/chartexport.hxx +++ b/include/oox/export/chartexport.hxx @@ -85,17 +85,17 @@ public: private: sal_Int32 mnXmlNamespace; sal_Int32 mnSeriesCount; - ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > mxChartModel; - com::sun::star::uno::Reference< com::sun::star::chart::XDiagram > mxDiagram; - com::sun::star::uno::Reference< com::sun::star::chart2::XDiagram > mxNewDiagram; + css::uno::Reference< css::frame::XModel > mxChartModel; + css::uno::Reference< css::chart::XDiagram > mxDiagram; + css::uno::Reference< css::chart2::XDiagram > mxNewDiagram; // members filled by InitRangeSegmentationProperties (retrieved from DataProvider) bool mbHasCategoryLabels; //if the categories are only automatically generated this will be false OUString msChartAddress; - ::com::sun::star::uno::Sequence< sal_Int32 > maSequenceMapping; + css::uno::Sequence< sal_Int32 > maSequenceMapping; - //::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > mxAdditionalShapes; - ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > mxCategoriesValues; + //css::uno::Reference< css::drawing::XShapes > mxAdditionalShapes; + css::uno::Reference< css::chart2::data::XDataSequence > mxCategoriesValues; AxisVector maAxes; bool mbHasZAxis; @@ -110,61 +110,61 @@ private: void InitPlotArea(); void _ExportContent(); - void exportChartSpace( com::sun::star::uno::Reference< - com::sun::star::chart::XChartDocument > rChartDoc, + void exportChartSpace( css::uno::Reference< + css::chart::XChartDocument > rChartDoc, bool bIncludeTable ); - void exportChart( com::sun::star::uno::Reference< - com::sun::star::chart::XChartDocument > rChartDoc ); - void exportExternalData( com::sun::star::uno::Reference< - com::sun::star::chart::XChartDocument > rChartDoc ); - void exportLegend( com::sun::star::uno::Reference< - com::sun::star::chart::XChartDocument > rChartDoc ); - void exportTitle( com::sun::star::uno::Reference< - ::com::sun::star::drawing::XShape > xShape ); + void exportChart( css::uno::Reference< + css::chart::XChartDocument > rChartDoc ); + void exportExternalData( css::uno::Reference< + css::chart::XChartDocument > rChartDoc ); + void exportLegend( css::uno::Reference< + css::chart::XChartDocument > rChartDoc ); + void exportTitle( css::uno::Reference< + css::drawing::XShape > xShape ); void exportPlotArea( ); - void exportPlotAreaShapeProps( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropSet ); - void exportFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropSet ); - void exportGradientFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropSet ); - void exportBitmapFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropSet ); + void exportPlotAreaShapeProps( css::uno::Reference< css::beans::XPropertySet > xPropSet ); + void exportFill( css::uno::Reference< css::beans::XPropertySet > xPropSet ); + void exportGradientFill( css::uno::Reference< css::beans::XPropertySet > xPropSet ); + void exportBitmapFill( css::uno::Reference< css::beans::XPropertySet > xPropSet ); void exportDataTable( ); - void exportAreaChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportBarChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportBubbleChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportDoughnutChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportLineChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportPieChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportRadarChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportScatterChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportStockChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); - void exportSurfaceChart( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); + void exportAreaChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportBarChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportBubbleChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportDoughnutChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportLineChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportPieChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportRadarChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportScatterChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportStockChart( css::uno::Reference< css::chart2::XChartType > xChartType ); + void exportSurfaceChart( css::uno::Reference< css::chart2::XChartType > xChartType ); void exportHiLowLines(); - void exportUpDownBars(com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType ); + void exportUpDownBars(css::uno::Reference< css::chart2::XChartType > xChartType ); - void exportSeries( com::sun::star::uno::Reference< com::sun::star::chart2::XChartType > xChartType, sal_Int32& nAttachedAxis ); + void exportSeries( css::uno::Reference< css::chart2::XChartType > xChartType, sal_Int32& nAttachedAxis ); void exportCandleStickSeries( - const ::com::sun::star::uno::Sequence< - ::com::sun::star::uno::Reference< - ::com::sun::star::chart2::XDataSeries > > & aSeriesSeq, + const css::uno::Sequence< + css::uno::Reference< + css::chart2::XDataSeries > > & aSeriesSeq, bool bJapaneseCandleSticks, sal_Int32& nAttachedAxis ); void exportSeriesText( - const com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValueSeq ); + const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq ); void exportSeriesCategory( - const com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValueSeq ); + const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq ); void exportSeriesValues( - const com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence >& xValueSeq, sal_Int32 nValueType = XML_val ); - void exportShapeProps( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropSet ); + const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq, sal_Int32 nValueType = XML_val ); + void exportShapeProps( css::uno::Reference< css::beans::XPropertySet > xPropSet ); void exportDataPoints( - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSeriesProperties, + const css::uno::Reference< css::beans::XPropertySet >& xSeriesProperties, sal_Int32 nSeriesLength ); void exportDataLabels( const css::uno::Reference<css::chart2::XDataSeries>& xSeries, sal_Int32 nSeriesLength, sal_Int32 eChartType ); void exportGrouping( bool isBar = false ); - void exportTrendlines( ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > xSeries ); - void exportMarker( ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > xSeries ); + void exportTrendlines( css::uno::Reference< css::chart2::XDataSeries > xSeries ); + void exportMarker( css::uno::Reference< css::chart2::XDataSeries > xSeries ); void exportSmooth(); void exportFirstSliceAng(); - void exportErrorBar(com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xErrorBarProps, + void exportErrorBar(css::uno::Reference< css::beans::XPropertySet > xErrorBarProps, bool bYError); void exportManualLayout(const css::chart2::RelativePosition& rPos, const css::chart2::RelativeSize& rSize); @@ -172,10 +172,10 @@ private: void exportAxes( ); void exportAxis(const AxisIdPair& rAxisIdPair); void _exportAxis( - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xAxisProp, - const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xAxisTitle, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xMajorGrid, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xMinorGrid, + const css::uno::Reference< css::beans::XPropertySet >& xAxisProp, + const css::uno::Reference< css::drawing::XShape >& xAxisTitle, + const css::uno::Reference< css::beans::XPropertySet >& xMajorGrid, + const css::uno::Reference< css::beans::XPropertySet >& xMinorGrid, sal_Int32 nAxisType, const char* sAxisPos, const AxisIdPair& rAxisIdPair ); @@ -183,25 +183,25 @@ private: void exportView3D(); bool isDeep3dChart(); - void exportMissingValueTreatment(com::sun::star::uno::Reference< - com::sun::star::beans::XPropertySet> xPropSet); + void exportMissingValueTreatment(css::uno::Reference< + css::beans::XPropertySet> xPropSet); OUString getNumberFormatCode(sal_Int32 nKey) const; public: - ChartExport( sal_Int32 nXmlNamespace, ::sax_fastparser::FSHelperPtr pFS, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel, ::oox::core::XmlFilterBase* pFB = NULL, DocumentType eDocumentType = DOCUMENT_PPTX ); + ChartExport( sal_Int32 nXmlNamespace, ::sax_fastparser::FSHelperPtr pFS, css::uno::Reference< css::frame::XModel >& xModel, ::oox::core::XmlFilterBase* pFB = NULL, DocumentType eDocumentType = DOCUMENT_PPTX ); virtual ~ChartExport() {} sal_Int32 GetChartID( ); - ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getModel(){ return mxChartModel; } + css::uno::Reference< css::frame::XModel > getModel(){ return mxChartModel; } - ChartExport& WriteChartObj( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, sal_Int32 nChartCount ); + ChartExport& WriteChartObj( const css::uno::Reference< css::drawing::XShape >& xShape, sal_Int32 nChartCount ); void ExportContent(); void InitRangeSegmentationProperties( - const ::com::sun::star::uno::Reference< - ::com::sun::star::chart2::XChartDocument > & xChartDoc ); + const css::uno::Reference< + css::chart2::XChartDocument > & xChartDoc ); }; }} commit 7dc420b1099f05c90be436d88381f4040ef05532 Author: Markus Mohrhard <[email protected]> Date: Sat Apr 25 03:44:58 2015 +0200 correct handling for manualLayout with differen anchor, tdf#90851 Change-Id: I6ec242b955e1f5623041cc8f8779b6c2be0f126c diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 58a5329..76d9ec8 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -1288,20 +1288,60 @@ void ChartExport::exportManualLayout(const css::chart2::RelativePosition& rPos, XML_val, "edge", FSEND); + double x = rPos.Primary; + double y = rPos.Secondary; + double w = rSize.Primary; + double h = rSize.Secondary; + switch (rPos.Anchor) + { + case drawing::Alignment_LEFT: + y -= (h/2); + break; + case drawing::Alignment_TOP_LEFT: + break; + case drawing::Alignment_BOTTOM_LEFT: + y -= h; + break; + case drawing::Alignment_TOP: + x -= (w/2); + break; + case drawing::Alignment_CENTER: + x -= (w/2); + y -= (h/2); + break; + case drawing::Alignment_BOTTOM: + x -= (w/2); + y -= h; + break; + case drawing::Alignment_TOP_RIGHT: + x -= w; + break; + case drawing::Alignment_BOTTOM_RIGHT: + x -= w; + y -= h; + break; + case drawing::Alignment_RIGHT: + y -= (h/2); + x -= w; + break; + default: + SAL_WARN("oox.chart", "unhandled alignment case for manual layout export"); + } + pFS->singleElement(FSNS(XML_c, XML_x), - XML_val, IS(rPos.Primary), + XML_val, IS(x), FSEND); pFS->singleElement(FSNS(XML_c, XML_y), - XML_val, IS(rPos.Secondary), + XML_val, IS(y), FSEND); pFS->singleElement(FSNS(XML_c, XML_w), - XML_val, IS(rSize.Primary), + XML_val, IS(w), FSEND); pFS->singleElement(FSNS(XML_c, XML_h), - XML_val, IS(rSize.Secondary), + XML_val, IS(h), FSEND); pFS->endElement(FSNS(XML_c, XML_manualLayout)); commit 983396013539ab4643df43afa72a5d14472f9ea8 Author: Markus Mohrhard <[email protected]> Date: Sat Apr 25 03:33:45 2015 +0200 first part for manualLayout plot area support, tdf#90851 still some positioning problems. Most likely we need to handle chart2::RelativePosition::Anchor for correct positioning. Change-Id: Iecd0ced684203d2c11aab3c55e04f8c7f699779a diff --git a/include/oox/export/chartexport.hxx b/include/oox/export/chartexport.hxx index 8ac7fe6..98ca528 100644 --- a/include/oox/export/chartexport.hxx +++ b/include/oox/export/chartexport.hxx @@ -27,6 +27,9 @@ #include <sax/fshelper.hxx> #include <vcl/mapmod.hxx> +#include <com/sun/star/chart2/RelativePosition.hpp> +#include <com/sun/star/chart2/RelativeSize.hpp> + namespace com { namespace sun { namespace star { namespace chart { class XDiagram; @@ -164,6 +167,8 @@ private: void exportErrorBar(com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xErrorBarProps, bool bYError); + void exportManualLayout(const css::chart2::RelativePosition& rPos, const css::chart2::RelativeSize& rSize); + void exportAxes( ); void exportAxis(const AxisIdPair& rAxisIdPair); void _exportAxis( diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index 72ed205..58a5329 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -49,7 +49,6 @@ #include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/XDiagram.hpp> -#include <com/sun/star/chart2/RelativePosition.hpp> #include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> #include <com/sun/star/chart2/XRegressionCurveContainer.hpp> #include <com/sun/star/chart2/XChartTypeContainer.hpp> @@ -1155,9 +1154,19 @@ void ChartExport::exportPlotArea( ) FSHelperPtr pFS = GetFS(); pFS->startElement( FSNS( XML_c, XML_plotArea ), FSEND ); - // layout - pFS->singleElement( FSNS( XML_c, XML_layout ), - FSEND ); + + Reference<beans::XPropertySet> xWall(mxNewDiagram, uno::UNO_QUERY); + if( xWall.is() ) + { + uno::Any aAny = xWall->getPropertyValue("RelativePosition"); + if (aAny.hasValue()) + { + chart2::RelativePosition aPos = aAny.get<chart2::RelativePosition>(); + aAny = xWall->getPropertyValue("RelativeSize"); + chart2::RelativeSize aSize = aAny.get<chart2::RelativeSize>(); + exportManualLayout(aPos, aSize); + } + } // chart type Sequence< Reference< chart2::XCoordinateSystem > > @@ -1267,6 +1276,38 @@ void ChartExport::exportPlotArea( ) } +void ChartExport::exportManualLayout(const css::chart2::RelativePosition& rPos, const css::chart2::RelativeSize& rSize) +{ + FSHelperPtr pFS = GetFS(); + pFS->startElement(FSNS(XML_c, XML_layout), FSEND); + pFS->startElement(FSNS(XML_c, XML_manualLayout), FSEND); + pFS->singleElement(FSNS(XML_c, XML_xMode), + XML_val, "edge", + FSEND); + pFS->singleElement(FSNS(XML_c, XML_yMode), + XML_val, "edge", + FSEND); + + pFS->singleElement(FSNS(XML_c, XML_x), + XML_val, IS(rPos.Primary), + FSEND); + + pFS->singleElement(FSNS(XML_c, XML_y), + XML_val, IS(rPos.Secondary), + FSEND); + + pFS->singleElement(FSNS(XML_c, XML_w), + XML_val, IS(rSize.Primary), + FSEND); + + pFS->singleElement(FSNS(XML_c, XML_h), + XML_val, IS(rSize.Secondary), + FSEND); + + pFS->endElement(FSNS(XML_c, XML_manualLayout)); + pFS->endElement(FSNS(XML_c, XML_layout)); +} + void ChartExport::exportPlotAreaShapeProps( Reference< XPropertySet > xPropSet ) { FSHelperPtr pFS = GetFS(); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
