chart2/qa/extras/chart2export.cxx         |   18 ++++++++++++++++++
 chart2/qa/extras/data/xlsx/tdf126115.xlsx |binary
 include/oox/export/chartexport.hxx        |    2 +-
 oox/source/export/chartexport.cxx         |   25 ++++++++++++++++---------
 4 files changed, 35 insertions(+), 10 deletions(-)

New commits:
commit 157fd297127081abfa11f205d378bdabacf2f8df
Author:     Balazs Varga <balazs.varga...@gmail.com>
AuthorDate: Fri Jun 28 12:30:19 2019 +0200
Commit:     Xisco Faulí <xiscofa...@libreoffice.org>
CommitDate: Mon Jul 1 17:28:03 2019 +0200

    tdf#126115 Chart OOXML Export: fix individual marker
    
    Export linechart custom (individual) datapoint marker
    settings into a <dPt> tag, as the OOXML Standard requires.
    
    Change-Id: I939196c9ea6e091ac9dadb4d62dd85d5408d599c
    Reviewed-on: https://gerrit.libreoffice.org/74837
    Tested-by: Jenkins
    Reviewed-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit 0970a47ae926bb47458b846e9dc8ff6f3607250c)
    Reviewed-on: https://gerrit.libreoffice.org/74958
    Reviewed-by: Xisco Faulí <xiscofa...@libreoffice.org>

diff --git a/chart2/qa/extras/chart2export.cxx 
b/chart2/qa/extras/chart2export.cxx
index e43822f4acfd..03d7f485f972 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -73,6 +73,7 @@ public:
     void testFdo78290LineChartMarkerX();
     void testFdo78290ScatterChartMarkerX();
     void testFdo78290CombinationChartMarkerX();
+    void testTdf126115IndividualMarker();
     void testAxisNumberFormatODS();
     void testAxisNumberFormatXLS();
     void testDataLabelBordersDOCX();
@@ -170,6 +171,7 @@ public:
     CPPUNIT_TEST(testFdo78290LineChartMarkerX);
     CPPUNIT_TEST(testFdo78290ScatterChartMarkerX);
     CPPUNIT_TEST(testFdo78290CombinationChartMarkerX);
+    CPPUNIT_TEST(testTdf126115IndividualMarker);
     CPPUNIT_TEST(testAxisNumberFormatODS);
     CPPUNIT_TEST(testAxisNumberFormatXLS);
     CPPUNIT_TEST(testDataLabelBordersDOCX);
@@ -801,6 +803,22 @@ void 
Chart2ExportTest::testFdo78290CombinationChartMarkerX()
     assertXPath(pXmlDoc, 
"/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:marker[1]/c:size[1]","val","7");
 }
 
+void Chart2ExportTest::testTdf126115IndividualMarker()
+{
+    // Check individual marker properties.
+    load("/chart2/qa/extras/data/xlsx/", "tdf126115.xlsx");
+    xmlDocPtr pXmlDoc = parseExport("xl/charts/chart", "Calc Office Open XML");
+    CPPUNIT_ASSERT(pXmlDoc);
+    // 1. series
+    assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dPt/c:marker/c:symbol",
 "val", "square");
+    assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dPt/c:marker/c:size",
 "val", "8");
+    assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dPt/c:marker/c:spPr/a:solidFill/a:srgbClr",
 "val", "ff0000");
+    // 2. series
+    assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[2]/c:dPt/c:marker/c:symbol",
 "val", "x");
+    assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[2]/c:dPt/c:marker/c:size",
 "val", "15");
+    assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[2]/c:dPt/c:marker/c:spPr/a:solidFill/a:srgbClr",
 "val", "7030a0");
+}
+
 void Chart2ExportTest::testAxisNumberFormatODS()
 {
     struct
diff --git a/chart2/qa/extras/data/xlsx/tdf126115.xlsx 
b/chart2/qa/extras/data/xlsx/tdf126115.xlsx
new file mode 100644
index 000000000000..f845c06e3142
Binary files /dev/null and b/chart2/qa/extras/data/xlsx/tdf126115.xlsx differ
diff --git a/include/oox/export/chartexport.hxx 
b/include/oox/export/chartexport.hxx
index b39b3f52b455..4716099dd8df 100644
--- a/include/oox/export/chartexport.hxx
+++ b/include/oox/export/chartexport.hxx
@@ -182,7 +182,7 @@ private:
     void exportDataLabels( const 
css::uno::Reference<css::chart2::XDataSeries>& xSeries, sal_Int32 
nSeriesLength, sal_Int32 eChartType );
     void exportGrouping( bool isBar = false );
     void exportTrendlines( const css::uno::Reference< css::chart2::XDataSeries 
>& xSeries );
-    void exportMarker( const css::uno::Reference< css::chart2::XDataSeries >& 
xSeries );
+    void exportMarker( const css::uno::Reference< css::beans::XPropertySet >& 
xPropSet );
     void exportSmooth();
     void exportFirstSliceAng();
 
diff --git a/oox/source/export/chartexport.cxx 
b/oox/source/export/chartexport.cxx
index ffb7f8042179..8b41e216dede 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -1931,7 +1931,7 @@ void ChartExport::exportSeries( const 
Reference<chart2::XChartType>& xChartType,
                         break;
                         case chart::TYPEID_LINE:
                         {
-                            exportMarker(xDataSeries);
+                            exportMarker(xOldPropSet);
                             break;
                         }
                         case chart::TYPEID_PIE:
@@ -1948,12 +1948,12 @@ void ChartExport::exportSeries( const 
Reference<chart2::XChartType>& xChartType,
                         }
                         case chart::TYPEID_SCATTER:
                         {
-                            exportMarker(xDataSeries);
+                            exportMarker(xOldPropSet);
                             break;
                         }
                         case chart::TYPEID_RADARLINE:
                         {
-                            exportMarker(xDataSeries);
+                            exportMarker(xOldPropSet);
                             break;
                         }
                     }
@@ -3223,12 +3223,20 @@ void ChartExport::exportDataPoints(
                     case chart::TYPEID_BUBBLE:
                     case chart::TYPEID_HORBAR:
                     case chart::TYPEID_BAR:
-                    {
                         pFS->singleElement(FSNS(XML_c, XML_invertIfNegative), 
XML_val, "0");
-                    }
-                    break;
+                        exportShapeProps(xPropSet);
+                        break;
+
+                    case chart::TYPEID_LINE:
+                    case chart::TYPEID_SCATTER:
+                    case chart::TYPEID_RADARLINE:
+                        exportMarker(xPropSet);
+                        break;
+
+                    default:
+                        exportShapeProps(xPropSet);
+                        break;
                 }
-                exportShapeProps( xPropSet );
 
                 pFS->endElement( FSNS( XML_c, XML_dPt ) );
             }
@@ -3434,9 +3442,8 @@ void ChartExport::exportTrendlines( const Reference< 
chart2::XDataSeries >& xSer
     }
 }
 
-void ChartExport::exportMarker(const Reference< chart2::XDataSeries >& xSeries)
+void ChartExport::exportMarker(const Reference< XPropertySet >& xPropSet)
 {
-    Reference< XPropertySet > xPropSet( xSeries, uno::UNO_QUERY );
     chart2::Symbol aSymbol;
     if( GetProperty( xPropSet, "Symbol" ) )
         mAny >>= aSymbol;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to