summaryrefslogtreecommitdiffstats
path: root/chart2/qa/extras/chart2dump
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/qa/extras/chart2dump')
-rw-r--r--chart2/qa/extras/chart2dump/chart2dump.cxx1122
-rw-r--r--chart2/qa/extras/chart2dump/data/axis_special_positioning.odpbin0 -> 25153 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_with_titles.odsbin0 -> 24943 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_without_titles.odsbin0 -> 25090 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.odsbin0 -> 29351 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/column_chart_small_spacing.odsbin0 -> 29333 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/custom_legend_position.odpbin0 -> 16422 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/date-categories.pptxbin0 -> 41931 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/default_formated_axis.odpbin0 -> 26218 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/donut_chart.odsbin0 -> 24630 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/exploded_pie_chart.odsbin0 -> 26180 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/formated_axis_labels.odpbin0 -> 15328 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/formated_axis_lines.odpbin0 -> 24305 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/formated_grid_line.odsbin0 -> 30275 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/horizontal_grid.odsbin0 -> 30942 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/legend_on_bottom.odpbin0 -> 16526 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/legend_on_left_side.odpbin0 -> 16235 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/legend_on_right_side.odpbin0 -> 14176 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/legend_on_top.odpbin0 -> 16410 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/many_legend_entries.odpbin0 -> 20961 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/minimal_legend_test.odpbin0 -> 18253 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/minor_grid.odsbin0 -> 30004 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/multiple_categories.odpbin0 -> 21476 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/multiple_categories.odsbin0 -> 35766 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_area_chart.odsbin0 -> 29023 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_bar_chart.odsbin0 -> 31385 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_column_chart.odsbin0 -> 29326 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_line_chart_lines_and_points.odsbin0 -> 29690 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_line_chart_lines_only.odsbin0 -> 29596 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_line_chart_points_only.odsbin0 -> 29686 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/normal_pie_chart.odsbin0 -> 26374 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.odsbin0 -> 31559 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.odsbin0 -> 29672 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odpbin0 -> 23155 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odsbin0 -> 31177 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_and_points.odsbin0 -> 23971 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_only.odsbin0 -> 23869 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_points_only.odsbin0 -> 23751 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/pie_chart_many_slices.odsbin0 -> 16351 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/pivotchart_data_button.odsbin0 -> 18366 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/rotated_axis_labels.odpbin0 -> 24098 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/rotated_pie_chart.odsbin0 -> 26286 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/scatter_chart_lines_and_points.odsbin0 -> 23728 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.odsbin0 -> 23540 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/scatter_chart_points_only.odsbin0 -> 23520 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/simple_chart.odsbin0 -> 29601 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/stacked_area_chart.odsbin0 -> 30199 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/stacked_bar_chart.odsbin0 -> 29285 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/stacked_column_chart.odsbin0 -> 29893 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_and_points.odsbin0 -> 23638 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_only.odsbin0 -> 23312 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/stacked_line_chart_points_only.odsbin0 -> 23484 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/tdf118150.xlsxbin0 -> 14212 bytes
-rw-r--r--chart2/qa/extras/chart2dump/data/vertical_grid.odsbin0 -> 31470 bytes
-rw-r--r--chart2/qa/extras/chart2dump/reference/areacharttest/normal_area_chart.txt62
-rw-r--r--chart2/qa/extras/chart2dump/reference/areacharttest/percent_stacked_area_chart.txt62
-rw-r--r--chart2/qa/extras/chart2dump/reference/areacharttest/stacked_area_chart.txt62
-rw-r--r--chart2/qa/extras/chart2dump/reference/axisgeometrytest/axis_special_positioning.txt38
-rw-r--r--chart2/qa/extras/chart2dump/reference/axisgeometrytest/default_formated_axis.txt38
-rw-r--r--chart2/qa/extras/chart2dump/reference/axisgeometrytest/formated_axis_lines.txt38
-rw-r--r--chart2/qa/extras/chart2dump/reference/axisgeometrytest/rotated_axis_labels.txt38
-rw-r--r--chart2/qa/extras/chart2dump/reference/axislabeltest/date-categories.txt180
-rw-r--r--chart2/qa/extras/chart2dump/reference/axislabeltest/default_formated_axis.txt96
-rw-r--r--chart2/qa/extras/chart2dump/reference/axislabeltest/formated_axis_labels.txt96
-rw-r--r--chart2/qa/extras/chart2dump/reference/axislabeltest/percent_stacked_column_chart.txt96
-rw-r--r--chart2/qa/extras/chart2dump/reference/axislabeltest/rotated_axis_labels.txt60
-rw-r--r--chart2/qa/extras/chart2dump/reference/axislabeltest/tdf118150.txt216
-rw-r--r--chart2/qa/extras/chart2dump/reference/chartdatatest/multiple_categories.txt70
-rw-r--r--chart2/qa/extras/chart2dump/reference/chartdatatest/simple_chart.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_with_titles.txt10
-rw-r--r--chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_without_titles.txt10
-rw-r--r--chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_custom_positioning.txt10
-rw-r--r--chart2/qa/extras/chart2dump/reference/chartwalltest/formated_chartwall.txt10
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/column_chart_small_spacing.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_bar_chart.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_column_chart.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_bar_chart.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_column_chart.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_bar_chart.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_column_chart.txt162
-rw-r--r--chart2/qa/extras/chart2dump/reference/gridtest/formated_grid_line.txt17
-rw-r--r--chart2/qa/extras/chart2dump/reference/gridtest/horizontal_grid.txt17
-rw-r--r--chart2/qa/extras/chart2dump/reference/gridtest/minor_grid.txt68
-rw-r--r--chart2/qa/extras/chart2dump/reference/gridtest/vertical_grid.txt17
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/custom_legend_position.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/legend_on_bottom.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/legend_on_left_side.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/legend_on_right_side.txt18
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/legend_on_top.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/many_legend_entries.txt182
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/minimal_legend_test.txt14
-rw-r--r--chart2/qa/extras/chart2dump/reference/legendtest/multiple_categories.txt66
-rw-r--r--chart2/qa/extras/chart2dump/reference/piecharttest/donut_chart.txt194
-rw-r--r--chart2/qa/extras/chart2dump/reference/piecharttest/exploded_pie_chart.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/piecharttest/normal_pie_chart.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/piecharttest/pie_chart_many_slices.txt275
-rw-r--r--chart2/qa/extras/chart2dump/reference/piecharttest/rotated_pie_chart.txt50
-rw-r--r--chart2/qa/extras/chart2dump/reference/pivotchartdatabuttontest/pivotchart_data_button.txt2
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_and_points.txt250
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_only.txt58
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_points_only.txt198
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_and_points.txt310
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_only.txt58
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_points_only.txt258
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_and_points.txt310
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_only.txt58
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_points_only.txt258
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_and_points.txt310
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_only.txt58
-rw-r--r--chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_points_only.txt258
110 files changed, 7102 insertions, 0 deletions
diff --git a/chart2/qa/extras/chart2dump/chart2dump.cxx b/chart2/qa/extras/chart2dump/chart2dump.cxx
new file mode 100644
index 0000000000..d13d768c03
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/chart2dump.cxx
@@ -0,0 +1,1122 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <charttest.hxx>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/drawing/HomogenMatrix3.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+
+#include <editeng/unoprnms.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+
+#include <fstream>
+#include <string_view>
+
+#if defined(X86)
+#define INT_EPS 2.1
+#else
+#define INT_EPS 0.1
+#endif
+
+#define DECLARE_DUMP_TEST(TestName, BaseClass, DumpMode) \
+ class TestName : public BaseClass { \
+ protected:\
+ virtual OUString getTestName() override { return #TestName; } \
+ public:\
+ TestName() : BaseClass(DumpMode) {}; \
+ CPPUNIT_TEST_SUITE(TestName); \
+ CPPUNIT_TEST(verify); \
+ CPPUNIT_TEST_SUITE_END(); \
+ virtual void verify() override;\
+ };\
+ CPPUNIT_TEST_SUITE_REGISTRATION(TestName); \
+ void TestName::verify()
+
+
+#define CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(aActual) \
+ if(isInDumpMode()) \
+ writeActual(OUString::number(aActual), #aActual); \
+ else \
+ { \
+ OString sTestFileName = OUStringToOString(getTestFileName(), RTL_TEXTENCODING_UTF8); \
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(OString("Failing test file is: " + sTestFileName).getStr(), readExpected(u ## #aActual), OUString(OUString::number(aActual))); \
+ }
+
+#define CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aActual, EPS_) \
+ if(isInDumpMode()) \
+ writeActual(OUString::number(aActual), #aActual); \
+ else \
+ { \
+ OString sTestFileName = OUStringToOString(getTestFileName(), RTL_TEXTENCODING_UTF8); \
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(OString("Failing test file is: " + sTestFileName).getStr(), readExpectedDouble(u ## #aActual), aActual, EPS_); \
+ }
+
+#define CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(aActual) \
+ if(isInDumpMode()) \
+ writeActual(aActual, #aActual); \
+ else \
+ { \
+ OString sTestFileName = OUStringToOString(getTestFileName(), RTL_TEXTENCODING_UTF8); \
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(OString("Failing test file is: " + sTestFileName).getStr(), readExpected(u ## #aActual), aActual.trim()); \
+ }
+
+#define CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aActual, EPS_) \
+ if(isInDumpMode()) \
+ writeActualTransformation(aActual, #aActual); \
+ else \
+ { \
+ OUString expectedTransform; \
+ if (!readAndCheckTransformation (aActual, u ## #aActual, EPS_, expectedTransform)) \
+ { \
+ OString sTestFileName = OUStringToOString(getTestFileName(), RTL_TEXTENCODING_UTF8); \
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(OString("Failing test file is: " + sTestFileName).getStr(), expectedTransform, transformationToOneLineString(aActual)); \
+ } \
+ }
+
+class Chart2DumpTest : public ChartTest
+{
+protected:
+ Chart2DumpTest(bool bDumpMode)
+ : ChartTest("/chart2/qa/extras/chart2dump/data/")
+ {
+ m_bDumpMode = bDumpMode;
+ }
+
+ virtual ~Chart2DumpTest() override
+ {
+ }
+
+ void CPPUNIT_DUMP_ASSERT_NOTE(OUString const & Note) {
+ if(isInDumpMode())
+ writeNote(Note);
+ else
+ readNote(Note);
+ }
+
+ bool isInDumpMode () const {return m_bDumpMode;}
+
+ virtual OUString getTestName() { return OUString(); }
+ OUString const & getTestFileName() const { return m_sTestFileName; }
+ OUString getReferenceDirName()
+ {
+ return "/chart2/qa/extras/chart2dump/reference/" + getTestName().toAsciiLowerCase() + "/";
+ }
+
+ void setTestFileName (const OUString& sName)
+ {
+ m_sTestFileName = sName;
+
+ OUString sFileName = m_sTestFileName;
+ assert(sFileName.lastIndexOf('.') < sFileName.getLength());
+ sFileName = OUString::Concat(sFileName.subView(0, sFileName.lastIndexOf('.'))) + ".txt";
+ if (!m_bDumpMode)
+ {
+ if (m_aReferenceFile.is_open())
+ m_aReferenceFile.close();
+ OString sReferenceFile = OUStringToOString(Concat2View(m_directories.getPathFromSrc(getReferenceDirName()) + sFileName), RTL_TEXTENCODING_UTF8);
+ m_aReferenceFile.open(sReferenceFile.getStr(), std::ios_base::in);
+ CPPUNIT_ASSERT_MESSAGE(OString("Can't open reference file: " + sReferenceFile).getStr(), m_aReferenceFile.is_open());
+ }
+ else
+ {
+ if (m_aDumpFile.is_open())
+ m_aDumpFile.close();
+ OString sDumpFile = OUStringToOString(Concat2View(m_directories.getPathFromSrc(getReferenceDirName()) + sFileName), RTL_TEXTENCODING_UTF8);
+ m_aDumpFile.open(sDumpFile.getStr(), std::ios_base::out | std::ofstream::binary | std::ofstream::trunc);
+ CPPUNIT_ASSERT_MESSAGE(OString("Can't open dump file: " + sDumpFile).getStr(), m_aDumpFile.is_open());
+ }
+ }
+
+ virtual void verify()
+ {
+ CPPUNIT_FAIL("verify method must be overridden");
+ }
+
+ OUString readExpected(std::u16string_view sCheck)
+ {
+ assert(!m_bDumpMode);
+ assert(m_aReferenceFile.is_open());
+ std::string sTemp;
+ getline(m_aReferenceFile, sTemp);
+ OString sAssertMessage =
+ "The reference file does not contain the right content. Maybe it needs an update:"
+ + OUStringToOString(m_sTestFileName, RTL_TEXTENCODING_UTF8);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sAssertMessage.getStr(), OUString(OUString::Concat("// ") + sCheck), OUString(sTemp.data(), sTemp.length(), RTL_TEXTENCODING_UTF8));
+ getline(m_aReferenceFile, sTemp);
+ return OUString(sTemp.data(), sTemp.length(), RTL_TEXTENCODING_UTF8);
+ }
+
+ void writeActual(std::u16string_view sActualValue, const OUString& sCheck)
+ {
+ assert(m_bDumpMode);
+ assert(m_aDumpFile.is_open());
+ m_aDumpFile << "// " << sCheck << "\n"; // Add check string to make dump file readable
+ m_aDumpFile << OUString(sActualValue) << "\n"; // Write out the checked value, will be used as reference later
+ }
+
+ void readNote(std::u16string_view sNote)
+ {
+ assert(!m_bDumpMode);
+ assert(m_aReferenceFile.is_open());
+ std::string sTemp;
+ getline(m_aReferenceFile, sTemp);
+ OString sAssertMessage =
+ "The reference file does not contain the right content. Maybe it needs an update:"
+ + OUStringToOString(m_sTestFileName, RTL_TEXTENCODING_UTF8);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sAssertMessage.getStr(), OUString(OUString::Concat("/// ") + sNote), OUString(sTemp.data(), sTemp.length(), RTL_TEXTENCODING_UTF8));
+ }
+
+ void writeNote(const OUString& sNote)
+ {
+ assert(m_bDumpMode);
+ assert(m_aDumpFile.is_open());
+ m_aDumpFile << "/// " << sNote << "\n";
+ }
+
+ double readExpectedDouble(std::u16string_view sCheck)
+ {
+ OUString sExpected = readExpected(sCheck);
+ return sExpected.toDouble();
+ }
+
+ void writeActualTransformation(const drawing::HomogenMatrix3& rTransform, const OUString& sCheck)
+ {
+ writeActual(transformationToOneLineString(rTransform), sCheck);
+ }
+
+ bool readAndCheckTransformation(const drawing::HomogenMatrix3& rTransform, std::u16string_view sCheck, const double fEPS, OUString& rExpectedTransform)
+ {
+ rExpectedTransform = readExpected(sCheck); // Reference transformation string
+
+ // Convert string back to a transformation;
+ drawing::HomogenMatrix3 aExpectedTransform;
+ sal_Int32 nIdx {0};
+ aExpectedTransform.Line1.Column1 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line1.Column2 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line1.Column3 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line2.Column1 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line2.Column2 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line2.Column3 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line3.Column1 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line3.Column2 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+ aExpectedTransform.Line3.Column3 = o3tl::toDouble(o3tl::getToken(rExpectedTransform, 0, ';', nIdx));
+
+ // Check the equality of the two transformation
+ return (std::abs(aExpectedTransform.Line1.Column1 - rTransform.Line1.Column1) < fEPS &&
+ std::abs(aExpectedTransform.Line1.Column2 - rTransform.Line1.Column2) < fEPS &&
+ std::abs(aExpectedTransform.Line1.Column3 - rTransform.Line1.Column3) < fEPS &&
+ std::abs(aExpectedTransform.Line2.Column1 - rTransform.Line2.Column1) < fEPS &&
+ std::abs(aExpectedTransform.Line2.Column2 - rTransform.Line2.Column2) < fEPS &&
+ std::abs(aExpectedTransform.Line2.Column3 - rTransform.Line2.Column3) < fEPS &&
+ std::abs(aExpectedTransform.Line3.Column1 - rTransform.Line3.Column1) < fEPS &&
+ std::abs(aExpectedTransform.Line3.Column2 - rTransform.Line3.Column2) < fEPS &&
+ std::abs(aExpectedTransform.Line3.Column3 - rTransform.Line3.Column3) < fEPS);
+ }
+
+ OUString sequenceToOneLineString(const uno::Sequence<OUString>& rSeq)
+ {
+ OUStringBuffer aBuffer;
+ for (const OUString& seqItem : rSeq)
+ {
+ aBuffer.append(seqItem + ";");
+ }
+ return aBuffer.makeStringAndClear();
+ }
+
+ OUString doubleVectorToOneLineString(const std::vector<double>& rVector)
+ {
+ OUStringBuffer aBuffer;
+ for (const double& vectorItem : rVector)
+ {
+ aBuffer.append(OUString::number(vectorItem) + ";");
+ }
+ return aBuffer.makeStringAndClear();
+ }
+
+ OUString transformationToOneLineString(const drawing::HomogenMatrix3& rTransform)
+ {
+ return OUString::number(rTransform.Line1.Column1) + ";" + OUString::number(rTransform.Line1.Column2) + ";" + OUString::number(rTransform.Line1.Column3) + ";" +
+ OUString::number(rTransform.Line2.Column1) + ";" + OUString::number(rTransform.Line2.Column2) + ";" + OUString::number(rTransform.Line2.Column3) + ";" +
+ OUString::number(rTransform.Line3.Column1) + ";" + OUString::number(rTransform.Line3.Column2) + ";" + OUString::number(rTransform.Line3.Column3);
+ }
+
+private:
+ OUString m_sTestFileName;
+ bool m_bDumpMode;
+ std::ifstream m_aReferenceFile;
+ std::ofstream m_aDumpFile;
+};
+
+DECLARE_DUMP_TEST(ChartDataTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "simple_chart.ods",
+ "multiple_categories.ods"
+ };
+
+ for (const OUString& aTestFile : aTestFiles)
+ {
+ setTestFileName(aTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc (getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW);
+
+ // Check title
+ uno::Reference< chart2::XChartDocument > xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ if(xTitle.is())
+ {
+ OUString sChartTitle = getTitleString(xTitled);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sChartTitle);
+ }
+
+ // Check chart type
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc2, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+ OUString sChartType = xChartType->getChartType();
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sChartType);
+
+ // Check axis titles and number format
+ // x Axis
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc2, 0, 0, 0);
+ Reference<chart2::XTitled> xAxisTitled(xAxis, UNO_QUERY_THROW);
+ uno::Reference<chart2::XTitle> xAxisTitle = xAxisTitled->getTitleObject();
+ if (xAxisTitle.is())
+ {
+ OUString sXAxisTitle = getTitleString(xAxisTitled);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sXAxisTitle);
+ }
+ sal_Int32 nXAxisNumberFormat = getNumberFormatFromAxis(xAxis);
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nXAxisNumberFormat);
+ sal_Int16 nXAxisNumberType = getNumberFormatType(xChartDoc2, nXAxisNumberFormat);
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nXAxisNumberType);
+
+ // y Axis
+ xAxis.set(getAxisFromDoc(xChartDoc2, 0, 1, 0));
+ xAxisTitled.set(xAxis, UNO_QUERY_THROW);
+ xAxisTitle.set(xAxisTitled->getTitleObject());
+ if (xAxisTitle.is())
+ {
+ OUString sYAxisTitle = getTitleString(xAxisTitled);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sYAxisTitle);
+ }
+ sal_Int32 nYAxisNumberFormat = getNumberFormatFromAxis(xAxis);
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nYAxisNumberFormat);
+ sal_Int16 nYAxisNumberType = getNumberFormatType(xChartDoc2, nYAxisNumberFormat);
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nYAxisNumberType);
+
+ // Check column labels
+ uno::Reference< chart::XChartDataArray > xChartData(xChartDoc->getData(), UNO_QUERY_THROW);
+ uno::Sequence < OUString > aColumnLabels = xChartData->getColumnDescriptions();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(aColumnLabels.getLength());
+ OUString sColumnLabels = sequenceToOneLineString(aColumnLabels);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sColumnLabels);
+
+ // Check row labels
+ uno::Sequence< OUString > aRowLabels = xChartData->getRowDescriptions();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(aRowLabels.getLength());
+ OUString sRowLabels = sequenceToOneLineString(aRowLabels);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sRowLabels);
+
+ // Check Y values
+ std::vector<std::vector<double> > aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(aDataSeriesYValues.size());
+ for (const std::vector<double>& aYValuesOfSeries : aDataSeriesYValues)
+ {
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(aYValuesOfSeries.size());
+ OUString sYValuesOfSeries = doubleVectorToOneLineString(aYValuesOfSeries);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sYValuesOfSeries);
+ }
+
+ // Check source ranges
+ for (size_t nIndex = 0; nIndex < aDataSeriesYValues.size(); ++nIndex)
+ {
+ Reference< chart2::data::XDataSequence > xDataSeq = getDataSequenceFromDocByRole(xChartDoc2, u"values-x", nIndex);
+ if (xDataSeq.is())
+ {
+ OUString aXValuesSourceRange = xDataSeq->getSourceRangeRepresentation();
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(aXValuesSourceRange);
+ }
+ xDataSeq.set(getDataSequenceFromDocByRole(xChartDoc2, u"values-y", nIndex));
+ if (xDataSeq.is())
+ {
+ OUString aYValuesSourceRange = xDataSeq->getSourceRangeRepresentation();
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(aYValuesSourceRange);
+ }
+ xDataSeq.set(getDataSequenceFromDocByRole(xChartDoc2, u"categories", nIndex));
+ if (xDataSeq.is())
+ {
+ OUString aCategoriesSourceRange = xDataSeq->getSourceRangeRepresentation();
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(aCategoriesSourceRange);
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(LegendTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "legend_on_right_side.odp",
+ "legend_on_bottom.odp",
+ "legend_on_left_side.odp",
+ "legend_on_top.odp",
+ "many_legend_entries.odp",
+ "custom_legend_position.odp",
+ "multiple_categories.odp",
+ "minimal_legend_test.odp"
+ };
+
+ for (const OUString& aTestFile : aTestFiles)
+ {
+ setTestFileName(aTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0, 0), UNO_SET_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ // Get legend shape
+ uno::Reference<drawing::XShape> xLegend = getShapeByName(xShapes, "CID/D=0:Legend=");
+ CPPUNIT_ASSERT(xLegend.is());
+
+ /* Check legend position and size
+ awt::Point aLegendPosition = xLegend->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendPosition.Y, INT_EPS);
+ awt::Size aLegendSize = xLegend->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendSize.Width, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendSize.Height, INT_EPS);*/
+
+ // Check legend entries
+ uno::Reference< chart2::XChartDocument > xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc2, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+ std::vector<std::vector<double> > aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ size_t nLegendEntryCount = aDataSeriesYValues.size();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nLegendEntryCount);
+ // Check legend entries geometry
+ for (size_t nSeriesIndex = 0; nSeriesIndex < nLegendEntryCount; ++nSeriesIndex)
+ {
+ uno::Reference<drawing::XShape> xLegendEntry = getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=" + OUString::number(nSeriesIndex) + ":LegendEntry=0");
+ CPPUNIT_ASSERT(xLegendEntry.is());
+
+ /* Check position and size
+ awt::Point aLegendEntryPosition = xLegendEntry->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendEntryPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendEntryPosition.Y, INT_EPS);
+ awt::Size aLegendEntrySize = xLegendEntry->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendEntrySize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLegendEntrySize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xLegendEntryPropSet(xLegendEntry, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aLegendEntryTransformation;
+ xLegendEntryPropSet->getPropertyValue("Transformation") >>= aLegendEntryTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aLegendEntryTransformation, INT_EPS);*/
+
+ uno::Reference<container::XIndexAccess> xLegendEntryContainer(xLegendEntry, UNO_QUERY_THROW);
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(xLegendEntryContainer->getCount());
+ for (sal_Int32 nEntryGeometryElement = 1; nEntryGeometryElement < xLegendEntryContainer->getCount(); ++nEntryGeometryElement)
+ {
+ uno::Reference<drawing::XShape> xLegendEntryGeom(xLegendEntryContainer->getByIndex(nEntryGeometryElement), UNO_QUERY_THROW);
+
+ // Check geometry
+ uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xLegendEntryGeom, uno::UNO_QUERY_THROW);
+ OUString sEntryGeomShapeType = xShapeDescriptor->getShapeType();
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sEntryGeomShapeType);
+
+ // Check display color
+ Reference< beans::XPropertySet > xPropSet(xLegendEntryGeom, UNO_QUERY_THROW);
+ util::Color aEntryGeomColor = 0;
+ xPropSet->getPropertyValue(UNO_NAME_FILLCOLOR) >>= aEntryGeomColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aEntryGeomColor));
+ }
+ }
+ // Check legend entries' text
+ uno::Reference<container::XIndexAccess> xLegendContainer(xLegend, UNO_QUERY_THROW);
+ for (sal_Int32 i = 0; i < xLegendContainer->getCount(); ++i)
+ {
+ uno::Reference<drawing::XShape> xShape(xLegendContainer->getByIndex(i), uno::UNO_QUERY);
+ uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xShape, uno::UNO_QUERY_THROW);
+ OUString sShapeType = xShapeDescriptor->getShapeType();
+
+ if (sShapeType == "com.sun.star.drawing.TextShape")
+ {
+ uno::Reference<text::XText> xLegendEntryText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY_THROW)->getText();
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(xLegendEntryText->getString());
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(GridTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "vertical_grid.ods",
+ "horizontal_grid.ods",
+ "minor_grid.ods",
+ "formated_grid_line.ods"
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ const std::vector<OUString> aGridShapeNames =
+ {
+ "CID/D=0:CS=0:Axis=1,0:Grid=0", // Major vertical grid
+ "CID/D=0:CS=0:Axis=0,0:Grid=0", // Major horizontal grid
+ "CID/D=0:CS=0:Axis=1,0:Grid=0:SubGrid=0", // Minor vertical grid
+ "CID/D=0:CS=0:Axis=0,0:Grid=0:SubGrid=0" // Minor horizontal grid
+ };
+
+ for (const OUString& sGridShapeName : aGridShapeNames)
+ {
+ uno::Reference<drawing::XShape> xGrid = getShapeByName(xShapes, sGridShapeName);
+ if (xGrid.is())
+ {
+ CPPUNIT_DUMP_ASSERT_NOTE(sGridShapeName);
+ // Check position and size
+ awt::Point aGridPosition = xGrid->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aGridPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aGridPosition.Y, INT_EPS);
+ awt::Size aGridSize = xGrid->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aGridSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aGridSize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xGrid, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aGridTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aGridTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aGridTransformation, INT_EPS);
+
+ // Check line properties
+ uno::Reference<container::XIndexAccess> xIndexAccess(xGrid, UNO_QUERY_THROW);
+ uno::Reference<drawing::XShape> xGridLine(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
+ Reference< beans::XPropertySet > xGridLinePropSet(xGridLine, UNO_QUERY_THROW);
+ // Line type
+ drawing::LineDash aLineDash;
+ xGridLinePropSet->getPropertyValue("LineDash") >>= aLineDash;
+ OUString sGridLineDash =
+ OUString::number(static_cast<sal_Int32>(aLineDash.Style)) + ";" + OUString::number(aLineDash.Dots) + ";" + OUString::number(aLineDash.DotLen) +
+ OUString::number(aLineDash.Dashes) + ";" + OUString::number(aLineDash.DashLen) + ";" + OUString::number(aLineDash.Distance);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sGridLineDash);
+ // Line color
+ util::Color aLineColor = 0;
+ xGridLinePropSet->getPropertyValue("LineColor") >>= aLineColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aLineColor));
+ // Line width
+ sal_Int32 nLineWidth = 0;
+ xGridLinePropSet->getPropertyValue("LineWidth") >>= nLineWidth;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nLineWidth);
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(AxisGeometryTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "default_formated_axis.odp",
+ "axis_special_positioning.odp",
+ "formated_axis_lines.odp",
+ "rotated_axis_labels.odp"
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0, 0), UNO_SET_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ const std::vector<OUString> aAxisShapeNames =
+ {
+ "CID/D=0:CS=0:Axis=0,0", // X Axis
+ "CID/D=0:CS=0:Axis=1,0", // Y Axis
+ };
+
+ for (const OUString& sAxisShapeName : aAxisShapeNames)
+ {
+ uno::Reference<drawing::XShape> xXAxis = getShapeByName(xShapes, sAxisShapeName);
+ CPPUNIT_ASSERT(xXAxis.is());
+
+ CPPUNIT_DUMP_ASSERT_NOTE(sAxisShapeName);
+ // Check position and size
+ awt::Point aAxisPosition = xXAxis->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAxisPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAxisPosition.Y, INT_EPS);
+ awt::Size aAxisSize = xXAxis->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAxisSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAxisSize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xXAxis, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aAxisTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aAxisTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aAxisTransformation, INT_EPS);
+
+ // Check line properties
+ uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW);
+ sal_Int32 nAxisGeometriesCount = xIndexAccess->getCount();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nAxisGeometriesCount);
+ uno::Reference<drawing::XShape> xAxisLine(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
+ Reference< beans::XPropertySet > xAxisLinePropSet(xAxisLine, UNO_QUERY_THROW);
+ // Line type
+ drawing::LineDash aLineDash;
+ xAxisLinePropSet->getPropertyValue("LineDash") >>= aLineDash;
+ OUString sAxisLineDash =
+ OUString::number(static_cast<sal_Int32>(aLineDash.Style)) + ";" + OUString::number(aLineDash.Dots) + ";" + OUString::number(aLineDash.DotLen) +
+ OUString::number(aLineDash.Dashes) + ";" + OUString::number(aLineDash.DashLen) + ";" + OUString::number(aLineDash.Distance);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sAxisLineDash);
+ // Line color
+ util::Color aAxisLineColor = 0;
+ xAxisLinePropSet->getPropertyValue("LineColor") >>= aAxisLineColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aAxisLineColor));
+ // Line width
+ sal_Int32 nAxisLineWidth = 0;
+ xAxisLinePropSet->getPropertyValue("LineWidth") >>= nAxisLineWidth;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nAxisLineWidth);
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(AxisLabelTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "default_formated_axis.odp",
+ "rotated_axis_labels.odp",
+ "formated_axis_labels.odp",
+ "percent_stacked_column_chart.odp",
+ "tdf118150.xlsx",
+ "date-categories.pptx",
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0, 0), UNO_SET_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ const std::vector<OUString> aAxisShapeNames =
+ {
+ "CID/D=0:CS=0:Axis=0,0", // X Axis
+ "CID/D=0:CS=0:Axis=1,0", // Y Axis
+ };
+
+ for (const OUString& sAxisShapeName : aAxisShapeNames)
+ {
+ uno::Reference<drawing::XShape> xXAxis = getShapeByName(xShapes, sAxisShapeName,
+ // Axis occurs twice in chart xshape representation so need to get the one related to labels
+ [](const uno::Reference<drawing::XShape>& rXShape) -> bool
+ {
+ uno::Reference<drawing::XShapes> xAxisShapes(rXShape, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xAxisShapes.is());
+ uno::Reference<drawing::XShape> xChildShape(xAxisShapes->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference< drawing::XShapeDescriptor > xShapeDescriptor(xChildShape, uno::UNO_QUERY_THROW);
+ return (xShapeDescriptor->getShapeType() == "com.sun.star.drawing.TextShape");
+ });
+ CPPUNIT_ASSERT(xXAxis.is());
+ CPPUNIT_DUMP_ASSERT_NOTE(sAxisShapeName);
+
+ // Check label count
+ uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW);
+ sal_Int32 nAxisLabelsCount = xIndexAccess->getCount();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nAxisLabelsCount);
+
+ // Check labels's text, positioning and font properties
+ for (sal_Int32 nLabelIndex = 0; nLabelIndex < nAxisLabelsCount; ++nLabelIndex)
+ {
+ // Check text
+ uno::Reference<text::XTextRange> xLabel(xIndexAccess->getByIndex(nLabelIndex), uno::UNO_QUERY);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(xLabel->getString());
+
+ // Check size and position
+ uno::Reference<drawing::XShape> xLabelShape(xLabel, uno::UNO_QUERY);
+ /*awt::Point aLabelPosition = xLabelShape->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLabelPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLabelPosition.Y, INT_EPS);
+ awt::Size aLabelSize = xLabelShape->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLabelSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLabelSize.Width, INT_EPS);*/
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xLabelShape, UNO_QUERY_THROW);
+ /*drawing::HomogenMatrix3 aLabelTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aLabelTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aLabelTransformation, INT_EPS);*/
+
+ // Check font color and height
+ util::Color aLabelFontColor = 0;
+ xPropSet->getPropertyValue("CharColor") >>= aLabelFontColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aLabelFontColor));
+ float fLabelFontHeight = 0.0f;
+ xPropSet->getPropertyValue("CharHeight") >>= fLabelFontHeight;
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(fLabelFontHeight, 1E-12);
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(ColumnBarChartTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "normal_column_chart.ods",
+ "stacked_column_chart.ods",
+ "percent_stacked_column_chart.ods",
+ "column_chart_small_spacing.ods",
+ "normal_bar_chart.ods",
+ "stacked_bar_chart.ods",
+ "percent_stacked_bar_chart.ods",
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ uno::Reference< chart2::XChartDocument > xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc2, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+ std::vector<std::vector<double> > aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ size_t nSeriesCount = aDataSeriesYValues.size();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nSeriesCount);
+
+ for (size_t nSeries = 0; nSeries < nSeriesCount; ++nSeries)
+ {
+ uno::Reference<drawing::XShape> xSeriesColumnsOrBars = getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=" + OUString::number(nSeries));
+ CPPUNIT_ASSERT(xSeriesColumnsOrBars.is());
+ CPPUNIT_DUMP_ASSERT_NOTE("Series " + OUString::number(nSeries) + " ColumnsOrBars");
+
+ // Check column/bar count in the series
+ uno::Reference<container::XIndexAccess> xIndexAccess(xSeriesColumnsOrBars, UNO_QUERY_THROW);
+ sal_Int32 nColumnOrBarCountInSeries = xIndexAccess->getCount();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nColumnOrBarCountInSeries);
+
+ // Check column/bar fill style and color
+ Reference< beans::XPropertySet > xColumnOrBarPropSet(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
+ drawing::FillStyle aSeriesColumnOrBarFillStyle;
+ xColumnOrBarPropSet->getPropertyValue(UNO_NAME_FILLSTYLE) >>= aSeriesColumnOrBarFillStyle;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle));
+ util::Color aSeriesColumnOrBarFillColor = 0;
+ xColumnOrBarPropSet->getPropertyValue(UNO_NAME_FILLCOLOR) >>= aSeriesColumnOrBarFillColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aSeriesColumnOrBarFillColor));
+
+ for (sal_Int32 nColumnOrBar = 0; nColumnOrBar < nColumnOrBarCountInSeries; ++nColumnOrBar)
+ {
+ uno::Reference<drawing::XShape> xColumnOrBar(xIndexAccess->getByIndex(nColumnOrBar), UNO_QUERY_THROW);
+ uno::Reference<container::XNamed> xNamedShape(xIndexAccess->getByIndex(nColumnOrBar), uno::UNO_QUERY);
+ CPPUNIT_DUMP_ASSERT_NOTE(xNamedShape->getName());
+
+ // Check size and position
+ awt::Point aColumnOrBarPosition = xColumnOrBar->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aColumnOrBarPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aColumnOrBarPosition.Y, INT_EPS);
+ awt::Size aColumnOrBarSize = xColumnOrBar->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aColumnOrBarSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aColumnOrBarSize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xColumnOrBar, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aColumnOrBarTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aColumnOrBarTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aColumnOrBarTransformation, INT_EPS);
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(ChartWallTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "chartwall_auto_adjust_with_titles.ods",
+ "chartwall_auto_adjust_without_titles.ods",
+ "chartwall_custom_positioning.ods"
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0, 0), UNO_SET_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall=");
+ CPPUNIT_ASSERT(xChartWall.is());
+
+ // Check position and size
+ /*awt::Point aChartWallPosition = xChartWall->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aChartWallPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aChartWallPosition.Y, INT_EPS);
+ awt::Size aChartWallSize = xChartWall->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aChartWallSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aChartWallSize.Width, INT_EPS);*/
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xChartWall, UNO_QUERY_THROW);
+ /*drawing::HomogenMatrix3 aChartWallTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aChartWallTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aChartWallTransformation, INT_EPS);*/
+
+ // Check fill properties
+ drawing::FillStyle aChartWallFillStyle;
+ xPropSet->getPropertyValue(UNO_NAME_FILLSTYLE) >>= aChartWallFillStyle;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aChartWallFillStyle));
+ util::Color aChartWallFillColor = 0;
+ xPropSet->getPropertyValue(UNO_NAME_FILLCOLOR) >>= aChartWallFillColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aChartWallFillColor));
+
+ // Check line properties
+ // Line type
+ drawing::LineDash aLineDash;
+ xPropSet->getPropertyValue("LineDash") >>= aLineDash;
+ OUString sChartWallLineDash =
+ OUString::number(static_cast<sal_Int32>(aLineDash.Style)) + ";" + OUString::number(aLineDash.Dots) + ";" + OUString::number(aLineDash.DotLen) +
+ OUString::number(aLineDash.Dashes) + ";" + OUString::number(aLineDash.DashLen) + ";" + OUString::number(aLineDash.Distance);
+ CPPUNIT_DUMP_ASSERT_STRINGS_EQUAL(sChartWallLineDash);
+ // Line color
+ util::Color aChartWallLineColor = 0;
+ xPropSet->getPropertyValue("LineColor") >>= aChartWallLineColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aChartWallLineColor));
+ // Line width
+ sal_Int32 nChartWallLineWidth = 0;
+ xPropSet->getPropertyValue("LineWidth") >>= nChartWallLineWidth;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nChartWallLineWidth);
+ }
+}
+
+DECLARE_DUMP_TEST(PieChartTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "normal_pie_chart.ods",
+ "rotated_pie_chart.ods",
+ "exploded_pie_chart.ods",
+ "donut_chart.ods",
+ "pie_chart_many_slices.ods",
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ uno::Reference< chart2::XChartDocument > xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc2, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+
+ std::vector<std::vector<double> > aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ size_t nSeriesCount = aDataSeriesYValues.size();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nSeriesCount);
+
+ for (size_t nSeries = 0; nSeries < nSeriesCount; ++nSeries)
+ {
+ uno::Reference<drawing::XShape> xSeriesSlices = getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=" + OUString::number(nSeries));
+ if (!xSeriesSlices.is())
+ break; // Normal pie chart displays only one series
+ CPPUNIT_DUMP_ASSERT_NOTE("Series " + OUString::number(nSeries) + " slices");
+
+ // Check slice count in the series
+ uno::Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
+ sal_Int32 nSlicesCountInSeries = xIndexAccess->getCount();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nSlicesCountInSeries);
+
+ // Check slices properties
+ for (sal_Int32 nSlice = 0; nSlice < nSlicesCountInSeries; ++nSlice)
+ {
+ uno::Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(nSlice), UNO_QUERY_THROW);
+ uno::Reference<container::XNamed> xNamedShape(xIndexAccess->getByIndex(nSlice), uno::UNO_QUERY);
+ OUString sName = xNamedShape->getName();
+ CPPUNIT_DUMP_ASSERT_NOTE(sName.copy(sName.lastIndexOf("/D=0")));
+
+ // Check size and position
+ awt::Point aSlicePosition = xSlice->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aSlicePosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aSlicePosition.Y, INT_EPS);
+ awt::Size aSliceSize = xSlice->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aSliceSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aSliceSize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xSlice, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aSliceTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aSliceTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aSliceTransformation, INT_EPS);
+
+ // Check slice fill style and color
+ drawing::FillStyle aSliceFillStyle;
+ xPropSet->getPropertyValue(UNO_NAME_FILLSTYLE) >>= aSliceFillStyle;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aSliceFillStyle));
+ util::Color aSliceFillColor = 0;
+ xPropSet->getPropertyValue(UNO_NAME_FILLCOLOR) >>= aSliceFillColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aSliceFillColor));
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST(AreaChartTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "normal_area_chart.ods",
+ "stacked_area_chart.ods",
+ "percent_stacked_area_chart.ods"
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ uno::Reference< chart2::XChartDocument > xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc2, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+
+ std::vector<std::vector<double> > aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ size_t nSeriesCount = aDataSeriesYValues.size();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nSeriesCount);
+
+ for (size_t nSeries = 0; nSeries < nSeriesCount; ++nSeries)
+ {
+ uno::Reference<drawing::XShape> xSeries = getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=" + OUString::number(nSeries));
+ CPPUNIT_ASSERT(xSeries.is());
+ CPPUNIT_DUMP_ASSERT_NOTE("Series " + OUString::number(nSeries));
+
+ // One area for one series
+ uno::Reference<container::XIndexAccess> xIndexAccess(xSeries, UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xIndexAccess2(xIndexAccess->getByIndex(0), UNO_QUERY_THROW); // Why this second group shape is here?
+ uno::Reference<drawing::XShape> xArea(xIndexAccess2->getByIndex(0), UNO_QUERY_THROW);
+
+ // Check size and position
+ awt::Point aAreaPosition = xArea->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAreaPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAreaPosition.Y, INT_EPS);
+ awt::Size aAreaSize = xArea->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAreaSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aAreaSize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPropSet(xArea, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aAreaTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aAreaTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aAreaTransformation, INT_EPS);
+
+ // Check area fill style and color
+ drawing::FillStyle aAreaFillStyle;
+ xPropSet->getPropertyValue(UNO_NAME_FILLSTYLE) >>= aAreaFillStyle;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aAreaFillStyle));
+ util::Color aAreaFillColor = 0;
+ xPropSet->getPropertyValue(UNO_NAME_FILLCOLOR) >>= aAreaFillColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aAreaFillColor));
+ }
+ }
+}
+
+
+DECLARE_DUMP_TEST(PointLineChartTest, Chart2DumpTest, false)
+{
+ const std::vector<OUString> aTestFiles =
+ {
+ "normal_line_chart_lines_only.ods",
+ "normal_line_chart_points_only.ods",
+ "normal_line_chart_lines_and_points.ods",
+ "stacked_line_chart_lines_only.ods",
+ "stacked_line_chart_points_only.ods",
+ "stacked_line_chart_lines_and_points.ods",
+ "percent_stacked_line_chart_lines_only.ods",
+ "percent_stacked_line_chart_points_only.ods",
+ "percent_stacked_line_chart_lines_and_points.ods",
+ "scatter_chart_points_only.ods",
+ "scatter_chart_lines_only.ods",
+ "scatter_chart_lines_and_points.ods",
+ };
+
+ for (const OUString& sTestFile : aTestFiles)
+ {
+ setTestFileName(sTestFile);
+ loadFromFile(getTestFileName());
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartDocFromSheet(0, mxComponent), UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapes.is());
+
+ uno::Reference< chart2::XChartDocument > xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc2, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+
+ std::vector<std::vector<double> > aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ size_t nSeriesCount = aDataSeriesYValues.size();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nSeriesCount);
+
+ for (size_t nSeries = 0; nSeries < nSeriesCount; ++nSeries)
+ {
+ uno::Reference<drawing::XShape> xSeries = getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=" + OUString::number(nSeries));
+ CPPUNIT_ASSERT(xSeries.is());
+ CPPUNIT_DUMP_ASSERT_NOTE("Series " + OUString::number(nSeries));
+
+ uno::Reference<container::XIndexAccess> xIndexAccess(xSeries, UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xIndexAccess2(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
+ uno::Reference<drawing::XShape> xLine(xIndexAccess2->getByIndex(0), UNO_QUERY_THROW);
+ Reference< beans::XPropertySet > xPropSet(xLine, UNO_QUERY_THROW);
+
+ // Check whether we have line
+ drawing::LineStyle aSeriesLineStyle;
+ xPropSet->getPropertyValue(UNO_NAME_LINESTYLE) >>= aSeriesLineStyle;
+ if (aSeriesLineStyle != drawing::LineStyle_NONE)
+ {
+ CPPUNIT_DUMP_ASSERT_NOTE("Lines are displayed");
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aSeriesLineStyle));
+
+ // Check line shape geometry
+ awt::Point aLinePosition = xLine->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLinePosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLinePosition.Y, INT_EPS);
+ awt::Size aLineSize = xLine->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLineSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aLineSize.Width, INT_EPS);
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::HomogenMatrix3 aLineTransformation;
+ xPropSet->getPropertyValue("Transformation") >>= aLineTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aLineTransformation, INT_EPS);
+ }
+
+ // Check points of series
+ if (xIndexAccess->getCount() >= 2)
+ {
+ CPPUNIT_DUMP_ASSERT_NOTE("Points are displayed");
+ uno::Reference<container::XIndexAccess> xPointsOfSeries(xIndexAccess->getByIndex(1), UNO_QUERY_THROW);
+ sal_Int32 nPointCountInSeries = xPointsOfSeries->getCount();
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(nPointCountInSeries);
+ for (sal_Int32 nPoint = 0; nPoint < nPointCountInSeries; ++nPoint)
+ {
+ uno::Reference<container::XIndexAccess> XPointContainer (
+ getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=" + OUString::number(nSeries) + ":Point=" + OUString::number(nPoint)), UNO_QUERY_THROW);
+ uno::Reference<drawing::XShape> XPoint(XPointContainer->getByIndex(0), UNO_QUERY_THROW);
+ uno::Reference<container::XNamed> xNamedShape(XPointContainer, uno::UNO_QUERY);
+ CPPUNIT_DUMP_ASSERT_NOTE(xNamedShape->getName());
+
+ // Check size and position
+ awt::Point aPointPosition = XPoint->getPosition();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aPointPosition.X, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aPointPosition.Y, INT_EPS);
+ awt::Size aPointSize = XPoint->getSize();
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aPointSize.Height, INT_EPS);
+ CPPUNIT_DUMP_ASSERT_DOUBLES_EQUAL(aPointSize.Width, INT_EPS);
+
+ // Check transformation
+ Reference< beans::XPropertySet > xPointPropSet(XPoint, UNO_QUERY_THROW);
+ drawing::HomogenMatrix3 aPointTransformation;
+ xPointPropSet->getPropertyValue("Transformation") >>= aPointTransformation;
+ CPPUNIT_DUMP_ASSERT_TRANSFORMATIONS_EQUAL(aPointTransformation, INT_EPS);
+
+ // Check fill style and color
+ drawing::FillStyle aPointFillStyle;
+ xPointPropSet->getPropertyValue(UNO_NAME_FILLSTYLE) >>= aPointFillStyle;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aPointFillStyle));
+ util::Color aPointFillColor = 0;
+ xPointPropSet->getPropertyValue(UNO_NAME_FILLCOLOR) >>= aPointFillColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL(static_cast<sal_Int32>(aPointFillColor));
+ }
+ }
+ }
+ }
+}
+
+DECLARE_DUMP_TEST( PivotChartDataButtonTest, Chart2DumpTest, false )
+{
+ setTestFileName( "pivotchart_data_button.ods" );
+ loadFromFile(getTestFileName());
+
+ // Check that we have pivot chart in the document
+ uno::Reference<table::XTablePivotCharts> xTablePivotCharts = getTablePivotChartsFromSheet( 1, mxComponent );
+ uno::Reference<container::XIndexAccess> xIndexAccess( xTablePivotCharts, UNO_QUERY_THROW );
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(1), xIndexAccess->getCount() );
+
+ // Get the pivot chart document so we ca access its data
+ uno::Reference<chart2::XChartDocument> xChartDoc;
+ xChartDoc.set( getPivotChartDocFromSheet( xTablePivotCharts, 0 ) );
+ CPPUNIT_ASSERT( xChartDoc.is() );
+
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier( xChartDoc, uno::UNO_QUERY );
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShapes> xShapes( xDrawPage->getByIndex(0), uno::UNO_QUERY );
+ CPPUNIT_ASSERT( xShapes.is() );
+
+ // Get the shape that represents the "Data" button.
+ uno::Reference<drawing::XShape> xButton = getShapeByName( xShapes, "FieldButton.Row.8",
+ []( const uno::Reference<drawing::XShape>& xShapeNode )
+ {
+ return xShapeNode->getShapeType() == "com.sun.star.drawing.TextShape";
+ } );
+ CPPUNIT_ASSERT_MESSAGE( "Cannot find Data button shape", xButton.is() );
+
+ // Make sure that there is no arrow shape with the Data button
+ uno::Reference<drawing::XShape> xArrow = getShapeByName( xShapes, "FieldButton.Row.8",
+ []( const uno::Reference<drawing::XShape>& xShapeNode )
+ {
+ return xShapeNode->getShapeType() == "com.sun.star.drawing.PolyPolygonShape";
+ } );
+ CPPUNIT_ASSERT_MESSAGE( "Arrow shape should not be present for the Data button", !xArrow.is() );
+
+ // Assert the background color of the Data button
+ util::Color aButtonFillColor = 0;
+ uno::Reference<beans::XPropertySet> xPropSet( xButton, UNO_QUERY_THROW );
+ xPropSet->getPropertyValue( UNO_NAME_FILLCOLOR ) >>= aButtonFillColor;
+ CPPUNIT_DUMP_ASSERT_NUMBERS_EQUAL( static_cast<sal_Int32>( aButtonFillColor ) );
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2dump/data/axis_special_positioning.odp b/chart2/qa/extras/chart2dump/data/axis_special_positioning.odp
new file mode 100644
index 0000000000..a09ddb893d
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/axis_special_positioning.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_with_titles.ods b/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_with_titles.ods
new file mode 100644
index 0000000000..1b41db316e
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_with_titles.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_without_titles.ods b/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_without_titles.ods
new file mode 100644
index 0000000000..be5b118048
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_without_titles.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.ods b/chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.ods
new file mode 100644
index 0000000000..b6ba872212
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/column_chart_small_spacing.ods b/chart2/qa/extras/chart2dump/data/column_chart_small_spacing.ods
new file mode 100644
index 0000000000..1206a4e198
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/column_chart_small_spacing.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/custom_legend_position.odp b/chart2/qa/extras/chart2dump/data/custom_legend_position.odp
new file mode 100644
index 0000000000..d36677ab49
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/custom_legend_position.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/date-categories.pptx b/chart2/qa/extras/chart2dump/data/date-categories.pptx
new file mode 100644
index 0000000000..b9e0c69f32
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/date-categories.pptx
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/default_formated_axis.odp b/chart2/qa/extras/chart2dump/data/default_formated_axis.odp
new file mode 100644
index 0000000000..a5cdd0522b
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/default_formated_axis.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/donut_chart.ods b/chart2/qa/extras/chart2dump/data/donut_chart.ods
new file mode 100644
index 0000000000..4490f76954
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/donut_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/exploded_pie_chart.ods b/chart2/qa/extras/chart2dump/data/exploded_pie_chart.ods
new file mode 100644
index 0000000000..68a9c98429
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/exploded_pie_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/formated_axis_labels.odp b/chart2/qa/extras/chart2dump/data/formated_axis_labels.odp
new file mode 100644
index 0000000000..a94c8c4d05
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/formated_axis_labels.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/formated_axis_lines.odp b/chart2/qa/extras/chart2dump/data/formated_axis_lines.odp
new file mode 100644
index 0000000000..7a421497b4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/formated_axis_lines.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/formated_grid_line.ods b/chart2/qa/extras/chart2dump/data/formated_grid_line.ods
new file mode 100644
index 0000000000..1d0ef5389f
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/formated_grid_line.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/horizontal_grid.ods b/chart2/qa/extras/chart2dump/data/horizontal_grid.ods
new file mode 100644
index 0000000000..c9f913067b
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/horizontal_grid.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/legend_on_bottom.odp b/chart2/qa/extras/chart2dump/data/legend_on_bottom.odp
new file mode 100644
index 0000000000..b080d33116
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/legend_on_bottom.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/legend_on_left_side.odp b/chart2/qa/extras/chart2dump/data/legend_on_left_side.odp
new file mode 100644
index 0000000000..71e2947c6a
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/legend_on_left_side.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/legend_on_right_side.odp b/chart2/qa/extras/chart2dump/data/legend_on_right_side.odp
new file mode 100644
index 0000000000..7aac4d3f33
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/legend_on_right_side.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/legend_on_top.odp b/chart2/qa/extras/chart2dump/data/legend_on_top.odp
new file mode 100644
index 0000000000..318901f2e4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/legend_on_top.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/many_legend_entries.odp b/chart2/qa/extras/chart2dump/data/many_legend_entries.odp
new file mode 100644
index 0000000000..8f02a99f66
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/many_legend_entries.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/minimal_legend_test.odp b/chart2/qa/extras/chart2dump/data/minimal_legend_test.odp
new file mode 100644
index 0000000000..63911f119c
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/minimal_legend_test.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/minor_grid.ods b/chart2/qa/extras/chart2dump/data/minor_grid.ods
new file mode 100644
index 0000000000..f8f30198b0
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/minor_grid.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/multiple_categories.odp b/chart2/qa/extras/chart2dump/data/multiple_categories.odp
new file mode 100644
index 0000000000..95e51f3f69
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/multiple_categories.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/multiple_categories.ods b/chart2/qa/extras/chart2dump/data/multiple_categories.ods
new file mode 100644
index 0000000000..67e00525b9
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/multiple_categories.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_area_chart.ods b/chart2/qa/extras/chart2dump/data/normal_area_chart.ods
new file mode 100644
index 0000000000..84b9ec2247
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_area_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_bar_chart.ods b/chart2/qa/extras/chart2dump/data/normal_bar_chart.ods
new file mode 100644
index 0000000000..531f406f93
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_bar_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_column_chart.ods b/chart2/qa/extras/chart2dump/data/normal_column_chart.ods
new file mode 100644
index 0000000000..a8c6404001
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_column_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_and_points.ods b/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_and_points.ods
new file mode 100644
index 0000000000..4dd613b6f4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_and_points.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_only.ods b/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_only.ods
new file mode 100644
index 0000000000..c4f57a6f3c
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_line_chart_points_only.ods b/chart2/qa/extras/chart2dump/data/normal_line_chart_points_only.ods
new file mode 100644
index 0000000000..e55b41115e
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_line_chart_points_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/normal_pie_chart.ods b/chart2/qa/extras/chart2dump/data/normal_pie_chart.ods
new file mode 100644
index 0000000000..3c3a6a327f
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/normal_pie_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.ods
new file mode 100644
index 0000000000..0cc5d1728a
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.ods
new file mode 100644
index 0000000000..2d337a5b3d
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odp b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odp
new file mode 100644
index 0000000000..e8180cfc73
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.ods
new file mode 100644
index 0000000000..ce7440aa77
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_and_points.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_and_points.ods
new file mode 100644
index 0000000000..ade9ea8f13
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_and_points.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_only.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_only.ods
new file mode 100644
index 0000000000..3228f51a3f
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_points_only.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_points_only.ods
new file mode 100644
index 0000000000..b2483b6da5
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_points_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/pie_chart_many_slices.ods b/chart2/qa/extras/chart2dump/data/pie_chart_many_slices.ods
new file mode 100644
index 0000000000..2cc2e8b7bb
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/pie_chart_many_slices.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/pivotchart_data_button.ods b/chart2/qa/extras/chart2dump/data/pivotchart_data_button.ods
new file mode 100644
index 0000000000..d57edf66d2
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/pivotchart_data_button.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/rotated_axis_labels.odp b/chart2/qa/extras/chart2dump/data/rotated_axis_labels.odp
new file mode 100644
index 0000000000..24e9cf05b2
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/rotated_axis_labels.odp
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/rotated_pie_chart.ods b/chart2/qa/extras/chart2dump/data/rotated_pie_chart.ods
new file mode 100644
index 0000000000..ee8b3a7d96
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/rotated_pie_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/scatter_chart_lines_and_points.ods b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_and_points.ods
new file mode 100644
index 0000000000..de7b1c67c5
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_and_points.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.ods b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.ods
new file mode 100644
index 0000000000..fed5789927
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/scatter_chart_points_only.ods b/chart2/qa/extras/chart2dump/data/scatter_chart_points_only.ods
new file mode 100644
index 0000000000..dd1626d7a2
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/scatter_chart_points_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/simple_chart.ods b/chart2/qa/extras/chart2dump/data/simple_chart.ods
new file mode 100644
index 0000000000..f65584d12a
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/simple_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/stacked_area_chart.ods b/chart2/qa/extras/chart2dump/data/stacked_area_chart.ods
new file mode 100644
index 0000000000..56bc4e4992
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/stacked_area_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/stacked_bar_chart.ods b/chart2/qa/extras/chart2dump/data/stacked_bar_chart.ods
new file mode 100644
index 0000000000..2e8ca327e4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/stacked_bar_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/stacked_column_chart.ods b/chart2/qa/extras/chart2dump/data/stacked_column_chart.ods
new file mode 100644
index 0000000000..159df229a4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/stacked_column_chart.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_and_points.ods b/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_and_points.ods
new file mode 100644
index 0000000000..d11ecb7058
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_and_points.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_only.ods b/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_only.ods
new file mode 100644
index 0000000000..1652c3a589
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/stacked_line_chart_points_only.ods b/chart2/qa/extras/chart2dump/data/stacked_line_chart_points_only.ods
new file mode 100644
index 0000000000..a85a2abe86
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/stacked_line_chart_points_only.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/tdf118150.xlsx b/chart2/qa/extras/chart2dump/data/tdf118150.xlsx
new file mode 100644
index 0000000000..f29b9a1c2e
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/tdf118150.xlsx
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/data/vertical_grid.ods b/chart2/qa/extras/chart2dump/data/vertical_grid.ods
new file mode 100644
index 0000000000..9f2ed7838a
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/data/vertical_grid.ods
Binary files differ
diff --git a/chart2/qa/extras/chart2dump/reference/areacharttest/normal_area_chart.txt b/chart2/qa/extras/chart2dump/reference/areacharttest/normal_area_chart.txt
new file mode 100644
index 0000000000..4f4a5181fd
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/areacharttest/normal_area_chart.txt
@@ -0,0 +1,62 @@
+// nSeriesCount
+4
+/// Series 0
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+3295
+// aAreaSize.Height
+4052
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;4052;3295;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+1
+// static_cast<sal_Int32>(aAreaFillColor)
+16711680
+/// Series 1
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+3385
+// aAreaSize.Height
+3962
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;3962;3385;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+2
+// static_cast<sal_Int32>(aAreaFillColor)
+10079487
+/// Series 2
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+3345
+// aAreaSize.Height
+4002
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;4002;3345;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+4
+// static_cast<sal_Int32>(aAreaFillColor)
+10079487
+/// Series 3
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+2334
+// aAreaSize.Height
+5013
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;5013;2334;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+3
+// static_cast<sal_Int32>(aAreaFillColor)
+16777215
diff --git a/chart2/qa/extras/chart2dump/reference/areacharttest/percent_stacked_area_chart.txt b/chart2/qa/extras/chart2dump/reference/areacharttest/percent_stacked_area_chart.txt
new file mode 100644
index 0000000000..b8769b7ad3
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/areacharttest/percent_stacked_area_chart.txt
@@ -0,0 +1,62 @@
+// nSeriesCount
+4
+/// Series 0
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+5080
+// aAreaSize.Height
+2267
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;2267;5080;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+1
+// static_cast<sal_Int32>(aAreaFillColor)
+16711680
+/// Series 1
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+3458
+// aAreaSize.Height
+2693
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;2693;3458;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+2
+// static_cast<sal_Int32>(aAreaFillColor)
+10079487
+/// Series 2
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+2634
+// aAreaSize.Height
+2049
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;2049;2634;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+4
+// static_cast<sal_Int32>(aAreaFillColor)
+10079487
+/// Series 3
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+1344
+// aAreaSize.Height
+2157
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;2157;1344;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+3
+// static_cast<sal_Int32>(aAreaFillColor)
+16777215
diff --git a/chart2/qa/extras/chart2dump/reference/areacharttest/stacked_area_chart.txt b/chart2/qa/extras/chart2dump/reference/areacharttest/stacked_area_chart.txt
new file mode 100644
index 0000000000..00934b44bf
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/areacharttest/stacked_area_chart.txt
@@ -0,0 +1,62 @@
+// nSeriesCount
+4
+/// Series 0
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+5958
+// aAreaSize.Height
+1389
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;1389;5958;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+1
+// static_cast<sal_Int32>(aAreaFillColor)
+16711680
+/// Series 1
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+4882
+// aAreaSize.Height
+1710
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;1710;4882;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+2
+// static_cast<sal_Int32>(aAreaFillColor)
+10079487
+/// Series 2
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+3510
+// aAreaSize.Height
+2542
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;2542;3510;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+4
+// static_cast<sal_Int32>(aAreaFillColor)
+10079487
+/// Series 3
+// aAreaPosition.X
+5507
+// aAreaPosition.Y
+1792
+// aAreaSize.Height
+3985
+// aAreaSize.Width
+11328
+// aAreaTransformation
+11328;0;5507;0;3985;1792;0;0;1
+// static_cast<sal_Int32>(aAreaFillStyle)
+3
+// static_cast<sal_Int32>(aAreaFillColor)
+16777215
diff --git a/chart2/qa/extras/chart2dump/reference/axisgeometrytest/axis_special_positioning.txt b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/axis_special_positioning.txt
new file mode 100644
index 0000000000..e34ef3c104
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/axis_special_positioning.txt
@@ -0,0 +1,38 @@
+/// CID/D=0:CS=0:Axis=0,0
+// aAxisPosition.X
+5112
+// aAxisPosition.Y
+1990
+// aAxisSize.Height
+300
+// aAxisSize.Width
+17133
+// aAxisTransformation
+17134;0;5112;0;301;1990;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aAxisLineColor)
+0
+// nAxisLineWidth
+0
+/// CID/D=0:CS=0:Axis=1,0
+// aAxisPosition.X
+22245
+// aAxisPosition.Y
+2140
+// aAxisSize.Height
+8005
+// aAxisSize.Width
+150
+// aAxisTransformation
+151;0;22245;0;8006;2140;0;0;1
+// nAxisGeometriesCount
+3
+// sAxisLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aAxisLineColor)
+0
+// nAxisLineWidth
+0
diff --git a/chart2/qa/extras/chart2dump/reference/axisgeometrytest/default_formated_axis.txt b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/default_formated_axis.txt
new file mode 100644
index 0000000000..46eec6d766
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/default_formated_axis.txt
@@ -0,0 +1,38 @@
+/// CID/D=0:CS=0:Axis=0,0
+// aAxisPosition.X
+5393
+// aAxisPosition.Y
+11883
+// aAxisSize.Height
+150
+// aAxisSize.Width
+17455
+// aAxisTransformation
+17456;0;5393;0;151;11883;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aAxisLineColor)
+0
+// nAxisLineWidth
+0
+/// CID/D=0:CS=0:Axis=1,0
+// aAxisPosition.X
+5243
+// aAxisPosition.Y
+2507
+// aAxisSize.Height
+9376
+// aAxisSize.Width
+150
+// aAxisTransformation
+151;0;5243;0;9377;2507;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aAxisLineColor)
+0
+// nAxisLineWidth
+0
diff --git a/chart2/qa/extras/chart2dump/reference/axisgeometrytest/formated_axis_lines.txt b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/formated_axis_lines.txt
new file mode 100644
index 0000000000..980e2592da
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/formated_axis_lines.txt
@@ -0,0 +1,38 @@
+/// CID/D=0:CS=0:Axis=0,0
+// aAxisPosition.X
+3852
+// aAxisPosition.Y
+9713
+// aAxisSize.Height
+150
+// aAxisSize.Width
+15854
+// aAxisTransformation
+15855;0;3852;0;151;9713;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;00;0;457
+// static_cast<sal_Int32>(aAxisLineColor)
+16711680
+// nAxisLineWidth
+100
+/// CID/D=0:CS=0:Axis=1,0
+// aAxisPosition.X
+3702
+// aAxisPosition.Y
+2051
+// aAxisSize.Height
+7662
+// aAxisSize.Width
+150
+// aAxisTransformation
+151;0;3702;0;7663;2051;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;511;51;51
+// static_cast<sal_Int32>(aAxisLineColor)
+65280
+// nAxisLineWidth
+100
diff --git a/chart2/qa/extras/chart2dump/reference/axisgeometrytest/rotated_axis_labels.txt b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/rotated_axis_labels.txt
new file mode 100644
index 0000000000..151ab21acb
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axisgeometrytest/rotated_axis_labels.txt
@@ -0,0 +1,38 @@
+/// CID/D=0:CS=0:Axis=0,0
+// aAxisPosition.X
+3798
+// aAxisPosition.Y
+9860
+// aAxisSize.Height
+150
+// aAxisSize.Width
+16412
+// aAxisTransformation
+16413;0;3798;0;151;9860;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aAxisLineColor)
+0
+// nAxisLineWidth
+0
+/// CID/D=0:CS=0:Axis=1,0
+// aAxisPosition.X
+3648
+// aAxisPosition.Y
+2082
+// aAxisSize.Height
+7778
+// aAxisSize.Width
+150
+// aAxisTransformation
+151;0;3648;0;7779;2082;0;0;1
+// nAxisGeometriesCount
+2
+// sAxisLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aAxisLineColor)
+0
+// nAxisLineWidth
+0
diff --git a/chart2/qa/extras/chart2dump/reference/axislabeltest/date-categories.txt b/chart2/qa/extras/chart2dump/reference/axislabeltest/date-categories.txt
new file mode 100644
index 0000000000..a9274fd783
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axislabeltest/date-categories.txt
@@ -0,0 +1,180 @@
+/// CID/D=0:CS=0:Axis=0,0
+// nAxisLabelsCount
+22
+// xLabel->getString()
+15/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+17/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+19/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+21/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+23/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+25/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+27/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+29/Jun/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+1/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+3/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+5/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+7/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+9/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+11/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+13/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+15/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+17/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+19/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+21/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+23/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+25/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+27/Jul/21
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+/// CID/D=0:CS=0:Axis=1,0
+// nAxisLabelsCount
+7
+// xLabel->getString()
+0
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+20
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+40
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+60
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+80
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+100
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
+// xLabel->getString()
+120
+// static_cast<sal_Int32>(aLabelFontColor)
+5855577
+// fLabelFontHeight
+9
diff --git a/chart2/qa/extras/chart2dump/reference/axislabeltest/default_formated_axis.txt b/chart2/qa/extras/chart2dump/reference/axislabeltest/default_formated_axis.txt
new file mode 100644
index 0000000000..51c1e37d63
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axislabeltest/default_formated_axis.txt
@@ -0,0 +1,96 @@
+/// CID/D=0:CS=0:Axis=0,0
+// nAxisLabelsCount
+4
+// xLabel->getString()
+1. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+2. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+3. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+4. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+/// CID/D=0:CS=0:Axis=1,0
+// nAxisLabelsCount
+11
+// xLabel->getString()
+- Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+2000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+4000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+6000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+8000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+10000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+12000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+14000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+16000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+18000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+20000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
diff --git a/chart2/qa/extras/chart2dump/reference/axislabeltest/formated_axis_labels.txt b/chart2/qa/extras/chart2dump/reference/axislabeltest/formated_axis_labels.txt
new file mode 100644
index 0000000000..ffc0877e49
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axislabeltest/formated_axis_labels.txt
@@ -0,0 +1,96 @@
+/// CID/D=0:CS=0:Axis=0,0
+// nAxisLabelsCount
+4
+// xLabel->getString()
+1. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+8388352
+// fLabelFontHeight
+12
+// xLabel->getString()
+2. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+8388352
+// fLabelFontHeight
+12
+// xLabel->getString()
+2. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+8388352
+// fLabelFontHeight
+12
+// xLabel->getString()
+2. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+8388352
+// fLabelFontHeight
+12
+/// CID/D=0:CS=0:Axis=1,0
+// nAxisLabelsCount
+11
+// xLabel->getString()
+- Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+2000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+4000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+6000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+8000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+10000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+12000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+14000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+16000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+18000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
+// xLabel->getString()
+20000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+16711935
+// fLabelFontHeight
+14
diff --git a/chart2/qa/extras/chart2dump/reference/axislabeltest/percent_stacked_column_chart.txt b/chart2/qa/extras/chart2dump/reference/axislabeltest/percent_stacked_column_chart.txt
new file mode 100644
index 0000000000..304f9abf03
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axislabeltest/percent_stacked_column_chart.txt
@@ -0,0 +1,96 @@
+/// CID/D=0:CS=0:Axis=0,0
+// nAxisLabelsCount
+4
+// xLabel->getString()
+Inkjet
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Leser
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Multifunction
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Picture
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+/// CID/D=0:CS=0:Axis=1,0
+// nAxisLabelsCount
+11
+// xLabel->getString()
+0,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+10,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+20,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+30,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+40,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+50,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+60,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+70,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+80,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+90,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+100,00%
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
diff --git a/chart2/qa/extras/chart2dump/reference/axislabeltest/rotated_axis_labels.txt b/chart2/qa/extras/chart2dump/reference/axislabeltest/rotated_axis_labels.txt
new file mode 100644
index 0000000000..52aceba87b
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axislabeltest/rotated_axis_labels.txt
@@ -0,0 +1,60 @@
+/// CID/D=0:CS=0:Axis=0,0
+// nAxisLabelsCount
+4
+// xLabel->getString()
+1. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+2. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+3. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+4. quarter
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+/// CID/D=0:CS=0:Axis=1,0
+// nAxisLabelsCount
+5
+// xLabel->getString()
+- Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+5000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+10000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+15000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+20000000 Ft
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
diff --git a/chart2/qa/extras/chart2dump/reference/axislabeltest/tdf118150.txt b/chart2/qa/extras/chart2dump/reference/axislabeltest/tdf118150.txt
new file mode 100644
index 0000000000..fabf4acac6
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/axislabeltest/tdf118150.txt
@@ -0,0 +1,216 @@
+/// CID/D=0:CS=0:Axis=0,0
+// nAxisLabelsCount
+28
+// xLabel->getString()
+Sep 2013
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Oct 2013
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Nov 2013
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Dec 2013
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Jan 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Feb 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Mar 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Apr 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+May 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Jun 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Jul 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Aug 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Sep 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Oct 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Nov 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Dec 2014
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Jan 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Feb 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Mar 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Apr 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+May 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Jun 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Jul 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Aug 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Sep 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Oct 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Nov 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+Dec 2015
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+/// CID/D=0:CS=0:Axis=1,0
+// nAxisLabelsCount
+7
+// xLabel->getString()
+0.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+2.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+4.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+6.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+8.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+10.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
+// xLabel->getString()
+12.00
+// static_cast<sal_Int32>(aLabelFontColor)
+0
+// fLabelFontHeight
+10
diff --git a/chart2/qa/extras/chart2dump/reference/chartdatatest/multiple_categories.txt b/chart2/qa/extras/chart2dump/reference/chartdatatest/multiple_categories.txt
new file mode 100644
index 0000000000..1d0e3ea39d
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/chartdatatest/multiple_categories.txt
@@ -0,0 +1,70 @@
+// sChartTitle
+Chart Title
+// sChartType
+com.sun.star.chart2.LineChartType
+// nXAxisNumberFormat
+0
+// nXAxisNumberType
+16
+// nYAxisNumberFormat
+0
+// nYAxisNumberType
+16
+// aColumnLabels.getLength()
+8
+// sColumnLabels
+A In0;A In100;A In200;A In400;B In0;B In100;B In200;B In400;
+// aRowLabels.getLength()
+49
+// sRowLabels
+M 14;M 15;M 99;M 22;M 17;M 25;M 28;M 25;M 26;M 24;M 25;M 22;M 33;M 22;M 25;M 32;M 19;M 14;M 18;F 22;F 16;F 26;F 18;F 48;F 19;F 24;F 22;F 25;F 28;F 23;F 25;F 29;F 24;F 27;F 24;F 27;F 27;F 31;F 17;F 50;F 17;F 16;F 17;F 15;F 17;F 17;F 17;F 17;F 18;
+// aDataSeriesYValues.size()
+8
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.533;0.413;0.55;0.273;0.45;0.423;0.54;0.433;0.417;0.513;0.563;0.503;0.54;0.737;0.563;0.36;0.443;1.007;1.21;0.51;0.443;0.41;0.637;1.15;0.777;0.58;0.587;0.713;0.477;0.533;0.55;0.443;0.197;0.48;0.497;0.513;0.607;0.573;0.54;0.283;0.257;0.43;0.223;0.377;0.38;0.573;1.843;0.427;0.523;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.8;0.287;0.457;0.143;0.61;0.373;0.47;0.397;0.413;0.337;0.347;0.447;0.467;0.587;0.533;0.34;0.647;0.647;0.823;0.77;0.743;0.607;0.523;0.7;1.053;0.407;0.577;0.533;0.54;0.347;0.633;0.56;0.397;0.423;0.393;0.707;0.703;0.65;0.487;0.437;0.937;0.547;0.357;0.61;0.597;0.517;0.503;0.333;0.84;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.38;0.547;0.35;0.46;0.607;0.44;0.68;0.47;0.43;0.363;0.46;0.533;0.44;0.2;0.627;0.307;0.27;0.5;0.66;0.403;0.413;0.61;0.58;0.973;0.903;0.57;0.563;0.617;0.463;0.537;0.497;0.42;0.253;0.49;0.43;0.577;1.07;0.583;0.427;0.297;0.397;0.503;0.717;0.507;0.513;0.743;0.693;0.44;0.737;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.467;0.467;0.463;0.367;0.457;0.443;0.63;0.48;0.38;0.577;0.477;0.443;0.47;0.557;0.45;0.46;0.283;0.523;0.527;0.537;0.34;0.32;0.51;1.12;0.897;0.437;0.673;0.637;0.463;0.613;0.72;0.443;0.25;0.497;0.393;0.503;0.617;0.87;0.383;0.383;0.39;0.467;0.373;0.523;0.553;0.353;0.37;0.493;0.52;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+1.533;1.413;1.55;1.273;1.45;1.423;1.54;1.433;1.417;1.513;1.563;1.503;1.54;1.737;1.563;1.36;1.443;2.007;2.21;1.51;1.443;1.41;1.637;2.15;1.777;1.58;1.587;1.713;1.477;1.533;1.55;1.443;1.197;1.48;1.497;1.513;1.607;1.573;1.54;1.283;1.257;1.43;1.223;1.377;1.38;1.573;2.843;1.427;1.523;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.7;0.187;0.357;0.043;0.51;0.273;0.37;0.297;0.313;0.237;0.247;0.347;0.367;0.487;0.433;0.24;0.547;0.547;0.723;0.67;0.643;0.507;0.423;0.6;0.953;0.307;0.477;0.433;0.44;0.247;0.533;0.46;0.297;0.323;0.293;0.607;0.603;0.55;0.387;0.337;0.837;0.447;0.257;0.51;0.497;0.417;0.403;0.233;0.74;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.19;0.2735;0.175;0.23;0.3035;0.22;0.34;0.235;0.215;0.1815;0.23;0.2665;0.22;0.1;0.3135;0.1535;0.135;0.25;0.33;0.2015;0.2065;0.305;0.29;0.4865;0.4515;0.285;0.2815;0.3085;0.2315;0.2685;0.2485;0.21;0.1265;0.245;0.215;0.2885;0.535;0.2915;0.2135;0.1485;0.1985;0.2515;0.3585;0.2535;0.2565;0.3715;0.3465;0.22;0.3685;
+// aYValuesOfSeries.size()
+49
+// sYValuesOfSeries
+0.0667142857142857;0.0667142857142857;0.0661428571428571;0.0524285714285714;0.0652857142857143;0.0632857142857143;0.09;0.0685714285714286;0.0542857142857143;0.0824285714285714;0.0681428571428571;0.0632857142857143;0.0671428571428571;0.0795714285714286;0.0642857142857143;0.0657142857142857;0.0404285714285714;0.0747142857142857;0.0752857142857143;0.0767142857142857;0.0485714285714286;0.0457142857142857;0.0728571428571429;0.16;0.128142857142857;0.0624285714285714;0.0961428571428572;0.091;0.0661428571428571;0.0875714285714286;0.102857142857143;0.0632857142857143;0.0357142857142857;0.071;0.0561428571428572;0.0718571428571429;0.0881428571428572;0.124285714285714;0.0547142857142857;0.0547142857142857;0.0557142857142857;0.0667142857142857;0.0532857142857143;0.0747142857142857;0.079;0.0504285714285714;0.0528571428571429;0.0704285714285714;0.0742857142857143;
+// aYValuesSourceRange
+$Table.$E$3:$E$51
+// aYValuesSourceRange
+$Table.$F$3:$F$51
+// aYValuesSourceRange
+$Table.$G$3:$G$51
+// aYValuesSourceRange
+$Table.$H$3:$H$51
+// aYValuesSourceRange
+$Table.$I$3:$I$51
+// aYValuesSourceRange
+$Table.$J$3:$J$51
+// aYValuesSourceRange
+$Table.$K$3:$K$51
+// aYValuesSourceRange
+$Table.$L$3:$L$51
diff --git a/chart2/qa/extras/chart2dump/reference/chartdatatest/simple_chart.txt b/chart2/qa/extras/chart2dump/reference/chartdatatest/simple_chart.txt
new file mode 100644
index 0000000000..ec3bfa72e3
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/chartdatatest/simple_chart.txt
@@ -0,0 +1,50 @@
+// sChartTitle
+Annual Revenue
+// sChartType
+com.sun.star.chart2.ColumnChartType
+// sXAxisTitle
+Quarter
+// nXAxisNumberFormat
+0
+// nXAxisNumberType
+16
+// sYAxisTitle
+Income (Ft)
+// nYAxisNumberFormat
+159
+// nYAxisNumberType
+17
+// aColumnLabels.getLength()
+4
+// sColumnLabels
+1. quarter;2. quarter;3. quarter;4. quarter;
+// aRowLabels.getLength()
+4
+// sRowLabels
+Inkjet;Leser;Multifunction;Picture;
+// aDataSeriesYValues.size()
+4
+// aYValuesOfSeries.size()
+4
+// sYValuesOfSeries
+4399120;8098380;4799040;6448710;
+// aYValuesOfSeries.size()
+4
+// sYValuesOfSeries
+3149650;4499500;5399400;7919120;
+// aYValuesOfSeries.size()
+4
+// sYValuesOfSeries
+1599800;4399450;3199600;7999000;
+// aYValuesOfSeries.size()
+4
+// sYValuesOfSeries
+2504850;5009700;7514550;10019400;
+// aYValuesSourceRange
+$Mo_példa_06_a.$E$11:$H$11
+// aYValuesSourceRange
+$Mo_példa_06_a.$E$12:$H$12
+// aYValuesSourceRange
+$Mo_példa_06_a.$E$13:$H$13
+// aYValuesSourceRange
+$Mo_példa_06_a.$E$14:$H$14
diff --git a/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_with_titles.txt b/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_with_titles.txt
new file mode 100644
index 0000000000..83e9596f26
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_with_titles.txt
@@ -0,0 +1,10 @@
+// static_cast<sal_Int32>(aChartWallFillStyle)
+2
+// static_cast<sal_Int32>(aChartWallFillColor)
+15132390
+// sChartWallLineDash
+0;1;200710;0;152
+// static_cast<sal_Int32>(aChartWallLineColor)
+11010131
+// nChartWallLineWidth
+100
diff --git a/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_without_titles.txt b/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_without_titles.txt
new file mode 100644
index 0000000000..83e9596f26
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_auto_adjust_without_titles.txt
@@ -0,0 +1,10 @@
+// static_cast<sal_Int32>(aChartWallFillStyle)
+2
+// static_cast<sal_Int32>(aChartWallFillColor)
+15132390
+// sChartWallLineDash
+0;1;200710;0;152
+// static_cast<sal_Int32>(aChartWallLineColor)
+11010131
+// nChartWallLineWidth
+100
diff --git a/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_custom_positioning.txt b/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_custom_positioning.txt
new file mode 100644
index 0000000000..f689425eca
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/chartwalltest/chartwall_custom_positioning.txt
@@ -0,0 +1,10 @@
+// static_cast<sal_Int32>(aChartWallFillStyle)
+1
+// static_cast<sal_Int32>(aChartWallFillColor)
+13773611
+// sChartWallLineDash
+0;2;01;203;203
+// static_cast<sal_Int32>(aChartWallLineColor)
+8388352
+// nChartWallLineWidth
+110
diff --git a/chart2/qa/extras/chart2dump/reference/chartwalltest/formated_chartwall.txt b/chart2/qa/extras/chart2dump/reference/chartwalltest/formated_chartwall.txt
new file mode 100644
index 0000000000..83e9596f26
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/chartwalltest/formated_chartwall.txt
@@ -0,0 +1,10 @@
+// static_cast<sal_Int32>(aChartWallFillStyle)
+2
+// static_cast<sal_Int32>(aChartWallFillColor)
+15132390
+// sChartWallLineDash
+0;1;200710;0;152
+// static_cast<sal_Int32>(aChartWallLineColor)
+11010131
+// nChartWallLineWidth
+100
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/column_chart_small_spacing.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/column_chart_small_spacing.txt
new file mode 100644
index 0000000000..f9ec3b65a2
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/column_chart_small_spacing.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+3698
+// aColumnOrBarPosition.Y
+4414
+// aColumnOrBarSize.Height
+2935
+// aColumnOrBarSize.Width
+1170
+// aColumnOrBarTransformation
+1170;0;3698;0;2935;4414;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+8610
+// aColumnOrBarPosition.Y
+1946
+// aColumnOrBarSize.Height
+5403
+// aColumnOrBarSize.Width
+1170
+// aColumnOrBarTransformation
+1170;0;8610;0;5403;1946;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+13522
+// aColumnOrBarPosition.Y
+4147
+// aColumnOrBarSize.Height
+3202
+// aColumnOrBarSize.Width
+1169
+// aColumnOrBarTransformation
+1169;0;13522;0;3202;4147;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+4868
+// aColumnOrBarPosition.Y
+5247
+// aColumnOrBarSize.Height
+2102
+// aColumnOrBarSize.Width
+1169
+// aColumnOrBarTransformation
+1169;0;4868;0;2102;5247;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+9780
+// aColumnOrBarPosition.Y
+4347
+// aColumnOrBarSize.Height
+3002
+// aColumnOrBarSize.Width
+1169
+// aColumnOrBarTransformation
+1169;0;9780;0;3002;4347;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+14691
+// aColumnOrBarPosition.Y
+3747
+// aColumnOrBarSize.Height
+3602
+// aColumnOrBarSize.Width
+1170
+// aColumnOrBarTransformation
+1170;0;14691;0;3602;3747;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+6037
+// aColumnOrBarPosition.Y
+6281
+// aColumnOrBarSize.Height
+1068
+// aColumnOrBarSize.Width
+1170
+// aColumnOrBarTransformation
+1170;0;6037;0;1068;6281;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+10949
+// aColumnOrBarPosition.Y
+4414
+// aColumnOrBarSize.Height
+2935
+// aColumnOrBarSize.Width
+1169
+// aColumnOrBarTransformation
+1169;0;10949;0;2935;4414;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+15861
+// aColumnOrBarPosition.Y
+5214
+// aColumnOrBarSize.Height
+2135
+// aColumnOrBarSize.Width
+1169
+// aColumnOrBarTransformation
+1169;0;15861;0;2135;5214;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+2
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+7207
+// aColumnOrBarPosition.Y
+5677
+// aColumnOrBarSize.Height
+1672
+// aColumnOrBarSize.Width
+1169
+// aColumnOrBarTransformation
+1169;0;7207;0;1672;5677;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+12118
+// aColumnOrBarPosition.Y
+4006
+// aColumnOrBarSize.Height
+3343
+// aColumnOrBarSize.Width
+1170
+// aColumnOrBarTransformation
+1170;0;12118;0;3343;4006;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+17030
+// aColumnOrBarPosition.Y
+2335
+// aColumnOrBarSize.Height
+5014
+// aColumnOrBarSize.Width
+1170
+// aColumnOrBarTransformation
+1170;0;17030;0;5014;2335;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_bar_chart.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_bar_chart.txt
new file mode 100644
index 0000000000..47a0a9b0ac
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_bar_chart.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+6712
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+6482
+// aColumnOrBarTransformation
+6482;0;3582;0;364;6712;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+4710
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+11932
+// aColumnOrBarTransformation
+11932;0;3582;0;364;4710;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+2709
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+7071
+// aColumnOrBarTransformation
+7071;0;3582;0;364;2709;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+6348
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+4641
+// aColumnOrBarTransformation
+4641;0;3582;0;364;6348;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+4347
+// aColumnOrBarSize.Height
+363
+// aColumnOrBarSize.Width
+6630
+// aColumnOrBarTransformation
+6630;0;3582;0;363;4347;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+2345
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+7956
+// aColumnOrBarTransformation
+7956;0;3582;0;364;2345;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+5984
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+2357
+// aColumnOrBarTransformation
+2357;0;3582;0;364;5984;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+3983
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+6482
+// aColumnOrBarTransformation
+6482;0;3582;0;364;3983;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+1981
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+4714
+// aColumnOrBarTransformation
+4714;0;3582;0;364;1981;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+5620
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+3690
+// aColumnOrBarTransformation
+3690;0;3582;0;364;5620;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+3619
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+7381
+// aColumnOrBarTransformation
+7381;0;3582;0;364;3619;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+1617
+// aColumnOrBarSize.Height
+364
+// aColumnOrBarSize.Width
+11072
+// aColumnOrBarTransformation
+11072;0;3582;0;364;1617;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_column_chart.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_column_chart.txt
new file mode 100644
index 0000000000..d3a9646798
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/normal_column_chart.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+4359
+// aColumnOrBarPosition.Y
+4414
+// aColumnOrBarSize.Height
+2935
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;4359;0;2935;4414;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+9396
+// aColumnOrBarPosition.Y
+1946
+// aColumnOrBarSize.Height
+5403
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;9396;0;5403;1946;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+14433
+// aColumnOrBarPosition.Y
+4147
+// aColumnOrBarSize.Height
+3202
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;14433;0;3202;4147;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+5275
+// aColumnOrBarPosition.Y
+5247
+// aColumnOrBarSize.Height
+2102
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;5275;0;2102;5247;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+10312
+// aColumnOrBarPosition.Y
+4347
+// aColumnOrBarSize.Height
+3002
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;10312;0;3002;4347;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+15349
+// aColumnOrBarPosition.Y
+3747
+// aColumnOrBarSize.Height
+3602
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;15349;0;3602;3747;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+6191
+// aColumnOrBarPosition.Y
+6281
+// aColumnOrBarSize.Height
+1068
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;6191;0;1068;6281;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+11228
+// aColumnOrBarPosition.Y
+4414
+// aColumnOrBarSize.Height
+2935
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;11228;0;2935;4414;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+16265
+// aColumnOrBarPosition.Y
+5214
+// aColumnOrBarSize.Height
+2135
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;16265;0;2135;5214;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+7107
+// aColumnOrBarPosition.Y
+5677
+// aColumnOrBarSize.Height
+1672
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;7107;0;1672;5677;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+12144
+// aColumnOrBarPosition.Y
+4006
+// aColumnOrBarSize.Height
+3343
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;12144;0;3343;4006;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+17181
+// aColumnOrBarPosition.Y
+2335
+// aColumnOrBarSize.Height
+5014
+// aColumnOrBarSize.Width
+916
+// aColumnOrBarTransformation
+916;0;17181;0;5014;2335;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_bar_chart.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_bar_chart.txt
new file mode 100644
index 0000000000..1d53a339e4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_bar_chart.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+5681
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+5562
+// aColumnOrBarTransformation
+5562;0;3582;0;1334;5681;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+3679
+// aColumnOrBarSize.Height
+1335
+// aColumnOrBarSize.Width
+5422
+// aColumnOrBarTransformation
+5422;0;3582;0;1335;3679;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+1678
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+3381
+// aColumnOrBarTransformation
+3381;0;3582;0;1334;1678;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+9144
+// aColumnOrBarPosition.Y
+5681
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+3982
+// aColumnOrBarTransformation
+3982;0;9144;0;1334;5681;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+9004
+// aColumnOrBarPosition.Y
+3679
+// aColumnOrBarSize.Height
+1335
+// aColumnOrBarSize.Width
+3013
+// aColumnOrBarTransformation
+3013;0;9004;0;1335;3679;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+6963
+// aColumnOrBarPosition.Y
+1678
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+3804
+// aColumnOrBarTransformation
+3804;0;6963;0;1334;1678;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+255
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+13126
+// aColumnOrBarPosition.Y
+5681
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+2023
+// aColumnOrBarTransformation
+2023;0;13126;0;1334;5681;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+12017
+// aColumnOrBarPosition.Y
+3679
+// aColumnOrBarSize.Height
+1335
+// aColumnOrBarSize.Width
+2945
+// aColumnOrBarTransformation
+2945;0;12017;0;1335;3679;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+10767
+// aColumnOrBarPosition.Y
+1678
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+2255
+// aColumnOrBarTransformation
+2255;0;10767;0;1334;1678;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+15149
+// aColumnOrBarPosition.Y
+5681
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+3168
+// aColumnOrBarTransformation
+3168;0;15149;0;1334;5681;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+14962
+// aColumnOrBarPosition.Y
+3679
+// aColumnOrBarSize.Height
+1335
+// aColumnOrBarSize.Width
+3355
+// aColumnOrBarTransformation
+3355;0;14962;0;1335;3679;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+13022
+// aColumnOrBarPosition.Y
+1678
+// aColumnOrBarSize.Height
+1334
+// aColumnOrBarSize.Width
+5295
+// aColumnOrBarTransformation
+5295;0;13022;0;1334;1678;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_column_chart.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_column_chart.txt
new file mode 100644
index 0000000000..75ee404178
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/percent_stacked_column_chart.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+5082
+// aColumnOrBarSize.Height
+2267
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;2267;5082;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+5139
+// aColumnOrBarSize.Height
+2210
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;2210;5139;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+5971
+// aColumnOrBarSize.Height
+1378
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;1378;5971;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+3459
+// aColumnOrBarSize.Height
+1623
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;1623;3459;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+3912
+// aColumnOrBarSize.Height
+1227
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1227;3912;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+4421
+// aColumnOrBarSize.Height
+1550
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;1550;4421;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+2635
+// aColumnOrBarSize.Height
+824
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;824;2635;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+2711
+// aColumnOrBarSize.Height
+1201
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1201;2711;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+3502
+// aColumnOrBarSize.Height
+919
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;919;3502;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+2
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+1345
+// aColumnOrBarSize.Height
+1290
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;1290;1345;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+1345
+// aColumnOrBarSize.Height
+1366
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1366;1345;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+1345
+// aColumnOrBarSize.Height
+2157
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;2157;1345;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_bar_chart.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_bar_chart.txt
new file mode 100644
index 0000000000..f9bf6a20b1
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_bar_chart.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+5948
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+2592
+// aColumnOrBarTransformation
+2592;0;3582;0;800;5948;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+3946
+// aColumnOrBarSize.Height
+801
+// aColumnOrBarSize.Width
+4773
+// aColumnOrBarTransformation
+4773;0;3582;0;801;3946;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+3582
+// aColumnOrBarPosition.Y
+1945
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+2828
+// aColumnOrBarTransformation
+2828;0;3582;0;800;1945;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+6174
+// aColumnOrBarPosition.Y
+5948
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+1857
+// aColumnOrBarTransformation
+1857;0;6174;0;800;5948;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+8355
+// aColumnOrBarPosition.Y
+3946
+// aColumnOrBarSize.Height
+801
+// aColumnOrBarSize.Width
+2652
+// aColumnOrBarTransformation
+2652;0;8355;0;801;3946;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+6410
+// aColumnOrBarPosition.Y
+1945
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+3182
+// aColumnOrBarTransformation
+3182;0;6410;0;800;1945;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+255
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+8031
+// aColumnOrBarPosition.Y
+5948
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+943
+// aColumnOrBarTransformation
+943;0;8031;0;800;5948;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+11007
+// aColumnOrBarPosition.Y
+3946
+// aColumnOrBarSize.Height
+801
+// aColumnOrBarSize.Width
+2593
+// aColumnOrBarTransformation
+2593;0;11007;0;801;3946;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+9592
+// aColumnOrBarPosition.Y
+1945
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+1886
+// aColumnOrBarTransformation
+1886;0;9592;0;800;1945;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+8974
+// aColumnOrBarPosition.Y
+5948
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+1476
+// aColumnOrBarTransformation
+1476;0;8974;0;800;5948;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+13600
+// aColumnOrBarPosition.Y
+3946
+// aColumnOrBarSize.Height
+801
+// aColumnOrBarSize.Width
+2952
+// aColumnOrBarTransformation
+2952;0;13600;0;801;3946;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+11478
+// aColumnOrBarPosition.Y
+1945
+// aColumnOrBarSize.Height
+800
+// aColumnOrBarSize.Width
+4429
+// aColumnOrBarTransformation
+4429;0;11478;0;800;1945;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_column_chart.txt b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_column_chart.txt
new file mode 100644
index 0000000000..dd34a49584
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/columnbarcharttest/stacked_column_chart.txt
@@ -0,0 +1,162 @@
+// nSeriesCount
+4
+/// Series 0 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+1
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+6292
+// aColumnOrBarSize.Height
+1057
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;1057;6292;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+5404
+// aColumnOrBarSize.Height
+1945
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1945;5404;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+6196
+// aColumnOrBarSize.Height
+1153
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;1153;6196;0;0;1
+/// Series 1 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+5536
+// aColumnOrBarSize.Height
+756
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;756;5536;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+4323
+// aColumnOrBarSize.Height
+1081
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1081;4323;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+4899
+// aColumnOrBarSize.Height
+1297
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;1297;4899;0;0;1
+/// Series 2 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+4
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+5151
+// aColumnOrBarSize.Height
+385
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;385;5151;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+3266
+// aColumnOrBarSize.Height
+1057
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1057;3266;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+4131
+// aColumnOrBarSize.Height
+768
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;768;4131;0;0;1
+/// Series 3 ColumnsOrBars
+// nColumnOrBarCountInSeries
+3
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillStyle)
+2
+// static_cast<sal_Int32>(aSeriesColumnOrBarFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aColumnOrBarPosition.X
+5055
+// aColumnOrBarPosition.Y
+4550
+// aColumnOrBarSize.Height
+601
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;5055;0;601;4550;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aColumnOrBarPosition.X
+9967
+// aColumnOrBarPosition.Y
+2063
+// aColumnOrBarSize.Height
+1203
+// aColumnOrBarSize.Width
+1964
+// aColumnOrBarTransformation
+1964;0;9967;0;1203;2063;0;0;1
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aColumnOrBarPosition.X
+14878
+// aColumnOrBarPosition.Y
+2326
+// aColumnOrBarSize.Height
+1805
+// aColumnOrBarSize.Width
+1965
+// aColumnOrBarTransformation
+1965;0;14878;0;1805;2326;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/gridtest/formated_grid_line.txt b/chart2/qa/extras/chart2dump/reference/gridtest/formated_grid_line.txt
new file mode 100644
index 0000000000..b3d3c09875
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/gridtest/formated_grid_line.txt
@@ -0,0 +1,17 @@
+/// CID/D=0:CS=0:Axis=0,0:Grid=0
+// aGridPosition.X
+3763
+// aGridPosition.Y
+1344
+// aGridSize.Height
+6005
+// aGridSize.Width
+15480
+// aGridTransformation
+15481;0;3763;0;6006;1344;0;0;1
+// sGridLineDash
+2;1;1970;0;127
+// static_cast<sal_Int32>(aLineColor)
+65280
+// nLineWidth
+100
diff --git a/chart2/qa/extras/chart2dump/reference/gridtest/horizontal_grid.txt b/chart2/qa/extras/chart2dump/reference/gridtest/horizontal_grid.txt
new file mode 100644
index 0000000000..428a206de5
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/gridtest/horizontal_grid.txt
@@ -0,0 +1,17 @@
+/// CID/D=0:CS=0:Axis=1,0:Grid=0
+// aGridPosition.X
+3644
+// aGridPosition.Y
+1344
+// aGridSize.Height
+6005
+// aGridSize.Width
+14988
+// aGridTransformation
+14989;0;3644;0;6006;1344;0;0;1
+// sGridLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aLineColor)
+0
+// nLineWidth
+0
diff --git a/chart2/qa/extras/chart2dump/reference/gridtest/minor_grid.txt b/chart2/qa/extras/chart2dump/reference/gridtest/minor_grid.txt
new file mode 100644
index 0000000000..35f3d560e4
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/gridtest/minor_grid.txt
@@ -0,0 +1,68 @@
+/// CID/D=0:CS=0:Axis=1,0:Grid=0
+// aGridPosition.X
+3529
+// aGridPosition.Y
+1344
+// aGridSize.Height
+6005
+// aGridSize.Width
+14515
+// aGridTransformation
+14516;0;3529;0;6006;1344;0;0;1
+// sGridLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aLineColor)
+0
+// nLineWidth
+0
+/// CID/D=0:CS=0:Axis=0,0:Grid=0
+// aGridPosition.X
+3529
+// aGridPosition.Y
+1344
+// aGridSize.Height
+6005
+// aGridSize.Width
+14515
+// aGridTransformation
+14516;0;3529;0;6006;1344;0;0;1
+// sGridLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aLineColor)
+11776947
+// nLineWidth
+0
+/// CID/D=0:CS=0:Axis=1,0:Grid=0:SubGrid=0
+// aGridPosition.X
+3529
+// aGridPosition.Y
+1773
+// aGridSize.Height
+5147
+// aGridSize.Width
+14515
+// aGridTransformation
+14516;0;3529;0;5148;1773;0;0;1
+// sGridLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aLineColor)
+14540253
+// nLineWidth
+0
+/// CID/D=0:CS=0:Axis=0,0:Grid=0:SubGrid=0
+// aGridPosition.X
+5343
+// aGridPosition.Y
+1344
+// aGridSize.Height
+6005
+// aGridSize.Width
+10886
+// aGridTransformation
+10887;0;5343;0;6006;1344;0;0;1
+// sGridLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aLineColor)
+14540253
+// nLineWidth
+0
diff --git a/chart2/qa/extras/chart2dump/reference/gridtest/vertical_grid.txt b/chart2/qa/extras/chart2dump/reference/gridtest/vertical_grid.txt
new file mode 100644
index 0000000000..a0c341dc63
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/gridtest/vertical_grid.txt
@@ -0,0 +1,17 @@
+/// CID/D=0:CS=0:Axis=0,0:Grid=0
+// aGridPosition.X
+3620
+// aGridPosition.Y
+1343
+// aGridSize.Height
+6120
+// aGridSize.Width
+15109
+// aGridTransformation
+15110;0;3620;0;6121;1343;0;0;1
+// sGridLineDash
+0;1;201;20;20
+// static_cast<sal_Int32>(aLineColor)
+11776947
+// nLineWidth
+0
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/custom_legend_position.txt b/chart2/qa/extras/chart2dump/reference/legendtest/custom_legend_position.txt
new file mode 100644
index 0000000000..ad31f8c863
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/custom_legend_position.txt
@@ -0,0 +1,50 @@
+// nLegendEntryCount
+4
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+43091
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8388352
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16765728
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16711807
+// xLegendEntryText->getString()
+A
+// xLegendEntryText->getString()
+B
+// xLegendEntryText->getString()
+C
+// xLegendEntryText->getString()
+DD
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_bottom.txt b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_bottom.txt
new file mode 100644
index 0000000000..5d2a2c0111
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_bottom.txt
@@ -0,0 +1,50 @@
+// nLegendEntryCount
+4
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+43091
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8388352
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16765728
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16711807
+// xLegendEntryText->getString()
+AA
+// xLegendEntryText->getString()
+BB
+// xLegendEntryText->getString()
+CC
+// xLegendEntryText->getString()
+DD
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_left_side.txt b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_left_side.txt
new file mode 100644
index 0000000000..7f55f89183
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_left_side.txt
@@ -0,0 +1,50 @@
+// nLegendEntryCount
+4
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+17798
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8388352
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16765728
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+32767
+// xLegendEntryText->getString()
+AA
+// xLegendEntryText->getString()
+BB
+// xLegendEntryText->getString()
+CC
+// xLegendEntryText->getString()
+DD
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_right_side.txt b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_right_side.txt
new file mode 100644
index 0000000000..78c83ef625
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_right_side.txt
@@ -0,0 +1,18 @@
+// nLegendEntryCount
+2
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.RectangleShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+17798
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.RectangleShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16728590
+// xLegendEntryText->getString()
+A
+// xLegendEntryText->getString()
+C-B
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_top.txt b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_top.txt
new file mode 100644
index 0000000000..5d2a2c0111
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/legend_on_top.txt
@@ -0,0 +1,50 @@
+// nLegendEntryCount
+4
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+43091
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8388352
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16765728
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16711807
+// xLegendEntryText->getString()
+AA
+// xLegendEntryText->getString()
+BB
+// xLegendEntryText->getString()
+CC
+// xLegendEntryText->getString()
+DD
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/many_legend_entries.txt b/chart2/qa/extras/chart2dump/reference/legendtest/many_legend_entries.txt
new file mode 100644
index 0000000000..a3ef82203b
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/many_legend_entries.txt
@@ -0,0 +1,182 @@
+// nLegendEntryCount
+15
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+43091
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8388352
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16765728
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16711807
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8257569
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+8637183
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+3227652
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+11456256
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+4923247
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16749838
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+12910603
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+34001
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+17798
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16728590
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+16765728
+// xLegendEntryText->getString()
+AA
+// xLegendEntryText->getString()
+BB
+// xLegendEntryText->getString()
+CC
+// xLegendEntryText->getString()
+DD
+// xLegendEntryText->getString()
+EE
+// xLegendEntryText->getString()
+FF
+// xLegendEntryText->getString()
+GG
+// xLegendEntryText->getString()
+HH
+// xLegendEntryText->getString()
+II
+// xLegendEntryText->getString()
+JJ
+// xLegendEntryText->getString()
+KK
+// xLegendEntryText->getString()
+LL
+// xLegendEntryText->getString()
+MM
+// xLegendEntryText->getString()
+NN
+// xLegendEntryText->getString()
+OO
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/minimal_legend_test.txt b/chart2/qa/extras/chart2dump/reference/legendtest/minimal_legend_test.txt
new file mode 100644
index 0000000000..63a2980cfa
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/minimal_legend_test.txt
@@ -0,0 +1,14 @@
+// nLegendEntryCount
+1
+// xLegendEntryContainer->getCount()
+3
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// sEntryGeomShapeType
+com.sun.star.drawing.PolyPolygonShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+17798
+// xLegendEntryText->getString()
+Inkjet
diff --git a/chart2/qa/extras/chart2dump/reference/legendtest/multiple_categories.txt b/chart2/qa/extras/chart2dump/reference/legendtest/multiple_categories.txt
new file mode 100644
index 0000000000..9c207c9817
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/legendtest/multiple_categories.txt
@@ -0,0 +1,66 @@
+// nLegendEntryCount
+8
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryContainer->getCount()
+2
+// sEntryGeomShapeType
+com.sun.star.drawing.LineShape
+// static_cast<sal_Int32>(aEntryGeomColor)
+7512015
+// xLegendEntryText->getString()
+A In0
+// xLegendEntryText->getString()
+A In100
+// xLegendEntryText->getString()
+A In200
+// xLegendEntryText->getString()
+A In400
+// xLegendEntryText->getString()
+B In0
+// xLegendEntryText->getString()
+B In100
+// xLegendEntryText->getString()
+B In200
+// xLegendEntryText->getString()
+B In400
diff --git a/chart2/qa/extras/chart2dump/reference/piecharttest/donut_chart.txt b/chart2/qa/extras/chart2dump/reference/piecharttest/donut_chart.txt
new file mode 100644
index 0000000000..c1af41103d
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/piecharttest/donut_chart.txt
@@ -0,0 +1,194 @@
+// nSeriesCount
+4
+/// Series 0 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=0:Point=0
+// aSlicePosition.X
+6089
+// aSlicePosition.Y
+2527
+// aSliceSize.Height
+2118
+// aSliceSize.Width
+4554
+// aSliceTransformation
+4554;0;6089;0;2118;2527;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=0:Point=1
+// aSlicePosition.X
+4353
+// aSlicePosition.Y
+2931
+// aSliceSize.Height
+6249
+// aSliceSize.Width
+4305
+// aSliceTransformation
+4305;0;4353;0;6249;2931;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=0:Point=2
+// aSlicePosition.X
+9033
+// aSlicePosition.Y
+4635
+// aSliceSize.Height
+4659
+// aSliceSize.Width
+2458
+// aSliceTransformation
+2458;0;9033;0;4659;4635;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
+/// Series 1 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=1:Point=0
+// aSlicePosition.X
+6601
+// aSlicePosition.Y
+3192
+// aSliceSize.Height
+1755
+// aSliceSize.Width
+3449
+// aSliceTransformation
+3449;0;6601;0;1755;3192;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=1:Point=1
+// aSlicePosition.X
+5018
+// aSlicePosition.Y
+3420
+// aSliceSize.Height
+4691
+// aSliceSize.Width
+1852
+// aSliceTransformation
+1852;0;5018;0;4691;3420;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=1:Point=2
+// aSlicePosition.X
+6270
+// aSlicePosition.Y
+4645
+// aSliceSize.Height
+3869
+// aSliceSize.Width
+4070
+// aSliceTransformation
+4070;0;6270;0;3869;4645;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
+/// Series 2 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=2:Point=0
+// aSlicePosition.X
+7688
+// aSlicePosition.Y
+3857
+// aSliceSize.Height
+1392
+// aSliceSize.Width
+1769
+// aSliceTransformation
+1769;0;7688;0;1392;3857;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=2:Point=1
+// aSlicePosition.X
+5683
+// aSlicePosition.Y
+3857
+// aSliceSize.Height
+3971
+// aSliceSize.Width
+2010
+// aSliceTransformation
+2010;0;5683;0;3971;3857;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=2:Point=2
+// aSlicePosition.X
+7394
+// aSlicePosition.Y
+4947
+// aSliceSize.Height
+2902
+// aSliceSize.Width
+2281
+// aSliceTransformation
+2281;0;7394;0;2902;4947;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
+/// Series 3 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=3:Point=0
+// aSlicePosition.X
+7714
+// aSlicePosition.Y
+4524
+// aSliceSize.Height
+1027
+// aSliceSize.Width
+1151
+// aSliceTransformation
+1151;0;7714;0;1027;4524;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=3:Point=1
+// aSlicePosition.X
+6348
+// aSlicePosition.Y
+4522
+// aSliceSize.Height
+1935
+// aSliceSize.Width
+1401
+// aSliceTransformation
+1401;0;6348;0;1935;4522;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=3:Point=2
+// aSlicePosition.X
+6493
+// aSlicePosition.Y
+5249
+// aSliceSize.Height
+1935
+// aSliceSize.Width
+2517
+// aSliceTransformation
+2517;0;6493;0;1935;5249;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
diff --git a/chart2/qa/extras/chart2dump/reference/piecharttest/exploded_pie_chart.txt b/chart2/qa/extras/chart2dump/reference/piecharttest/exploded_pie_chart.txt
new file mode 100644
index 0000000000..9cbc93de42
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/piecharttest/exploded_pie_chart.txt
@@ -0,0 +1,50 @@
+// nSeriesCount
+4
+/// Series 0 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=0:Point=0
+// aSlicePosition.X
+6018
+// aSlicePosition.Y
+2178
+// aSliceSize.Height
+2218
+// aSliceSize.Width
+3177
+// aSliceTransformation
+3177;0;6018;0;2218;2178;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=0:Point=1
+// aSlicePosition.X
+5246
+// aSlicePosition.Y
+3867
+// aSliceSize.Height
+3714
+// aSliceSize.Width
+3525
+// aSliceTransformation
+3525;0;5246;0;3714;3867;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=0:Point=2
+// aSlicePosition.X
+7679
+// aSlicePosition.Y
+3576
+// aSliceSize.Height
+3387
+// aSliceSize.Width
+2217
+// aSliceTransformation
+2217;0;7679;0;3387;3576;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
diff --git a/chart2/qa/extras/chart2dump/reference/piecharttest/normal_pie_chart.txt b/chart2/qa/extras/chart2dump/reference/piecharttest/normal_pie_chart.txt
new file mode 100644
index 0000000000..1b97446cc2
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/piecharttest/normal_pie_chart.txt
@@ -0,0 +1,50 @@
+// nSeriesCount
+4
+/// Series 0 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=0:Point=0
+// aSlicePosition.X
+4353
+// aSlicePosition.Y
+1846
+// aSliceSize.Height
+3416
+// aSliceSize.Width
+3326
+// aSliceTransformation
+3326;0;4353;0;3416;1846;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=0:Point=1
+// aSlicePosition.X
+4354
+// aSlicePosition.Y
+5172
+// aSliceSize.Height
+3326
+// aSliceSize.Width
+6601
+// aSliceTransformation
+6601;0;4354;0;3326;5172;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=0:Point=2
+// aSlicePosition.X
+7679
+// aSlicePosition.Y
+1846
+// aSliceSize.Height
+3896
+// aSliceSize.Width
+3326
+// aSliceTransformation
+3326;0;7679;0;3896;1846;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
diff --git a/chart2/qa/extras/chart2dump/reference/piecharttest/pie_chart_many_slices.txt b/chart2/qa/extras/chart2dump/reference/piecharttest/pie_chart_many_slices.txt
new file mode 100644
index 0000000000..820a344443
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/piecharttest/pie_chart_many_slices.txt
@@ -0,0 +1,275 @@
+// nSeriesCount
+1
+/// Series 0 slices
+// nSlicesCountInSeries
+18
+/// /D=0:CS=0:CT=0:Series=0:Point=0
+// aSlicePosition.X
+10469
+// aSlicePosition.Y
+3869
+// aSliceSize.Height
+4104
+// aSliceSize.Width
+49
+// aSliceTransformation
+49;0;10469;0;4104;3869;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=0:Point=1
+// aSlicePosition.X
+10275
+// aSlicePosition.Y
+505
+// aSliceSize.Height
+4103
+// aSliceSize.Width
+158
+// aSliceTransformation
+158;0;10275;0;4103;505;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=0:Point=2
+// aSlicePosition.X
+10224
+// aSlicePosition.Y
+3872
+// aSliceSize.Height
+4101
+// aSliceSize.Width
+294
+// aSliceTransformation
+294;0;10224;0;4101;3872;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
+/// /D=0:CS=0:CT=0:Series=0:Point=3
+// aSlicePosition.X
+10050
+// aSlicePosition.Y
+3879
+// aSliceSize.Height
+4094
+// aSliceSize.Width
+468
+// aSliceTransformation
+468;0;10050;0;4094;3879;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+5741852
+/// /D=0:CS=0:CT=0:Series=0:Point=4
+// aSlicePosition.X
+9734
+// aSlicePosition.Y
+3895
+// aSliceSize.Height
+4078
+// aSliceSize.Width
+784
+// aSliceTransformation
+784;0;9734;0;4078;3895;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+8257569
+/// /D=0:CS=0:CT=0:Series=0:Point=5
+// aSlicePosition.X
+9478
+// aSlicePosition.Y
+3944
+// aSliceSize.Height
+4029
+// aSliceSize.Width
+1040
+// aSliceTransformation
+1040;0;9478;0;4029;3944;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+8637183
+/// /D=0:CS=0:CT=0:Series=0:Point=6
+// aSlicePosition.X
+9184
+// aSlicePosition.Y
+4002
+// aSliceSize.Height
+3971
+// aSliceSize.Width
+1334
+// aSliceTransformation
+1334;0;9184;0;3971;4002;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+3227652
+/// /D=0:CS=0:CT=0:Series=0:Point=7
+// aSlicePosition.X
+8858
+// aSlicePosition.Y
+4091
+// aSliceSize.Height
+3882
+// aSliceSize.Width
+1660
+// aSliceTransformation
+1660;0;8858;0;3882;4091;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+11456256
+/// /D=0:CS=0:CT=0:Series=0:Point=8
+// aSlicePosition.X
+8506
+// aSlicePosition.Y
+4219
+// aSliceSize.Height
+3754
+// aSliceSize.Width
+2012
+// aSliceTransformation
+2012;0;8506;0;3754;4219;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+4923247
+/// /D=0:CS=0:CT=0:Series=0:Point=9
+// aSlicePosition.X
+8030
+// aSlicePosition.Y
+4395
+// aSliceSize.Height
+3578
+// aSliceSize.Width
+2488
+// aSliceTransformation
+2488;0;8030;0;3578;4395;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16749838
+/// /D=0:CS=0:CT=0:Series=0:Point=10
+// aSlicePosition.X
+7311
+// aSlicePosition.Y
+4708
+// aSliceSize.Height
+3265
+// aSliceSize.Width
+3207
+// aSliceTransformation
+3207;0;7311;0;3265;4708;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+12910603
+/// /D=0:CS=0:CT=0:Series=0:Point=11
+// aSlicePosition.X
+6490
+// aSlicePosition.Y
+5411
+// aSliceSize.Height
+2562
+// aSliceSize.Width
+4028
+// aSliceTransformation
+4028;0;6490;0;2562;5411;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+34001
+/// /D=0:CS=0:CT=0:Series=0:Point=12
+// aSlicePosition.X
+6414
+// aSlicePosition.Y
+7182
+// aSliceSize.Height
+2834
+// aSliceSize.Width
+4104
+// aSliceTransformation
+4104;0;6414;0;2834;7182;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=0:Point=13
+// aSlicePosition.X
+6959
+// aSlicePosition.Y
+7973
+// aSliceSize.Height
+3991
+// aSliceSize.Width
+3559
+// aSliceTransformation
+3559;0;6959;0;3991;7973;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=0:Point=14
+// aSlicePosition.X
+9562
+// aSlicePosition.Y
+7973
+// aSliceSize.Height
+4104
+// aSliceSize.Width
+3990
+// aSliceTransformation
+3990;0;9562;0;4104;7973;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
+/// /D=0:CS=0:CT=0:Series=0:Point=15
+// aSlicePosition.X
+10518
+// aSlicePosition.Y
+6606
+// aSliceSize.Height
+4129
+// aSliceSize.Width
+4104
+// aSliceTransformation
+4104;0;10518;0;4129;6606;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+5741852
+/// /D=0:CS=0:CT=0:Series=0:Point=16
+// aSlicePosition.X
+10518
+// aSlicePosition.Y
+3909
+// aSliceSize.Height
+4064
+// aSliceSize.Width
+3869
+// aSliceTransformation
+3869;0;10518;0;4064;3909;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+8257569
+/// /D=0:CS=0:CT=0:Series=0:Point=17
+// aSlicePosition.X
+10658
+// aSlicePosition.Y
+1862
+// aSliceSize.Height
+4104
+// aSliceSize.Width
+573
+// aSliceTransformation
+573;0;10658;0;4104;1862;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+8637183
diff --git a/chart2/qa/extras/chart2dump/reference/piecharttest/rotated_pie_chart.txt b/chart2/qa/extras/chart2dump/reference/piecharttest/rotated_pie_chart.txt
new file mode 100644
index 0000000000..e1a3708593
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/piecharttest/rotated_pie_chart.txt
@@ -0,0 +1,50 @@
+// nSeriesCount
+4
+/// Series 0 slices
+// nSlicesCountInSeries
+3
+/// /D=0:CS=0:CT=0:Series=0:Point=0
+// aSlicePosition.X
+7679
+// aSlicePosition.Y
+2779
+// aSliceSize.Height
+4767
+// aSliceSize.Width
+3326
+// aSliceTransformation
+3326;0;7679;0;4767;2779;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+17798
+/// /D=0:CS=0:CT=0:Series=0:Point=1
+// aSlicePosition.X
+4353
+// aSlicePosition.Y
+3306
+// aSliceSize.Height
+5192
+// aSliceSize.Width
+5654
+// aSliceTransformation
+5654;0;4353;0;5192;3306;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16728590
+/// /D=0:CS=0:CT=0:Series=0:Point=2
+// aSlicePosition.X
+4925
+// aSlicePosition.Y
+1846
+// aSliceSize.Height
+3326
+// aSliceSize.Width
+5064
+// aSliceTransformation
+5064;0;4925;0;3326;1846;0;0;1
+// static_cast<sal_Int32>(aSliceFillStyle)
+1
+// static_cast<sal_Int32>(aSliceFillColor)
+16765728
diff --git a/chart2/qa/extras/chart2dump/reference/pivotchartdatabuttontest/pivotchart_data_button.txt b/chart2/qa/extras/chart2dump/reference/pivotchartdatabuttontest/pivotchart_data_button.txt
new file mode 100644
index 0000000000..3d7d8a55c6
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pivotchartdatabuttontest/pivotchart_data_button.txt
@@ -0,0 +1,2 @@
+// static_cast<sal_Int32>( aButtonFillColor )
+16185078
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_and_points.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_and_points.txt
new file mode 100644
index 0000000000..007a25ed48
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_and_points.txt
@@ -0,0 +1,250 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+3360
+// aLineSize.Height
+4263
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;4263;3360;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+7498
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;7498;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+3235
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;3235;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+7037
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;7037;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16711807
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+6470
+// aLineSize.Height
+2592
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;2592;6470;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+8937
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;8937;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+7382
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;7382;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+6345
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;6345;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+7622
+// aLineSize.Height
+3226
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;3226;7622;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+10723
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;10723;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+7497
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;7497;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+8880
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;8880;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+4033
+// aLineSize.Height
+5772
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;5772;4033;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+9680
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;9680;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16776960
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+6794
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;6794;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16776960
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+3908
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;3908;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16776960
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_only.txt
new file mode 100644
index 0000000000..c92fbb1bfa
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_lines_only.txt
@@ -0,0 +1,58 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+3360
+// aLineSize.Height
+4263
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;4263;3360;0;0;1
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+6470
+// aLineSize.Height
+2592
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;2592;6470;0;0;1
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+10215
+// aLinePosition.Y
+7622
+// aLineSize.Height
+3226
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;3226;7622;0;0;1
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+2
+// aLinePosition.X
+10215
+// aLinePosition.Y
+4033
+// aLineSize.Height
+5772
+// aLineSize.Width
+15800
+// aLineTransformation
+15800;0;10215;0;5772;4033;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_points_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_points_only.txt
new file mode 100644
index 0000000000..61c521ff3a
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/normal_line_chart_points_only.txt
@@ -0,0 +1,198 @@
+// nSeriesCount
+4
+/// Series 0
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+7498
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;7498;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+3235
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;3235;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16711807
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+7037
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;7037;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16711807
+/// Series 1
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+8937
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;8937;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+7382
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;7382;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+6345
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;6345;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// Series 2
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+10723
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;10723;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+7497
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;7497;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+8880
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;8880;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+10079487
+/// Series 3
+/// Points are displayed
+// nPointCountInSeries
+3
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+10090
+// aPointPosition.Y
+9680
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;10090;0;250;9680;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16776960
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+17990
+// aPointPosition.Y
+6794
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;17990;0;250;6794;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16776960
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+25890
+// aPointPosition.Y
+3908
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;25890;0;250;3908;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16776960
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_and_points.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_and_points.txt
new file mode 100644
index 0000000000..01c6448c29
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_and_points.txt
@@ -0,0 +1,310 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+8218
+// aLineSize.Height
+2227
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;2227;8218;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+8093
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;8093;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+8212
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;8212;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+9941
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;9941;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+10320
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;10320;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+4844
+// aLineSize.Height
+2549
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;2549;4844;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+4719
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;4719;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+5660
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;5660;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+6718
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;6718;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+7268
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;7268;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+3131
+// aLineSize.Height
+1802
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;1802;3131;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+3006
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;3006;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+3164
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;3164;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+4808
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;4808;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+4184
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;4184;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+448
+// aLineSize.Height
+0
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;0;448;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+323
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;323;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+323
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;323;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+323
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;323;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+323
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;323;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_only.txt
new file mode 100644
index 0000000000..42eaae0b23
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_lines_only.txt
@@ -0,0 +1,58 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+8218
+// aLineSize.Height
+2227
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;2227;8218;0;0;1
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+4844
+// aLineSize.Height
+2549
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;2549;4844;0;0;1
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+3131
+// aLineSize.Height
+1802
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;1802;3131;0;0;1
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+448
+// aLineSize.Height
+0
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;0;448;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_points_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_points_only.txt
new file mode 100644
index 0000000000..c8d1819f90
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/percent_stacked_line_chart_points_only.txt
@@ -0,0 +1,258 @@
+// nSeriesCount
+4
+/// Series 0
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+2980
+// aPointPosition.Y
+8115
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2980;0;250;8115;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+9124
+// aPointPosition.Y
+8234
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9124;0;250;8234;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+15268
+// aPointPosition.Y
+9967
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15268;0;250;9967;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3
+// aPointPosition.X
+21412
+// aPointPosition.Y
+10347
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21412;0;250;10347;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// Series 1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+2980
+// aPointPosition.Y
+4732
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2980;0;250;4732;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+9124
+// aPointPosition.Y
+5675
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9124;0;250;5675;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+15268
+// aPointPosition.Y
+6736
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15268;0;250;6736;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3
+// aPointPosition.X
+21412
+// aPointPosition.Y
+7287
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21412;0;250;7287;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// Series 2
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+2980
+// aPointPosition.Y
+3014
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2980;0;250;3014;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+9124
+// aPointPosition.Y
+3173
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9124;0;250;3173;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+15268
+// aPointPosition.Y
+4821
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15268;0;250;4821;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=3
+// aPointPosition.X
+21412
+// aPointPosition.Y
+4196
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21412;0;250;4196;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// Series 3
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+2980
+// aPointPosition.Y
+324
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2980;0;250;324;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+9124
+// aPointPosition.Y
+324
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9124;0;250;324;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+15268
+// aPointPosition.Y
+324
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15268;0;250;324;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=3
+// aPointPosition.X
+21412
+// aPointPosition.Y
+324
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21412;0;250;324;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_and_points.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_and_points.txt
new file mode 100644
index 0000000000..c6ef9431cd
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_and_points.txt
@@ -0,0 +1,310 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+4801
+// aLinePosition.Y
+3760
+// aLineSize.Height
+3138
+// aLineSize.Width
+7912
+// aLineTransformation
+7912;0;4801;0;3138;3760;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+4676
+// aPointPosition.Y
+6773
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4676;0;250;6773;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+7313
+// aPointPosition.Y
+3635
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;7313;0;250;3635;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+9951
+// aPointPosition.Y
+6434
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9951;0;250;6434;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3
+// aPointPosition.X
+12588
+// aPointPosition.Y
+5034
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12588;0;250;5034;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+4801
+// aLinePosition.Y
+3912
+// aLineSize.Height
+4045
+// aLineSize.Width
+7912
+// aLineTransformation
+7912;0;4801;0;4045;3912;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+4676
+// aPointPosition.Y
+7832
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4676;0;250;7832;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+7313
+// aPointPosition.Y
+6688
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;7313;0;250;6688;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+9951
+// aPointPosition.Y
+5924
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9951;0;250;5924;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3
+// aPointPosition.X
+12588
+// aPointPosition.Y
+3787
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12588;0;250;3787;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+4801
+// aLinePosition.Y
+3845
+// aLineSize.Height
+5427
+// aLineSize.Width
+7912
+// aLineTransformation
+7912;0;4801;0;5427;3845;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+4676
+// aPointPosition.Y
+9147
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4676;0;250;9147;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+7313
+// aPointPosition.Y
+6772
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;7313;0;250;6772;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+9951
+// aPointPosition.Y
+7790
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9951;0;250;7790;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=3
+// aPointPosition.X
+12588
+// aPointPosition.Y
+3720
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12588;0;250;3720;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+4801
+// aLinePosition.Y
+2131
+// aLineSize.Height
+6373
+// aLineSize.Width
+7912
+// aLineTransformation
+7912;0;4801;0;6373;2131;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+4676
+// aPointPosition.Y
+8379
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4676;0;250;8379;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+7313
+// aPointPosition.Y
+6255
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;7313;0;250;6255;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+9951
+// aPointPosition.Y
+4131
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9951;0;250;4131;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=3
+// aPointPosition.X
+12588
+// aPointPosition.Y
+2006
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12588;0;250;2006;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_only.txt
new file mode 100644
index 0000000000..55a84b00fd
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_lines_only.txt
@@ -0,0 +1,58 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+5069
+// aLinePosition.Y
+3954
+// aLineSize.Height
+3299
+// aLineSize.Width
+8352
+// aLineTransformation
+8352;0;5069;0;3299;3954;0;0;1
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+5069
+// aLinePosition.Y
+4114
+// aLineSize.Height
+4253
+// aLineSize.Width
+8352
+// aLineTransformation
+8352;0;5069;0;4253;4114;0;0;1
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+5069
+// aLinePosition.Y
+4043
+// aLineSize.Height
+5706
+// aLineSize.Width
+8352
+// aLineTransformation
+8352;0;5069;0;5706;4043;0;0;1
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+5069
+// aLinePosition.Y
+2242
+// aLineSize.Height
+6700
+// aLineSize.Width
+8352
+// aLineTransformation
+8352;0;5069;0;6700;2242;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_points_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_points_only.txt
new file mode 100644
index 0000000000..1107f97cd0
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/scatter_chart_points_only.txt
@@ -0,0 +1,258 @@
+// nSeriesCount
+4
+/// Series 0
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+4695
+// aPointPosition.Y
+7540
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4695;0;250;7540;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+8618
+// aPointPosition.Y
+4016
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;8618;0;250;4016;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+12540
+// aPointPosition.Y
+7159
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12540;0;250;7159;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3
+// aPointPosition.X
+16463
+// aPointPosition.Y
+5588
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;16463;0;250;5588;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// Series 1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+4695
+// aPointPosition.Y
+8730
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4695;0;250;8730;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+8618
+// aPointPosition.Y
+7444
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;8618;0;250;7444;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+12540
+// aPointPosition.Y
+6587
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12540;0;250;6587;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3
+// aPointPosition.X
+16463
+// aPointPosition.Y
+4187
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;16463;0;250;4187;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// Series 2
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+4695
+// aPointPosition.Y
+10207
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4695;0;250;10207;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+8618
+// aPointPosition.Y
+7540
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;8618;0;250;7540;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+12540
+// aPointPosition.Y
+8683
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12540;0;250;8683;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=3
+// aPointPosition.X
+16463
+// aPointPosition.Y
+4111
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;16463;0;250;4111;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// Series 3
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+4695
+// aPointPosition.Y
+9344
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;4695;0;250;9344;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+8618
+// aPointPosition.Y
+6958
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;8618;0;250;6958;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+12540
+// aPointPosition.Y
+4572
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;12540;0;250;4572;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=3
+// aPointPosition.X
+16463
+// aPointPosition.Y
+2186
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;16463;0;250;2186;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_and_points.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_and_points.txt
new file mode 100644
index 0000000000..d58d57d1e8
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_and_points.txt
@@ -0,0 +1,310 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+10042
+// aLineSize.Height
+1320
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;1320;10042;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+11237
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;11237;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+9917
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;9917;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+11094
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;11094;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+10506
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;10506;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+7806
+// aLineSize.Height
+2432
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;2432;7806;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+10113
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;10113;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+8312
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;8312;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+9168
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;9168;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+7681
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;7681;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+4953
+// aLineSize.Height
+4715
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;4715;4953;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+9543
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;9543;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+6743
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;6743;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+8027
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;8027;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+4828
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;4828;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3101
+// aLinePosition.Y
+1380
+// aLineSize.Height
+7394
+// aLineSize.Width
+18406
+// aLineTransformation
+18406;0;3101;0;7394;1380;0;0;1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+8649
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;8649;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+4957
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;4957;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+5347
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;5347;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+1255
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;1255;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16744192
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_only.txt
new file mode 100644
index 0000000000..b8d7c7a241
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_lines_only.txt
@@ -0,0 +1,58 @@
+// nSeriesCount
+4
+/// Series 0
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3100
+// aLinePosition.Y
+10256
+// aLineSize.Height
+1221
+// aLineSize.Width
+18405
+// aLineTransformation
+18405;0;3100;0;1221;10256;0;0;1
+/// Series 1
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3100
+// aLinePosition.Y
+8187
+// aLineSize.Height
+2250
+// aLineSize.Width
+18405
+// aLineTransformation
+18405;0;3100;0;2250;8187;0;0;1
+/// Series 2
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3100
+// aLinePosition.Y
+5547
+// aLineSize.Height
+4362
+// aLineSize.Width
+18405
+// aLineTransformation
+18405;0;3100;0;4362;5547;0;0;1
+/// Series 3
+/// Lines are displayed
+// static_cast<sal_Int32>(aSeriesLineStyle)
+1
+// aLinePosition.X
+3100
+// aLinePosition.Y
+2240
+// aLineSize.Height
+6843
+// aLineSize.Width
+18405
+// aLineTransformation
+18405;0;3100;0;6843;2240;0;0;1
diff --git a/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_points_only.txt b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_points_only.txt
new file mode 100644
index 0000000000..8803c6e02d
--- /dev/null
+++ b/chart2/qa/extras/chart2dump/reference/pointlinecharttest/stacked_line_chart_points_only.txt
@@ -0,0 +1,258 @@
+// nSeriesCount
+4
+/// Series 0
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+11237
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;11237;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+9917
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;9917;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+11094
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;11094;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+10506
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;10506;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+17798
+/// Series 1
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+10113
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;10113;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+8312
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;8312;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+9168
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;9168;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+7681
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;7681;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16728590
+/// Series 2
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+9543
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;9543;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+6743
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;6743;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+8027
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;8027;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=2:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+4828
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;4828;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+16765728
+/// Series 3
+/// Points are displayed
+// nPointCountInSeries
+4
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=0
+// aPointPosition.X
+2976
+// aPointPosition.Y
+8649
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;2976;0;250;8649;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=1
+// aPointPosition.X
+9111
+// aPointPosition.Y
+4957
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;9111;0;250;4957;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=2
+// aPointPosition.X
+15246
+// aPointPosition.Y
+5347
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;15246;0;250;5347;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852
+/// CID/MultiClick/D=0:CS=0:CT=0:Series=3:Point=3
+// aPointPosition.X
+21382
+// aPointPosition.Y
+1255
+// aPointSize.Height
+250
+// aPointSize.Width
+250
+// aPointTransformation
+250;0;21382;0;250;1255;0;0;1
+// static_cast<sal_Int32>(aPointFillStyle)
+1
+// static_cast<sal_Int32>(aPointFillColor)
+5741852