summaryrefslogtreecommitdiffstats
path: root/chart2/qa/extras
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
commit267c6f2ac71f92999e969232431ba04678e7437e (patch)
tree358c9467650e1d0a1d7227a21dac2e3d08b622b2 /chart2/qa/extras
parentInitial commit. (diff)
downloadlibreoffice-267c6f2ac71f92999e969232431ba04678e7437e.tar.xz
libreoffice-267c6f2ac71f92999e969232431ba04678e7437e.zip
Adding upstream version 4:24.2.0.upstream/4%24.2.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'chart2/qa/extras')
-rw-r--r--chart2/qa/extras/PivotChartTest.cxx967
-rw-r--r--chart2/qa/extras/chart2_trendcalculators.cxx217
-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
-rw-r--r--chart2/qa/extras/chart2export.cxx1258
-rw-r--r--chart2/qa/extras/chart2export2.cxx1685
-rw-r--r--chart2/qa/extras/chart2export3.cxx767
-rw-r--r--chart2/qa/extras/chart2geometry.cxx493
-rw-r--r--chart2/qa/extras/chart2import.cxx2242
-rw-r--r--chart2/qa/extras/chart2import2.cxx892
-rw-r--r--chart2/qa/extras/charttest.hxx605
-rw-r--r--chart2/qa/extras/data/doc/chart.docbin0 -> 15872 bytes
-rw-r--r--chart2/qa/extras/data/docx/3d-bar-label.docxbin0 -> 24163 bytes
-rw-r--r--chart2/qa/extras/data/docx/Bar_horizontal_cone.docxbin0 -> 18237 bytes
-rw-r--r--chart2/qa/extras/data/docx/DisplayUnits.docxbin0 -> 18137 bytes
-rw-r--r--chart2/qa/extras/data/docx/FDO74430.docxbin0 -> 19199 bytes
-rw-r--r--chart2/qa/extras/data/docx/FDO75975.docxbin0 -> 18257 bytes
-rw-r--r--chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docxbin0 -> 25883 bytes
-rw-r--r--chart2/qa/extras/data/docx/MSO_axis_position.docxbin0 -> 41444 bytes
-rw-r--r--chart2/qa/extras/data/docx/PieChartDataLabels.docxbin0 -> 120403 bytes
-rw-r--r--chart2/qa/extras/data/docx/TableOnPage3.docxbin0 -> 35511 bytes
-rw-r--r--chart2/qa/extras/data/docx/UpDownBars.docxbin0 -> 24198 bytes
-rw-r--r--chart2/qa/extras/data/docx/area-chart-labels.docxbin0 -> 24123 bytes
-rw-r--r--chart2/qa/extras/data/docx/bar-chart-labels.docxbin0 -> 24357 bytes
-rw-r--r--chart2/qa/extras/data/docx/barChartRotation.docxbin0 -> 24220 bytes
-rw-r--r--chart2/qa/extras/data/docx/bubblechart.docxbin0 -> 17740 bytes
-rw-r--r--chart2/qa/extras/data/docx/chart.docxbin0 -> 17749 bytes
-rw-r--r--chart2/qa/extras/data/docx/clustered-bar-chart-labels.docxbin0 -> 22977 bytes
-rw-r--r--chart2/qa/extras/data/docx/data-label-borders.docxbin0 -> 34843 bytes
-rw-r--r--chart2/qa/extras/data/docx/data_point_inherited_color.docxbin0 -> 5426 bytes
-rw-r--r--chart2/qa/extras/data/docx/doughnut-chart-labels.docxbin0 -> 23902 bytes
-rw-r--r--chart2/qa/extras/data/docx/doughnutChart.docxbin0 -> 17486 bytes
-rw-r--r--chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docxbin0 -> 34418 bytes
-rw-r--r--chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docxbin0 -> 17942 bytes
-rw-r--r--chart2/qa/extras/data/docx/fdo78290_Combination_Chart_Marker_x.docxbin0 -> 24245 bytes
-rw-r--r--chart2/qa/extras/data/docx/fdo78290_Line_Chart_Marker_x.docxbin0 -> 24041 bytes
-rw-r--r--chart2/qa/extras/data/docx/fdo78290_Scatter_Chart_Marker_x.docxbin0 -> 23747 bytes
-rw-r--r--chart2/qa/extras/data/docx/fdo83058_dlblPos.docxbin0 -> 35931 bytes
-rw-r--r--chart2/qa/extras/data/docx/line-chart-label-default-placement.docxbin0 -> 17824 bytes
-rw-r--r--chart2/qa/extras/data/docx/pieChartRotation.docxbin0 -> 23528 bytes
-rw-r--r--chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docxbin0 -> 27165 bytes
-rw-r--r--chart2/qa/extras/data/docx/radar-chart-labels.docxbin0 -> 24223 bytes
-rw-r--r--chart2/qa/extras/data/docx/scatter-chart-text-x-values.docxbin0 -> 23974 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf121744.docxbin0 -> 25221 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf123206.docxbin0 -> 24223 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf124083.docxbin0 -> 25793 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf124243.docxbin0 -> 25872 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf125337.docxbin0 -> 25063 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf128794.docxbin0 -> 31616 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf132174.docxbin0 -> 13865 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf133632.docxbin0 -> 26280 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf134111.docxbin0 -> 22831 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf134255.docxbin0 -> 33169 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf136650.docxbin0 -> 25543 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf139658.docxbin0 -> 27488 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf143130.docxbin0 -> 26675 bytes
-rw-r--r--chart2/qa/extras/data/docx/tdf91250.docxbin0 -> 25895 bytes
-rw-r--r--chart2/qa/extras/data/docx/testAreaChartLoad.docxbin0 -> 23962 bytes
-rw-r--r--chart2/qa/extras/data/docx/testAxisTitlePosition.docxbin0 -> 26274 bytes
-rw-r--r--chart2/qa/extras/data/docx/testBarChart.docxbin0 -> 23955 bytes
-rw-r--r--chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docxbin0 -> 25590 bytes
-rw-r--r--chart2/qa/extras/data/docx/testChartDataTable.docxbin0 -> 18084 bytes
-rw-r--r--chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docxbin0 -> 47851 bytes
-rw-r--r--chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docxbin0 -> 5549 bytes
-rw-r--r--chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docxbin0 -> 5595 bytes
-rw-r--r--chart2/qa/extras/data/docx/testColorGradientWithTransparency.docxbin0 -> 25872 bytes
-rw-r--r--chart2/qa/extras/data/docx/testCustomlabeltext.docxbin0 -> 26031 bytes
-rw-r--r--chart2/qa/extras/data/docx/testLabelSeparator.docxbin0 -> 25333 bytes
-rw-r--r--chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docxbin0 -> 5890 bytes
-rw-r--r--chart2/qa/extras/data/docx/testMultipleChart.docxbin0 -> 47534 bytes
-rw-r--r--chart2/qa/extras/data/docx/testMultiplechartembeddings.docxbin0 -> 47534 bytes
-rw-r--r--chart2/qa/extras/data/docx/testSeriesIdxOrder.docxbin0 -> 25941 bytes
-rw-r--r--chart2/qa/extras/data/docx/testSimpleCategoryAxis.docxbin0 -> 31629 bytes
-rw-r--r--chart2/qa/extras/data/docx/testStockChart.docxbin0 -> 19894 bytes
-rw-r--r--chart2/qa/extras/data/docx/testTdf108110.docxbin0 -> 25892 bytes
-rw-r--r--chart2/qa/extras/data/docx/testTdf114179.docxbin0 -> 5839 bytes
-rw-r--r--chart2/qa/extras/data/docx/testTdf122226.docxbin0 -> 19648 bytes
-rw-r--r--chart2/qa/extras/data/docx/testchartoleobjectembeddings.docxbin0 -> 2041727 bytes
-rw-r--r--chart2/qa/extras/data/docx/testcustomshapepos.docxbin0 -> 26359 bytes
-rw-r--r--chart2/qa/extras/data/fods/stacked-column-chart.fods861
-rw-r--r--chart2/qa/extras/data/odp/BarChartVeryLongLabel.odpbin0 -> 16390 bytes
-rw-r--r--chart2/qa/extras/data/odp/chart.odpbin0 -> 14747 bytes
-rw-r--r--chart2/qa/extras/data/odp/ellipticalGradientFill.odpbin0 -> 17071 bytes
-rw-r--r--chart2/qa/extras/data/odp/tdf119029.odpbin0 -> 13643 bytes
-rw-r--r--chart2/qa/extras/data/odp/tdf121189.odpbin0 -> 16945 bytes
-rw-r--r--chart2/qa/extras/data/odp/tdf123206.odpbin0 -> 19589 bytes
-rw-r--r--chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odpbin0 -> 19486 bytes
-rw-r--r--chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odpbin0 -> 16551 bytes
-rw-r--r--chart2/qa/extras/data/odp/tdf128345_Legend_CS_TG_axial.odpbin0 -> 15174 bytes
-rw-r--r--chart2/qa/extras/data/ods/ErrorBarRange.odsbin0 -> 17937 bytes
-rw-r--r--chart2/qa/extras/data/ods/PivotChartRoundTrip.odsbin0 -> 21988 bytes
-rw-r--r--chart2/qa/extras/data/ods/PivotTableExample.odsbin0 -> 17183 bytes
-rw-r--r--chart2/qa/extras/data/ods/axis-numformats-linked.odsbin0 -> 26944 bytes
-rw-r--r--chart2/qa/extras/data/ods/axis_number_format.odsbin0 -> 12662 bytes
-rw-r--r--chart2/qa/extras/data/ods/chart.odsbin0 -> 12599 bytes
-rw-r--r--chart2/qa/extras/data/ods/chartWithDotInSheetName.odsbin0 -> 15057 bytes
-rw-r--r--chart2/qa/extras/data/ods/combined_chart_secondary_axis.odsbin0 -> 16334 bytes
-rw-r--r--chart2/qa/extras/data/ods/error_bar.odsbin0 -> 13724 bytes
-rw-r--r--chart2/qa/extras/data/ods/error_bar_properties.odsbin0 -> 17387 bytes
-rw-r--r--chart2/qa/extras/data/ods/error_bar_range.odsbin0 -> 13490 bytes
-rw-r--r--chart2/qa/extras/data/ods/fdo60083.odsbin0 -> 14538 bytes
-rw-r--r--chart2/qa/extras/data/ods/labelString.odsbin0 -> 17401 bytes
-rw-r--r--chart2/qa/extras/data/ods/legend_overlay.odsbin0 -> 12314 bytes
-rw-r--r--chart2/qa/extras/data/ods/moving-type.odsbin0 -> 29749 bytes
-rw-r--r--chart2/qa/extras/data/ods/multilevelcat.odsbin0 -> 13559 bytes
-rw-r--r--chart2/qa/extras/data/ods/multiple_axis.odsbin0 -> 12864 bytes
-rw-r--r--chart2/qa/extras/data/ods/pie_chart_100_and_0.odsbin0 -> 11354 bytes
-rw-r--r--chart2/qa/extras/data/ods/secondary_axis.odsbin0 -> 16783 bytes
-rw-r--r--chart2/qa/extras/data/ods/ser_labels.odsbin0 -> 29539 bytes
-rw-r--r--chart2/qa/extras/data/ods/smoothedLines.odsbin0 -> 16115 bytes
-rw-r--r--chart2/qa/extras/data/ods/stepped_lines.odsbin0 -> 76168 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf101894.odsbin0 -> 18221 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf107097.odsbin0 -> 17945 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf108021.odsbin0 -> 16728 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf120348.odsbin0 -> 43612 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf123774.odsbin0 -> 16140 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf128432.odsbin0 -> 13755 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf131115.odsbin0 -> 13814 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf131979.odsbin0 -> 11510 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf132076.odsbin0 -> 16138 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf135366_data_label_series.odsbin0 -> 7661 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf136011.odsbin0 -> 23559 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf136024.odsbin0 -> 15430 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf146066.odsbin0 -> 15079 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf146463.odsbin0 -> 21780 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf148142.odsbin0 -> 15349 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf151091.odsbin0 -> 14140 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf158223.odsbin0 -> 27391 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf59857.odsbin0 -> 33209 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf62057.odsbin0 -> 16852 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf64224.odsbin0 -> 33209 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf72776.odsbin0 -> 14798 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf86624.odsbin0 -> 14461 bytes
-rw-r--r--chart2/qa/extras/data/ods/tdf96161.odsbin0 -> 17545 bytes
-rw-r--r--chart2/qa/extras/data/ods/testChartMainWithSubTitle.odsbin0 -> 12317 bytes
-rw-r--r--chart2/qa/extras/data/ods/testChartSubTitle.odsbin0 -> 12598 bytes
-rw-r--r--chart2/qa/extras/data/ods/testColorGradientWithTransparency.odsbin0 -> 17224 bytes
-rw-r--r--chart2/qa/extras/data/ods/test_CrossBetween.odsbin0 -> 12365 bytes
-rw-r--r--chart2/qa/extras/data/ods/trend_calculators.odsbin0 -> 45107 bytes
-rw-r--r--chart2/qa/extras/data/ods/trendline.odsbin0 -> 17563 bytes
-rw-r--r--chart2/qa/extras/data/odt/axis-position.odtbin0 -> 21224 bytes
-rw-r--r--chart2/qa/extras/data/odt/chart.odtbin0 -> 13470 bytes
-rw-r--r--chart2/qa/extras/data/odt/multilevelcat.odtbin0 -> 13942 bytes
-rw-r--r--chart2/qa/extras/data/odt/scatter-plot-labels.odtbin0 -> 13454 bytes
-rw-r--r--chart2/qa/extras/data/odt/stock_chart_LO_6_2.odtbin0 -> 16810 bytes
-rw-r--r--chart2/qa/extras/data/odt/tdf108022.odtbin0 -> 23191 bytes
-rw-r--r--chart2/qa/extras/data/odt/tdf114657.odtbin0 -> 12890 bytes
-rw-r--r--chart2/qa/extras/data/odt/tdf128733.odtbin0 -> 13708 bytes
-rw-r--r--chart2/qa/extras/data/odt/tdf131143.odtbin0 -> 13970 bytes
-rw-r--r--chart2/qa/extras/data/odt/tdf135366_data_label_export.odtbin0 -> 16069 bytes
-rw-r--r--chart2/qa/extras/data/odt/tdf135366_data_label_point.odtbin0 -> 8344 bytes
-rw-r--r--chart2/qa/extras/data/odt/testPieChartWallLineStyle.odtbin0 -> 16427 bytes
-rw-r--r--chart2/qa/extras/data/ppt/chart.pptbin0 -> 76800 bytes
-rw-r--r--chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptxbin0 -> 165804 bytes
-rw-r--r--chart2/qa/extras/data/pptx/bnc864396.pptxbin0 -> 41580 bytes
-rw-r--r--chart2/qa/extras/data/pptx/bnc882383.pptxbin0 -> 43962 bytes
-rw-r--r--chart2/qa/extras/data/pptx/bnc889755.pptxbin0 -> 34771 bytes
-rw-r--r--chart2/qa/extras/data/pptx/chart.pptxbin0 -> 33393 bytes
-rw-r--r--chart2/qa/extras/data/pptx/percentage-number-formats.pptxbin0 -> 58872 bytes
-rw-r--r--chart2/qa/extras/data/pptx/sparse-chart.pptxbin0 -> 57398 bytes
-rw-r--r--chart2/qa/extras/data/pptx/stacked-bar-chart-hidden-series.pptxbin0 -> 54370 bytes
-rw-r--r--chart2/qa/extras/data/pptx/stacked-non-stacked-mix-y-axis.pptxbin0 -> 86216 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf105517.pptxbin0 -> 37194 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf106217.pptxbin0 -> 47976 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf115107-2.pptxbin0 -> 50519 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf115107.pptxbin0 -> 50726 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf115859.pptxbin0 -> 49120 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf116163.pptxbin0 -> 47591 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf121205.pptxbin0 -> 42922 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf122765.pptxbin0 -> 47625 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf125444.pptxbin0 -> 34078 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf127393.pptxbin0 -> 64536 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf127720.pptxbin0 -> 38935 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf127811.pptxbin0 -> 59647 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptxbin0 -> 21913 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptxbin0 -> 21921 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf128345_Legend_CS_TG_axial.pptxbin0 -> 21932 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptxbin0 -> 36946 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf137691_dataTable.pptxbin0 -> 49901 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf150176.pptxbin0 -> 52342 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf48041.pptxbin0 -> 23937 bytes
-rw-r--r--chart2/qa/extras/data/pptx/tdf60316.pptxbin0 -> 46023 bytes
-rw-r--r--chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptxbin0 -> 50865 bytes
-rw-r--r--chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptxbin0 -> 47424 bytes
-rw-r--r--chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptxbin0 -> 47473 bytes
-rw-r--r--chart2/qa/extras/data/xls/axis_sourceformatting.xlsbin0 -> 7168 bytes
-rw-r--r--chart2/qa/extras/data/xls/chart.xlsbin0 -> 7168 bytes
-rw-r--r--chart2/qa/extras/data/xls/piechart_outside.xlsbin0 -> 60928 bytes
-rw-r--r--chart2/qa/extras/data/xls/source_number_format_axis.xlsbin0 -> 7168 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/ChartDataTable.xlsxbin0 -> 8142 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsxbin0 -> 15745 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsxbin0 -> 20217 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsxbin0 -> 16250 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/autotitledel_2007.xlsxbin0 -> 10455 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/autotitledel_2013.xlsxbin0 -> 13222 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/axis-label-rotation.xlsxbin0 -> 13698 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/axis_character_properties.xlsxbin0 -> 10381 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsxbin0 -> 11868 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/axis_title_rotated.xlsxbin0 -> 11579 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/axis_title_rotation.xlsxbin0 -> 13057 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/bar_chart_simple.xlsxbin0 -> 12966 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/barchart_outend.xlsxbin0 -> 15277 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsxbin0 -> 20117 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsxbin0 -> 13010 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart-area-style-background.xlsxbin0 -> 13796 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart-area-style-border.xlsxbin0 -> 12006 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart-auto-background.xlsxbin0 -> 11310 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsxbin0 -> 11579 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsxbin0 -> 13368 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart.xlsxbin0 -> 7055 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart_label_text_break.xlsxbin0 -> 13940 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart_pie2007.xlsxbin0 -> 9091 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart_title.xlsxbin0 -> 13085 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/chart_with_name_range.xlsxbin0 -> 14575 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsxbin0 -> 15304 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/custom_data_label.xlsxbin0 -> 13944 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/data_label.xlsxbin0 -> 13057 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsxbin0 -> 11256 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/deleted_data_labels.xlsxbin0 -> 7536 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsxbin0 -> 14346 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsxbin0 -> 20060 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsxbin0 -> 10520 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsxbin0 -> 13430 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/empty_chart.xlsxbin0 -> 13370 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/external_str_ref.xlsxbin0 -> 23847 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/fdo54361-1.xlsxbin0 -> 11106 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/fdo54361.xlsxbin0 -> 10273 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/fdo70609.xlsxbin0 -> 13654 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/fdo78080.xlsxbin0 -> 7020 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/gapWidth.xlsxbin0 -> 18668 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/hidden_cells.xlsxbin0 -> 11215 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/incorrect_label_position.xlsxbin0 -> 14112 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/legend_manual_layout.xlsxbin0 -> 13145 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/majorTickMark.xlsxbin0 -> 11223 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/markerColor.xlsxbin0 -> 12999 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/minorTickMark.xlsxbin0 -> 11256 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/no_marker.xlsxbin0 -> 13006 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/number-formats.xlsxbin0 -> 12638 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsxbin0 -> 19237 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsxbin0 -> 13447 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/piechart_legend.xlsxbin0 -> 13426 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/piechart_outside.xlsxbin0 -> 15473 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/plotVisOnly.xlsxbin0 -> 11206 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsxbin0 -> 13142 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/rAngAx.xlsxbin0 -> 11364 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsxbin0 -> 11529 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/ser_labels.xlsxbin0 -> 18412 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/smoothed_series.xlsxbin0 -> 12836 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/smoothed_series2007.xlsxbin0 -> 12351 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/strict_chart.xlsxbin0 -> 12779 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf100084.xlsxbin0 -> 10070 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf108107.xlsxbin0 -> 14277 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf111173.xlsxbin0 -> 16013 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf111824.xlsxbin0 -> 15235 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf114139.xlsxbin0 -> 18794 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf115012.xlsxbin0 -> 13729 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsxbin0 -> 8424 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf122031.xlsxbin0 -> 13229 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf122915.xlsxbin0 -> 14310 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf124817.xlsxbin0 -> 20868 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf126033.xlsxbin0 -> 20012 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf126115.xlsxbin0 -> 20173 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf127777.xlsxbin0 -> 14421 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf128619.xlsxbin0 -> 13658 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf128621.xlsxbin0 -> 15011 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf128627.xlsxbin0 -> 14307 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf128633.xlsxbin0 -> 15018 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf128634.xlsxbin0 -> 14185 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf128732.xlsxbin0 -> 7511 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf130657.xlsxbin0 -> 7468 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf130986.xlsxbin0 -> 15393 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf132076.xlsxbin0 -> 14632 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsxbin0 -> 12142 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf133376.xlsxbin0 -> 12736 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf134118.xlsxbin0 -> 16014 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf134225.xlsxbin0 -> 13956 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf134978.xlsxbin0 -> 13746 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsxbin0 -> 25538 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsxbin0 -> 21937 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf136105.xlsxbin0 -> 16753 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf136267.xlsxbin0 -> 31986 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf136752.xlsxbin0 -> 11909 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf137505.xlsxbin0 -> 14908 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf137734.xlsxbin0 -> 6504 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf137917.xlsxbin0 -> 13940 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf138204.xlsxbin0 -> 15138 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf140489.xlsxbin0 -> 32626 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf142351.xlsxbin0 -> 15077 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf143127.xlsxbin0 -> 18486 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf143942.xlsxbin0 -> 13697 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf150434.xlsxbin0 -> 14918 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf81396.xlsxbin0 -> 8224 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf90876.xlsxbin0 -> 12736 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdf98690.xlsxbin0 -> 17975 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsxbin0 -> 13917 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsxbin0 -> 15501 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsxbin0 -> 15097 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsxbin0 -> 14007 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsxbin0 -> 49790 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsxbin0 -> 11515 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsxbin0 -> 7542 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsxbin0 -> 20857 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsxbin0 -> 14332 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsxbin0 -> 15069 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsxbin0 -> 11007 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testErrorBarProp.xlsxbin0 -> 14559 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsxbin0 -> 14757 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testTdf130032.xlsxbin0 -> 14208 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/testTdf90749.xlsxbin0 -> 14505 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/title_character_properties.xlsxbin0 -> 10355 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/title_manual_layout.xlsxbin0 -> 13160 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/trendline.xlsxbin0 -> 13397 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/trendline2007.xlsxbin0 -> 12514 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/vary_color.xlsxbin0 -> 13935 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/vary_color2007.xlsxbin0 -> 13142 bytes
-rw-r--r--chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsxbin0 -> 13601 bytes
-rw-r--r--chart2/qa/extras/uichart.cxx441
-rw-r--r--chart2/qa/extras/xshape/chart2xshape.cxx322
-rw-r--r--chart2/qa/extras/xshape/data/ods/fdo75075.odsbin0 -> 15763 bytes
-rw-r--r--chart2/qa/extras/xshape/data/ods/property-mapping-bar.odsbin0 -> 15481 bytes
-rw-r--r--chart2/qa/extras/xshape/data/ods/tdf151424.odsbin0 -> 17727 bytes
-rw-r--r--chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.odsbin0 -> 12060 bytes
-rw-r--r--chart2/qa/extras/xshape/data/ods/tdf90839-4.odsbin0 -> 19765 bytes
-rw-r--r--chart2/qa/extras/xshape/data/ods/testChart.odsbin0 -> 11156 bytes
-rw-r--r--chart2/qa/extras/xshape/data/pptx/tdf149204.pptxbin0 -> 33324 bytes
-rw-r--r--chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptxbin0 -> 34771 bytes
-rw-r--r--chart2/qa/extras/xshape/data/reference/fdo75075.xml1692
-rw-r--r--chart2/qa/extras/xshape/data/reference/property-mapping-bar.xml1164
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf149204.xml397
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf150832.xml974
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf151424.xml1160
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-1.xml336
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-2.xml336
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-3.xml336
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-4.xml336
-rw-r--r--chart2/qa/extras/xshape/data/reference/testChart.xml1218
-rw-r--r--chart2/qa/extras/xshape/data/reference/tolerance.xml15
-rw-r--r--chart2/qa/extras/xshape/data/xls/tdf150832.xlsbin0 -> 7168 bytes
-rw-r--r--chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsxbin0 -> 13080 bytes
-rw-r--r--chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsxbin0 -> 12498 bytes
-rw-r--r--chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsxbin0 -> 13200 bytes
449 files changed, 25816 insertions, 0 deletions
diff --git a/chart2/qa/extras/PivotChartTest.cxx b/chart2/qa/extras/PivotChartTest.cxx
new file mode 100644
index 0000000000..d6a87ec057
--- /dev/null
+++ b/chart2/qa/extras/PivotChartTest.cxx
@@ -0,0 +1,967 @@
+/* -*- 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/sheet/DataPilotFieldOrientation.hpp>
+#include <com/sun/star/sheet/DataPilotFieldLayoutMode.hpp>
+#include <com/sun/star/sheet/DataPilotFieldLayoutInfo.hpp>
+#include <com/sun/star/sheet/XDataPilotTable.hpp>
+#include <com/sun/star/sheet/XDataPilotDescriptor.hpp>
+#include <com/sun/star/sheet/XDataPilotTables.hpp>
+#include <com/sun/star/sheet/XDataPilotTablesSupplier.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheets.hpp>
+#include <com/sun/star/table/XTablePivotCharts.hpp>
+#include <com/sun/star/sheet/GeneralFunction.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/util/XNumberFormatTypes.hpp>
+#include <com/sun/star/util/NumberFormat.hpp>
+
+#include <com/sun/star/chart2/data/XPivotTableDataProvider.hpp>
+#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
+
+namespace com::sun::star::table { class XCellRange; }
+namespace com::sun::star::util { class XNumberFormats; }
+
+class PivotChartTest : public ChartTest
+{
+public:
+ PivotChartTest()
+ : ChartTest("/chart2/qa/extras/data/")
+ {}
+
+ void testRoundtrip();
+ void testChangePivotTable();
+ void testPivotChartWithOneColumnField();
+ void testPivotChartWithOneRowField();
+ void testPivotTableDataProvider_PivotTableFields();
+ void testPivotChartRowFieldInOutlineMode();
+ void testPivotChartWithDateRowField();
+
+ CPPUNIT_TEST_SUITE(PivotChartTest);
+ CPPUNIT_TEST(testRoundtrip);
+ CPPUNIT_TEST(testChangePivotTable);
+ CPPUNIT_TEST(testPivotChartWithOneColumnField);
+ CPPUNIT_TEST(testPivotChartWithOneRowField);
+ CPPUNIT_TEST(testPivotTableDataProvider_PivotTableFields);
+ CPPUNIT_TEST(testPivotChartRowFieldInOutlineMode);
+ CPPUNIT_TEST(testPivotChartWithDateRowField);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+namespace
+{
+
+void lclModifyOrientation(uno::Reference<sheet::XDataPilotDescriptor> const & xDescriptor,
+ std::u16string_view sFieldName,
+ sheet::DataPilotFieldOrientation eOrientation)
+{
+ uno::Reference<container::XIndexAccess> xIndexAccess(xDescriptor->getDataPilotFields(), UNO_SET_THROW);
+ sal_Int32 nCount = xIndexAccess->getCount();
+ for (sal_Int32 i = 0; i < nCount; ++i)
+ {
+ uno::Reference<container::XNamed> xNamed(xIndexAccess->getByIndex(i), UNO_QUERY_THROW);
+ OUString aName = xNamed->getName();
+ uno::Reference<beans::XPropertySet> xPropSet(xNamed, UNO_QUERY_THROW);
+ if (aName == sFieldName)
+ xPropSet->setPropertyValue("Orientation", uno::Any(eOrientation));
+ }
+}
+
+void lclModifyFunction(uno::Reference<sheet::XDataPilotDescriptor> const & xDescriptor,
+ std::u16string_view sFieldName,
+ sheet::GeneralFunction eFunction)
+{
+ uno::Reference<container::XIndexAccess> xPilotIndexAccess(xDescriptor->getDataPilotFields(), UNO_SET_THROW);
+ sal_Int32 nCount = xPilotIndexAccess->getCount();
+ for (sal_Int32 i = 0; i < nCount; ++i)
+ {
+ uno::Reference<container::XNamed> xNamed(xPilotIndexAccess->getByIndex(i), UNO_QUERY_THROW);
+ OUString aName = xNamed->getName();
+ uno::Reference<beans::XPropertySet> xPropSet(xNamed, UNO_QUERY_THROW);
+ if (aName == sFieldName)
+ xPropSet->setPropertyValue("Function", uno::Any(eFunction));
+ }
+}
+
+void lclModifyLayoutInfo(uno::Reference<sheet::XDataPilotDescriptor> const & xDescriptor,
+ std::u16string_view sFieldName,
+ sheet::DataPilotFieldLayoutInfo aLayoutInfo)
+{
+ uno::Reference<container::XIndexAccess> xIndexAccess(xDescriptor->getDataPilotFields(), UNO_SET_THROW);
+ sal_Int32 nCount = xIndexAccess->getCount();
+ for (sal_Int32 i = 0; i < nCount; ++i)
+ {
+ uno::Reference<container::XNamed> xNamed(xIndexAccess->getByIndex(i), UNO_QUERY_THROW);
+ OUString aName = xNamed->getName();
+ uno::Reference<beans::XPropertySet> xPropSet(xNamed, UNO_QUERY_THROW);
+ if (aName == sFieldName)
+ {
+ uno::Any aValue;
+ aValue <<= aLayoutInfo;
+ xPropSet->setPropertyValue("LayoutInfo", aValue);
+ }
+ }
+}
+
+void lclModifySubtotals(uno::Reference<sheet::XDataPilotDescriptor> const & xDescriptor,
+ std::u16string_view sFieldName,
+ uno::Sequence<sheet::GeneralFunction> const & rSubtotalFunctions)
+{
+ uno::Reference<container::XIndexAccess> xIndexAccess(xDescriptor->getDataPilotFields(), UNO_SET_THROW);
+ sal_Int32 nCount = xIndexAccess->getCount();
+ for (sal_Int32 i = 0; i < nCount; ++i)
+ {
+ uno::Reference<container::XNamed> xNamed(xIndexAccess->getByIndex(i), UNO_QUERY_THROW);
+ OUString aName = xNamed->getName();
+ uno::Reference<beans::XPropertySet> xPropSet(xNamed, UNO_QUERY_THROW);
+ if (aName == sFieldName)
+ {
+ uno::Any aValue;
+ aValue <<= rSubtotalFunctions;
+ xPropSet->setPropertyValue("Subtotals", aValue);
+ }
+ }
+}
+
+void lclModifyColumnGrandTotal(uno::Reference<sheet::XDataPilotDescriptor> const & xDataPilotDescriptor, bool bTotal)
+{
+ uno::Reference<beans::XPropertySet> xProperties(xDataPilotDescriptor, uno::UNO_QUERY_THROW);
+ xProperties->setPropertyValue("ColumnGrand", uno::Any(bTotal));
+}
+
+void lclModifyRowGrandTotal(uno::Reference<sheet::XDataPilotDescriptor> const & xDataPilotDescriptor, bool bTotal)
+{
+ uno::Reference<beans::XPropertySet> xProperties(xDataPilotDescriptor, uno::UNO_QUERY_THROW);
+ xProperties->setPropertyValue("RowGrand", uno::Any(bTotal));
+}
+
+void lclCheckSequence(std::vector<double> const & reference,
+ uno::Sequence<uno::Any> const & values,
+ double delta)
+{
+ CPPUNIT_ASSERT_EQUAL(reference.size(), size_t(values.getLength()));
+ for (size_t i = 0; i < reference.size(); ++i)
+ {
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(
+ reference[i], values[i].get<double>(), delta);
+ }
+}
+
+void lclCheckCategories(std::vector<OUString> const & reference,
+ uno::Reference<chart2::data::XDataSequence> const & xSequence)
+{
+ uno::Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xSequence, uno::UNO_QUERY_THROW);
+ uno::Sequence<OUString> aText = xTextualDataSequence->getTextualData();
+
+ CPPUNIT_ASSERT_EQUAL(reference.size(), size_t(aText.getLength()));
+ for (size_t i = 0; i < reference.size(); ++i)
+ {
+ CPPUNIT_ASSERT_EQUAL(reference[i], aText[i]);
+ }
+}
+
+OUString lclGetLabel(Reference<chart2::XChartDocument> const & xChartDoc, sal_Int32 nSeriesIndex)
+{
+ Reference<chart2::data::XDataSequence> xLabelDataSequence = getLabelDataSequenceFromDoc(xChartDoc, nSeriesIndex);
+ return xLabelDataSequence->getData()[0].get<OUString>();
+}
+
+uno::Reference<sheet::XDataPilotTable> lclGetPivotTableByName(sal_Int32 nIndex, OUString const & sPivotTableName,
+ uno::Reference<lang::XComponent> const & xComponent)
+{
+ uno::Reference<sheet::XSpreadsheetDocument> xDoc(xComponent, UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xSheetIndexAccess(xDoc->getSheets(), UNO_QUERY_THROW);
+ uno::Any aAny = xSheetIndexAccess->getByIndex(nIndex);
+ uno::Reference<sheet::XSpreadsheet> xSheet;
+ CPPUNIT_ASSERT(aAny >>= xSheet);
+ uno::Reference<sheet::XDataPilotTablesSupplier> xDataPilotTablesSupplier(xSheet, uno::UNO_QUERY_THROW);
+ uno::Reference<sheet::XDataPilotTables> xDataPilotTables = xDataPilotTablesSupplier->getDataPilotTables();
+ return uno::Reference<sheet::XDataPilotTable>(xDataPilotTables->getByName(sPivotTableName), UNO_QUERY_THROW);
+}
+
+uno::Sequence<uno::Reference<chart2::data::XLabeledDataSequence>>
+ lclGetCategories(Reference<chart2::XChartDocument> const & xChartDoc)
+{
+ uno::Sequence<beans::PropertyValue> aArguments( comphelper::InitPropertySequence(
+ {{"CellRangeRepresentation", uno::Any(OUString("PT@categories"))}} ));
+
+ uno::Reference<chart2::data::XDataProvider> xDataProvider(xChartDoc->getDataProvider(), uno::UNO_SET_THROW);
+ return xDataProvider->createDataSource(aArguments)->getDataSequences();
+}
+
+struct Value
+{
+ OUString maString;
+ double mfValue;
+ bool mbIsValue;
+
+ Value(OUString const & rString)
+ : maString(rString)
+ , mfValue(0.0)
+ , mbIsValue(false)
+ {}
+
+ Value(double fValue)
+ : mfValue(fValue)
+ , mbIsValue(true)
+ {}
+};
+
+uno::Reference< sheet::XDataPilotTables>
+lclGetDataPilotTables(sal_Int32 nIndex, uno::Reference<sheet::XSpreadsheetDocument> const & xSheetDoc)
+{
+ uno::Reference<sheet::XSpreadsheets> xSpreadsheets = xSheetDoc->getSheets();
+ uno::Reference<container::XIndexAccess> oIndexAccess(xSpreadsheets, uno::UNO_QUERY_THROW);
+ uno::Reference<sheet::XSpreadsheet> xSheet;
+ CPPUNIT_ASSERT(oIndexAccess->getByIndex(nIndex) >>= xSheet);
+
+ // create the test objects
+ uno::Reference< sheet::XDataPilotTablesSupplier> xDataPilotTablesSupplier(xSheet, uno::UNO_QUERY_THROW);
+ return xDataPilotTablesSupplier->getDataPilotTables();
+}
+
+table::CellRangeAddress lclCreateTestData(uno::Reference<sheet::XSpreadsheetDocument> const & xSheetDoc)
+{
+ CPPUNIT_ASSERT_MESSAGE("no calc document!", xSheetDoc.is());
+
+ std::vector<OUString> aHeaders {
+ "Country", "City", "Type", "Sales T1", "Sales T2", "Sales T3", "Sales T4", "Date"
+ };
+
+ std::vector<std::vector<Value>> aData {
+ { {"FR"}, {"Paris"}, {"A"}, {123.0}, {223.0}, {323.0}, {423.0}, {"12/14/15"} },
+ { {"EN"}, {"London"}, {"A"}, {456.0}, {556.0}, {656.0}, {756.0}, {"12/11/15"} },
+ { {"DE"}, {"Berlin"}, {"A"}, {468.0}, {568.0}, {668.0}, {768.0}, {"12/11/15"} },
+ { {"FR"}, {"Nantes"}, {"A"}, {694.0}, {794.0}, {894.0}, {994.0}, {"12/11/15"} },
+ { {"EN"}, {"Glasgow"}, {"A"}, {298.0}, {398.0}, {498.0}, {598.0}, {"12/11/15"} },
+ { {"DE"}, {"Munich"}, {"A"}, {369.0}, {469.0}, {569.0}, {669.0}, {"12/11/15"} },
+ { {"FR"}, {"Paris"}, {"B"}, {645.0}, {745.0}, {845.0}, {945.0}, {"12/11/15"} },
+ { {"EN"}, {"London"}, {"B"}, {687.0}, {787.0}, {887.0}, {987.0}, {"03/21/17"} },
+ { {"DE"}, {"Munich"}, {"B"}, {253.0}, {353.0}, {453.0}, {553.0}, {"12/17/15"} },
+ { {"FR"}, {"Nantes"}, {"B"}, {474.0}, {574.0}, {674.0}, {774.0}, {"01/20/16"} },
+ { {"EN"}, {"Liverpool"}, {"B"}, {562.0}, {662.0}, {762.0}, {862.0}, {"01/20/16"} },
+ { {"DE"}, {"Berlin"}, {"B"}, {648.0}, {748.0}, {848.0}, {948.0}, {"01/20/16"} }
+ };
+
+ // Getting spreadsheet
+ uno::Reference<sheet::XSpreadsheets> xSpreadsheets = xSheetDoc->getSheets();
+ uno::Reference<container::XIndexAccess> oIndexAccess(xSpreadsheets, uno::UNO_QUERY_THROW);
+ uno::Reference<sheet::XSpreadsheet> xSheet;
+ CPPUNIT_ASSERT(oIndexAccess->getByIndex(0) >>= xSheet);
+
+ uno::Reference<sheet::XSpreadsheet> oPivotTableSheet;
+ xSpreadsheets->insertNewByName("Pivot Table", 1);
+ CPPUNIT_ASSERT(oIndexAccess->getByIndex(1) >>= oPivotTableSheet);
+
+ sal_Int32 currentRow = 0;
+ for (size_t column = 0; column < aHeaders.size(); ++column)
+ {
+ xSheet->getCellByPosition(column, currentRow)->setFormula(aHeaders[column]);
+ }
+ currentRow++;
+
+ for (std::vector<Value> const & rRowOfData : aData)
+ {
+ for (size_t column = 0; column < rRowOfData.size(); ++column)
+ {
+ Value const & rValue = rRowOfData[column];
+ uno::Reference<table::XCell> xCell(xSheet->getCellByPosition(column, currentRow));
+ if (rValue.mbIsValue)
+ xCell->setValue(rValue.mfValue);
+ else
+ xCell->setFormula(rValue.maString);
+ }
+ currentRow++;
+ }
+
+ sal_Int32 nEndCol = sal_Int32(aHeaders.size() - 1);
+ sal_Int32 nEndRow = sal_Int32(1/*HEADER*/ + aData.size() - 1);
+
+ // Apply date format to the last column
+ uno::Reference<util::XNumberFormatsSupplier> xNumberFormatsSupplier(xSheetDoc, UNO_QUERY_THROW);
+ uno::Reference<util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ uno::Reference<util::XNumberFormatTypes> xNumberFormatTypes(xNumberFormats, UNO_QUERY_THROW);
+ lang::Locale aLocale;
+ sal_Int32 nDateKey = xNumberFormatTypes->getStandardFormat(util::NumberFormat::DATE, aLocale);
+ uno::Reference<table::XCellRange> xCellRange = xSheet->getCellRangeByPosition(nEndCol, 1, nEndCol, nEndRow);
+ uno::Reference<beans::XPropertySet> xCellProp(xCellRange, UNO_QUERY_THROW);
+ xCellProp->setPropertyValue("NumberFormat", uno::Any(nDateKey));
+
+ table::CellRangeAddress sCellRangeAddress;
+ sCellRangeAddress.Sheet = 0;
+ sCellRangeAddress.StartColumn = 0;
+ sCellRangeAddress.StartRow = 0;
+ sCellRangeAddress.EndColumn = nEndCol;
+ sCellRangeAddress.EndRow = nEndRow;
+
+ return sCellRangeAddress;
+}
+
+} // end anonymous namespace
+
+void PivotChartTest::testRoundtrip()
+{
+ uno::Sequence<uno::Any> xSequence;
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ std::vector<double> aReference1 { 10162.033139, 16614.523063, 27944.146101 };
+
+ std::vector<double> aReference2 { 101879.458079, 178636.929704, 314626.484864 };
+
+ loadFromFile(u"ods/PivotChartRoundTrip.ods");
+
+ xChartDoc = getPivotChartDocFromSheet(1, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), getNumberOfDataSeries(xChartDoc));
+
+ // Check the data series
+ {
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference1, xSequence, 1E-4);
+ CPPUNIT_ASSERT_EQUAL(OUString("Exp."), lclGetLabel(xChartDoc, 0));
+ }
+ {
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1)->getData();
+ lclCheckSequence(aReference2, xSequence, 1E-4);
+ CPPUNIT_ASSERT_EQUAL(OUString("Rev."), lclGetLabel(xChartDoc, 1));
+ }
+
+ // Modify the pivot table
+ {
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, "DataPilot1", mxComponent);
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor(xDataPilotTable, UNO_QUERY_THROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Exp.", sheet::DataPilotFieldOrientation_HIDDEN);
+ }
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getNumberOfDataSeries(xChartDoc));
+
+ // Check again the data series
+ {
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference2, xSequence, 1E-4);
+ CPPUNIT_ASSERT_EQUAL(OUString("Total"), lclGetLabel(xChartDoc, 0));
+ }
+
+ saveAndReload("calc8");
+
+ xChartDoc = getPivotChartDocFromSheet(1, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getNumberOfDataSeries(xChartDoc));
+
+ // Check again the data series
+ {
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference2, xSequence, 1E-4);
+ CPPUNIT_ASSERT_EQUAL(OUString("Total"), lclGetLabel(xChartDoc, 0));
+ }
+}
+
+void PivotChartTest::testChangePivotTable()
+{
+ uno::Sequence<uno::Any> xSequence;
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ loadFromFile(u"ods/PivotTableExample.ods");
+
+ // Check we have the Pivot Table
+ OUString sPivotTableName("DataPilot1");
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, sPivotTableName, mxComponent);
+ CPPUNIT_ASSERT(xDataPilotTable.is());
+
+ // Check that we don't have any 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(0), xIndexAccess->getCount());
+
+ // Create a new pivot chart
+ xTablePivotCharts->addNewByName("Chart", awt::Rectangle{0, 0, 9000, 9000}, sPivotTableName);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+ // Get the pivot chart document so we can access its data
+ xChartDoc.set(getPivotChartDocFromSheet(xTablePivotCharts, 0));
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), getNumberOfDataSeries(xChartDoc));
+
+ // Check first data series
+ {
+ std::vector<double> aReference { 10162.033139, 16614.523063, 27944.146101 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Exp."), lclGetLabel(xChartDoc, 0));
+ }
+
+ // Check second data series
+ {
+ std::vector<double> aReference { 101879.458079, 178636.929704, 314626.484864 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Rev."), lclGetLabel(xChartDoc, 1));
+ }
+
+ // Modify the pivot table, move "Group Segment" to Column fields,
+ // add "Service Month" to Row fields, remove "Rev." Data field
+ {
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor(xDataPilotTable, UNO_QUERY_THROW);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"Service Month", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Group Segment", sheet::DataPilotFieldOrientation_COLUMN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Rev.", sheet::DataPilotFieldOrientation_HIDDEN);
+ }
+
+ // Check the pivot chart again as we expect it has been updated when we updated the pivot table
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), getNumberOfDataSeries(xChartDoc));
+
+ // Check the first data series
+ {
+ std::vector<double> aReference { 2855.559, 1780.326, 2208.713, 2130.064, 1187.371 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Big"), lclGetLabel(xChartDoc, 0));
+ }
+
+ // Check the second data series
+ {
+ std::vector<double> aReference { 4098.908, 2527.286, 4299.716, 2362.225, 3326.389 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Medium"), lclGetLabel(xChartDoc, 1));
+ }
+
+ // Check the third data series
+ {
+ std::vector<double> aReference { 4926.303, 5684.060, 4201.398, 7290.795, 5841.591 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 2)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Small"), lclGetLabel(xChartDoc, 2));
+ }
+
+ // Remove "Service Month" so row fields are empty - check we handle empty rows
+ {
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor(xDataPilotTable, uno::UNO_QUERY_THROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Service Month", sheet::DataPilotFieldOrientation_HIDDEN);
+ }
+
+ // Check the pivot chart again as we expect it has been updated when we updated the pivot table
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), getNumberOfDataSeries(xChartDoc));
+
+ // Check the first data series
+ {
+ std::vector<double> aReference { 10162.033139 };
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+ CPPUNIT_ASSERT_EQUAL(OUString("Big"), lclGetLabel(xChartDoc, 0));
+ }
+ // Check the second data series
+ {
+ std::vector<double> aReference { 16614.523063 };
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+ CPPUNIT_ASSERT_EQUAL(OUString("Medium"), lclGetLabel(xChartDoc, 1));
+ }
+ // Check the third data series
+ {
+ std::vector<double> aReference { 27944.146101 };
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 2)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+ CPPUNIT_ASSERT_EQUAL(OUString("Small"), lclGetLabel(xChartDoc, 2));
+ }
+
+ // Enable column totals and check the data is still unchanged
+ {
+ uno::Reference<beans::XPropertySet> xProperties(xDataPilotTable, uno::UNO_QUERY_THROW);
+ xProperties->setPropertyValue("ColumnGrand", uno::Any(true));
+ }
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), getNumberOfDataSeries(xChartDoc));
+
+ // Check the first data series
+ {
+ std::vector<double> aReference { 10162.033139 };
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+ CPPUNIT_ASSERT_EQUAL(OUString("Big"), lclGetLabel(xChartDoc, 0));
+ }
+ // Check the second data series
+ {
+ std::vector<double> aReference { 16614.523063 };
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+ CPPUNIT_ASSERT_EQUAL(OUString("Medium"), lclGetLabel(xChartDoc, 1));
+ }
+ // Check the third data series
+ {
+ std::vector<double> aReference { 27944.146101 };
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 2)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-3);
+ CPPUNIT_ASSERT_EQUAL(OUString("Small"), lclGetLabel(xChartDoc, 2));
+ }
+}
+
+void PivotChartTest::testPivotChartWithOneColumnField()
+{
+ // We put one field as COLUMN field only and one DATA field. We expect we will get as many data series
+ // in the pivot table as many distinct column values we have (with this example data 3: DE, EN, FR).
+
+ // SETUP DATA and PIVOT TABLE
+
+ mxComponent = loadFromDesktop("private:factory/scalc");
+
+ uno::Reference<sheet::XSpreadsheetDocument> xSheetDoc(mxComponent, uno::UNO_QUERY_THROW);
+
+ OUString sPivotTableName("DataPilotTable");
+
+ table::CellRangeAddress sCellRangeAddress = lclCreateTestData(xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotTables> xDataPilotTables = lclGetDataPilotTables(0, xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor = xDataPilotTables->createDataPilotDescriptor();
+ xDataPilotDescriptor->setSourceRange(sCellRangeAddress);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_COLUMN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Sales T1", sheet::DataPilotFieldOrientation_DATA);
+ lclModifyFunction(xDataPilotDescriptor, u"Sales T1", sheet::GeneralFunction_SUM);
+
+ xDataPilotTables->insertNewByName(sPivotTableName, table::CellAddress{1, 0, 0}, xDataPilotDescriptor);
+
+ // TEST
+
+ uno::Sequence<uno::Any> xSequence;
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ // Check we have the Pivot Table
+
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, sPivotTableName, mxComponent);
+ CPPUNIT_ASSERT(xDataPilotTable.is());
+
+ // Check that we don't have any 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(0), xIndexAccess->getCount());
+
+ // Create a new pivot chart
+ xTablePivotCharts->addNewByName("PivotChart", awt::Rectangle{ 9000, 9000, 21000, 18000 }, sPivotTableName);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+ // Get the pivot chart document so we can access its data
+ xChartDoc.set(getPivotChartDocFromSheet(xTablePivotCharts, 0));
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), getNumberOfDataSeries(xChartDoc));
+ // Check data series 1
+ {
+ std::vector<double> aReference { 1738.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("DE"), lclGetLabel(xChartDoc, 0));
+ }
+
+ // Check data series 2
+ {
+ std::vector<double> aReference { 2003.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("EN"), lclGetLabel(xChartDoc, 1));
+ }
+ // Check data series 3
+ {
+ std::vector<double> aReference { 1936.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 2)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("FR"), lclGetLabel(xChartDoc, 2));
+ }
+}
+
+void PivotChartTest::testPivotChartWithOneRowField()
+{
+ // We put one field as ROW field only and one DATA field. We expect we will get one data series
+ // in the pivot table.
+
+ // SETUP DATA and PIVOT TABLE
+
+ mxComponent = loadFromDesktop("private:factory/scalc");
+
+ uno::Reference<sheet::XSpreadsheetDocument> xSheetDoc(mxComponent, uno::UNO_QUERY_THROW);
+
+ OUString sPivotTableName("DataPilotTable");
+
+ table::CellRangeAddress sCellRangeAddress = lclCreateTestData(xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotTables> xDataPilotTables = lclGetDataPilotTables(0, xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor = xDataPilotTables->createDataPilotDescriptor();
+ xDataPilotDescriptor->setSourceRange(sCellRangeAddress);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Sales T1", sheet::DataPilotFieldOrientation_DATA);
+ lclModifyFunction(xDataPilotDescriptor, u"Sales T1", sheet::GeneralFunction_SUM);
+
+ xDataPilotTables->insertNewByName(sPivotTableName, table::CellAddress{1, 0, 0}, xDataPilotDescriptor);
+
+ // TEST
+
+ uno::Sequence<uno::Any> xSequence;
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ // Check we have the Pivot Table
+
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, sPivotTableName, mxComponent);
+ CPPUNIT_ASSERT(xDataPilotTable.is());
+
+ // Check that we don't have any 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(0), xIndexAccess->getCount());
+
+ // Create a new pivot chart
+ xTablePivotCharts->addNewByName("PivotChart", awt::Rectangle{ 9000, 9000, 21000, 18000 }, sPivotTableName);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+ // Get the pivot chart document so we can access its data
+ xChartDoc.set(getPivotChartDocFromSheet(xTablePivotCharts, 0));
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getNumberOfDataSeries(xChartDoc));
+ // Check data series 1
+ {
+ std::vector<double> aReference { 1738.0, 2003.0, 1936.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Total"), lclGetLabel(xChartDoc, 0));
+ }
+}
+
+void PivotChartTest::testPivotTableDataProvider_PivotTableFields()
+{
+ // SETUP DATA and PIVOT TABLE
+
+ mxComponent = loadFromDesktop("private:factory/scalc");
+
+ uno::Reference<sheet::XSpreadsheetDocument> xSheetDoc(mxComponent, uno::UNO_QUERY_THROW);
+
+ OUString sPivotTableName("DataPilotTable");
+
+ table::CellRangeAddress sCellRangeAddress = lclCreateTestData(xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotTables> xDataPilotTables = lclGetDataPilotTables(0, xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor = xDataPilotTables->createDataPilotDescriptor();
+ xDataPilotDescriptor->setSourceRange(sCellRangeAddress);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"City", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_COLUMN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Type", sheet::DataPilotFieldOrientation_COLUMN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Sales T1", sheet::DataPilotFieldOrientation_DATA);
+ lclModifyFunction(xDataPilotDescriptor, u"Sales T1", sheet::GeneralFunction_SUM);
+ lclModifyOrientation(xDataPilotDescriptor, u"Sales T2", sheet::DataPilotFieldOrientation_DATA);
+ lclModifyFunction(xDataPilotDescriptor, u"Sales T2", sheet::GeneralFunction_SUM);
+
+ lclModifyColumnGrandTotal(xDataPilotDescriptor, true);
+ lclModifyRowGrandTotal(xDataPilotDescriptor, true);
+
+ xDataPilotTables->insertNewByName(sPivotTableName, table::CellAddress{1, 0, 0}, xDataPilotDescriptor);
+
+ // TEST
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ // Check we have the Pivot Table
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, sPivotTableName, mxComponent);
+ CPPUNIT_ASSERT(xDataPilotTable.is());
+
+ // refetch the XDataPilotDescriptor
+ xDataPilotDescriptor.set(xDataPilotTable, uno::UNO_QUERY_THROW);
+
+ // Check that we don't have any 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(0), xIndexAccess->getCount());
+
+ // Create a new pivot chart
+ xTablePivotCharts->addNewByName("PivotChart", awt::Rectangle{ 9000, 9000, 21000, 18000 }, sPivotTableName);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+ // Get the pivot chart document so we can access its data
+ xChartDoc.set(getPivotChartDocFromSheet(xTablePivotCharts, 0));
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::data::XPivotTableDataProvider> xPivotTableDataProvider(xChartDoc->getDataProvider(), UNO_QUERY_THROW);
+ uno::Sequence<chart2::data::PivotTableFieldEntry> aFieldEntries;
+
+ aFieldEntries = xPivotTableDataProvider->getColumnFields();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aFieldEntries.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("Country"), aFieldEntries[0].Name);
+ CPPUNIT_ASSERT_EQUAL(OUString("Type"), aFieldEntries[1].Name);
+
+ aFieldEntries = xPivotTableDataProvider->getRowFields();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aFieldEntries.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("City"), aFieldEntries[0].Name);
+ CPPUNIT_ASSERT_EQUAL(OUString("Data"), aFieldEntries[1].Name);
+
+ aFieldEntries = xPivotTableDataProvider->getDataFields();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aFieldEntries.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("Sum - Sales T1"), aFieldEntries[0].Name);
+ CPPUNIT_ASSERT_EQUAL(OUString("Sum - Sales T2"), aFieldEntries[1].Name);
+
+ // Data to column fields
+ lclModifyOrientation(xDataPilotDescriptor, u"Data", sheet::DataPilotFieldOrientation_COLUMN);
+
+ // Change the order of column fields: expected data, type, country
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_HIDDEN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Type", sheet::DataPilotFieldOrientation_HIDDEN);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"Type", sheet::DataPilotFieldOrientation_COLUMN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_COLUMN);
+
+ // set the XPivotTableDataProvider again as the old one was exchanged
+ xPivotTableDataProvider.set(xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW);
+
+ aFieldEntries = xPivotTableDataProvider->getColumnFields();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), aFieldEntries.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("Data"), aFieldEntries[0].Name);
+ CPPUNIT_ASSERT_EQUAL(OUString("Type"), aFieldEntries[1].Name);
+ CPPUNIT_ASSERT_EQUAL(OUString("Country"), aFieldEntries[2].Name);
+
+ aFieldEntries = xPivotTableDataProvider->getRowFields();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aFieldEntries.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("City"), aFieldEntries[0].Name);
+
+ aFieldEntries = xPivotTableDataProvider->getDataFields();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aFieldEntries.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("Sum - Sales T1"), aFieldEntries[0].Name);
+ CPPUNIT_ASSERT_EQUAL(OUString("Sum - Sales T2"), aFieldEntries[1].Name);
+}
+
+void PivotChartTest::testPivotChartRowFieldInOutlineMode()
+{
+ // SETUP DATA and PIVOT TABLE
+
+ mxComponent = loadFromDesktop("private:factory/scalc");
+
+ uno::Reference<sheet::XSpreadsheetDocument> xSheetDoc(mxComponent, uno::UNO_QUERY_THROW);
+
+ OUString sPivotTableName("DataPilotTable");
+
+ table::CellRangeAddress sCellRangeAddress = lclCreateTestData(xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotTables> xDataPilotTables = lclGetDataPilotTables(0, xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor = xDataPilotTables->createDataPilotDescriptor();
+ xDataPilotDescriptor->setSourceRange(sCellRangeAddress);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"City", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Sales T1", sheet::DataPilotFieldOrientation_DATA);
+ lclModifyFunction(xDataPilotDescriptor, u"Sales T1", sheet::GeneralFunction_SUM);
+ xDataPilotTables->insertNewByName(sPivotTableName, table::CellAddress{1, 0, 0}, xDataPilotDescriptor);
+
+ // TEST
+ uno::Sequence<uno::Any> xSequence;
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ // Check we have the Pivot Table
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, sPivotTableName, mxComponent);
+ CPPUNIT_ASSERT(xDataPilotTable.is());
+
+ // refetch the XDataPilotDescriptor
+ xDataPilotDescriptor.set(xDataPilotTable, uno::UNO_QUERY_THROW);
+
+ // Check that we don't have any 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(0), xIndexAccess->getCount());
+
+ // Create a new pivot chart
+ xTablePivotCharts->addNewByName("PivotChart", awt::Rectangle{ 9000, 9000, 21000, 18000 }, sPivotTableName);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+ // Get the pivot chart document so we can access its data
+ xChartDoc.set(getPivotChartDocFromSheet(xTablePivotCharts, 0));
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // Test case with defaults
+
+ // Check when using defaults the data is as expected
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getNumberOfDataSeries(xChartDoc));
+ {
+ std::vector<double> aReference { 1116.0, 622.0, 298.0, 562.0, 1143.0, 1168.0, 768.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Total"), lclGetLabel(xChartDoc, 0));
+ }
+ // Check the categories
+ {
+ lclCheckCategories({ "DE", "", "EN", "", "", "FR", ""},
+ lclGetCategories(xChartDoc)[0]->getValues());
+ lclCheckCategories({ "Berlin", "Munich", "Glasgow", "Liverpool", "London", "Nantes", "Paris"},
+ lclGetCategories(xChartDoc)[1]->getValues());
+ }
+
+ sheet::DataPilotFieldLayoutInfo aLayoutInfoValue;
+
+ // Test case where we enable subtotals (auto) and set the outline subtotals at the bottom
+ // We don't expect any change in data as every extra subtotal row should be ignored
+
+ // Enable subtotals - set to auto
+ uno::Sequence<sheet::GeneralFunction> aGeneralFunctionSequence{ sheet::GeneralFunction_AUTO };
+ lclModifySubtotals(xDataPilotDescriptor, u"Country", aGeneralFunctionSequence);
+ // Set Subtotals layout to bottom + add empty lines
+ aLayoutInfoValue.AddEmptyLines = true;
+ aLayoutInfoValue.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_BOTTOM;
+ lclModifyLayoutInfo(xDataPilotDescriptor, u"Country", aLayoutInfoValue);
+
+ // Check data is unchanged
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getNumberOfDataSeries(xChartDoc));
+ {
+ std::vector<double> aReference { 1116.0, 622.0, 298.0, 562.0, 1143.0, 1168.0, 768.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Total"), lclGetLabel(xChartDoc, 0));
+ }
+ // Check categories
+ {
+ lclCheckCategories({ "DE", "", "EN", "", "", "FR", ""},
+ lclGetCategories(xChartDoc)[0]->getValues());
+ lclCheckCategories({ "Berlin", "Munich", "Glasgow", "Liverpool", "London", "Nantes", "Paris"},
+ lclGetCategories(xChartDoc)[1]->getValues());
+ }
+
+ // Test case where we enable subtotals (auto) and set the outline subtotals at the top
+ // We don't expect any change in data as every extra subtotal row should be ignored
+
+ // Enable subtotals - set to auto
+ aGeneralFunctionSequence.getArray()[0] = sheet::GeneralFunction_AUTO;
+ lclModifySubtotals(xDataPilotDescriptor, u"Country", aGeneralFunctionSequence);
+ // Set Subtotals layout to top + add empty lines
+ aLayoutInfoValue.AddEmptyLines = true;
+ aLayoutInfoValue.LayoutMode = sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_TOP;
+ lclModifyLayoutInfo(xDataPilotDescriptor, u"Country", aLayoutInfoValue);
+
+ // Check data is unchanged
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getNumberOfDataSeries(xChartDoc));
+ {
+ std::vector<double> aReference { 1116.0, 622.0, 298.0, 562.0, 1143.0, 1168.0, 768.0 };
+
+ xSequence = getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0)->getData();
+ lclCheckSequence(aReference, xSequence, 1E-4);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Total"), lclGetLabel(xChartDoc, 0));
+ }
+ // Check categories
+ {
+ lclCheckCategories({ "DE", "", "EN", "", "", "FR", ""},
+ lclGetCategories(xChartDoc)[0]->getValues());
+ lclCheckCategories({ "Berlin", "Munich", "Glasgow", "Liverpool", "London", "Nantes", "Paris"},
+ lclGetCategories(xChartDoc)[1]->getValues());
+ }
+}
+
+void PivotChartTest::testPivotChartWithDateRowField()
+{
+ // SETUP DATA and PIVOT TABLE
+
+ mxComponent = loadFromDesktop("private:factory/scalc");
+
+ uno::Reference<sheet::XSpreadsheetDocument> xSheetDoc(mxComponent, uno::UNO_QUERY_THROW);
+
+ OUString sPivotTableName("DataPilotTable");
+
+ table::CellRangeAddress sCellRangeAddress = lclCreateTestData(xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotTables> xDataPilotTables = lclGetDataPilotTables(0, xSheetDoc);
+
+ uno::Reference<sheet::XDataPilotDescriptor> xDataPilotDescriptor = xDataPilotTables->createDataPilotDescriptor();
+ xDataPilotDescriptor->setSourceRange(sCellRangeAddress);
+
+ lclModifyOrientation(xDataPilotDescriptor, u"Date", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"City", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Country", sheet::DataPilotFieldOrientation_ROW);
+ lclModifyOrientation(xDataPilotDescriptor, u"Type", sheet::DataPilotFieldOrientation_COLUMN);
+ lclModifyOrientation(xDataPilotDescriptor, u"Sales T1", sheet::DataPilotFieldOrientation_DATA);
+ lclModifyFunction(xDataPilotDescriptor, u"Sales T1", sheet::GeneralFunction_SUM);
+
+ lclModifyColumnGrandTotal(xDataPilotDescriptor, true);
+ lclModifyRowGrandTotal(xDataPilotDescriptor, true);
+
+ xDataPilotTables->insertNewByName(sPivotTableName, table::CellAddress{1, 0, 0}, xDataPilotDescriptor);
+
+ // TEST
+ Reference<chart2::XChartDocument> xChartDoc;
+
+ // Check we have the Pivot Table
+ uno::Reference<sheet::XDataPilotTable> xDataPilotTable = lclGetPivotTableByName(1, sPivotTableName, mxComponent);
+ CPPUNIT_ASSERT(xDataPilotTable.is());
+
+ // refetch the XDataPilotDescriptor
+ xDataPilotDescriptor.set(xDataPilotTable, uno::UNO_QUERY_THROW);
+
+ // Check that we don't have any 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(0), xIndexAccess->getCount());
+
+ // Create a new pivot chart
+ xTablePivotCharts->addNewByName("PivotChart", awt::Rectangle{ 9000, 9000, 21000, 18000 }, sPivotTableName);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+
+ // Get the pivot chart document so we can access its data
+ xChartDoc.set(getPivotChartDocFromSheet(xTablePivotCharts, 0));
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // Check if Date category is date formatted.
+ lclCheckCategories( { "12/11/15", "", "", "", "", "", "12/14/15", "12/17/15", "01/20/16", "", "", "03/21/17" },
+ lclGetCategories( xChartDoc )[0]->getValues() );
+}
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION(PivotChartTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2_trendcalculators.cxx b/chart2/qa/extras/chart2_trendcalculators.cxx
new file mode 100644
index 0000000000..8639015d62
--- /dev/null
+++ b/chart2/qa/extras/chart2_trendcalculators.cxx
@@ -0,0 +1,217 @@
+/* -*- 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/XRegressionCurveContainer.hpp>
+#include <com/sun/star/chart2/XRegressionCurveCalculator.hpp>
+#include <SpecialCharacters.hxx>
+
+
+// Define the index of sheets in the test document
+constexpr sal_Int32 SHEET_POTENTIAL1 = 0;
+constexpr sal_Int32 SHEET_POTENTIAL2 = 1;
+constexpr sal_Int32 SHEET_LINEAR1 = 2;
+constexpr sal_Int32 SHEET_POLYNOMIAL1 = 3;
+constexpr sal_Int32 SHEET_EXPONENTIAL1 = 4;
+constexpr sal_Int32 SHEET_EXPONENTIAL2 = 5;
+
+class Chart2TrendCalculators : public ChartTest
+{
+public:
+ Chart2TrendCalculators()
+ : ChartTest("/chart2/qa/extras/data/")
+ {}
+
+ void setUp() override;
+ void tearDown() override;
+
+ void testPotentialRegression1();
+ void testPotentialRegression2();
+ void testLinearRegression1();
+ void testPolynomialRegression1();
+ void testExponentialRegression1();
+ void testExponentialRegression2();
+
+ CPPUNIT_TEST_SUITE(Chart2TrendCalculators);
+ CPPUNIT_TEST(testPotentialRegression1);
+ CPPUNIT_TEST(testPotentialRegression2);
+ CPPUNIT_TEST(testLinearRegression1);
+ CPPUNIT_TEST(testPolynomialRegression1);
+ CPPUNIT_TEST(testExponentialRegression1);
+ CPPUNIT_TEST(testExponentialRegression2);
+ CPPUNIT_TEST_SUITE_END();
+
+private:
+ Reference<chart2::XRegressionCurve> m_xCurve;
+ Reference< chart2::XRegressionCurveCalculator > m_xRegressionCurveCalculator;
+
+ void loadCalculatorFromSheet(sal_Int32 nSheet);
+ void checkCalculator(
+ const Sequence< double >& xValues, const Sequence< double >& yValues,
+ const OUString& sExpectedFormula );
+};
+
+void Chart2TrendCalculators::setUp()
+{
+ ChartTest::setUp();
+ loadFromFile(u"ods/trend_calculators.ods");
+}
+
+void Chart2TrendCalculators::tearDown()
+{
+ m_xRegressionCurveCalculator.clear();
+ m_xCurve.clear();
+ ChartTest::tearDown();
+}
+
+void Chart2TrendCalculators::loadCalculatorFromSheet(sal_Int32 nSheet)
+{
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(nSheet, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ Reference<chart2::XRegressionCurveContainer> xRegressionCurveContainer(xDataSeries, UNO_QUERY_THROW);
+
+ Sequence< Reference< chart2::XRegressionCurve > > xRegressionCurveSequence = xRegressionCurveContainer->getRegressionCurves();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xRegressionCurveSequence.getLength());
+
+ m_xCurve = xRegressionCurveSequence[0];
+ CPPUNIT_ASSERT(m_xCurve.is());
+
+ m_xRegressionCurveCalculator = m_xCurve->getCalculator();
+ CPPUNIT_ASSERT(m_xRegressionCurveCalculator.is());
+}
+
+void Chart2TrendCalculators::checkCalculator(
+ const Sequence< double >& xValues, const Sequence< double >& yValues,
+ const OUString& sExpectedFormula )
+{
+ m_xRegressionCurveCalculator->recalculateRegression( xValues, yValues );
+ OUString aRepresentation = m_xRegressionCurveCalculator->getRepresentation ();
+ CPPUNIT_ASSERT_EQUAL( sExpectedFormula, aRepresentation );
+ double r2 = m_xRegressionCurveCalculator->getCorrelationCoefficient();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, r2, 1e-8 );
+}
+
+// test y = A x ^ B
+void Chart2TrendCalculators::testPotentialRegression1()
+{
+ loadCalculatorFromSheet( SHEET_POTENTIAL1 );
+ m_xRegressionCurveCalculator->setRegressionProperties( 0, false, 0, 0, 0 );
+ Sequence< double > xValues( 7 );
+ auto pxValues = xValues.getArray();
+ Sequence< double > yValues( 7 );
+ auto pyValues = yValues.getArray();
+ for (int i=0; i<7; i++)
+ {
+ const double d = static_cast<double>(i);
+ pxValues[i] = d;
+ pyValues[i] = 2.0 * pow ( d, 3 );
+ }
+ checkCalculator( xValues, yValues, "f(x) = 2 x^3");
+}
+
+// test y = A x ^ B
+void Chart2TrendCalculators::testPotentialRegression2()
+{
+ loadCalculatorFromSheet( SHEET_POTENTIAL2 );
+ m_xRegressionCurveCalculator->setRegressionProperties( 0, false, 0, 0, 0 );
+ Sequence< double > xValues( 7 );
+ auto pxValues = xValues.getArray();
+ Sequence< double > yValues( 7 );
+ auto pyValues = yValues.getArray();
+ for (int i=0; i<7; i++)
+ {
+ const double d = static_cast<double>(i);
+ pxValues[i] = d;
+ pyValues[i] = -2.0 * pow ( d, 3 );
+ }
+ checkCalculator( xValues, yValues, "f(x) = "+ OUStringChar(aMinusSign) +" 2 x^3");
+}
+
+// test y = - 2 X - 5
+void Chart2TrendCalculators::testLinearRegression1()
+{
+ loadCalculatorFromSheet( SHEET_LINEAR1 );
+ m_xRegressionCurveCalculator->setRegressionProperties( 1, false, 0, 0, 0 );
+ Sequence< double > xValues( 7 );
+ auto pxValues = xValues.getArray();
+ Sequence< double > yValues( 7 );
+ auto pyValues = yValues.getArray();
+ for (int i=0; i<7; i++)
+ {
+ const double d = static_cast<double>(i);
+ pxValues[i] = d;
+ pyValues[i] = - 2.0 * d - 5.0 ;
+ }
+ checkCalculator( xValues, yValues, "f(x) = "+ OUStringChar(aMinusSign) +" 2 x "+ OUStringChar(aMinusSign) +" 5");
+}
+
+// test y = A x ^ B
+void Chart2TrendCalculators::testPolynomialRegression1()
+{
+ loadCalculatorFromSheet( SHEET_POLYNOMIAL1 );
+ m_xRegressionCurveCalculator->setRegressionProperties( 2, false, 0, 0, 0 );
+ Sequence< double > xValues( 7 );
+ auto pxValues = xValues.getArray();
+ Sequence< double > yValues( 7 );
+ auto pyValues = yValues.getArray();
+ for (int i=0; i<7; i++)
+ {
+ const double d = static_cast<double>(i);
+ pxValues[i] = d;
+ pyValues[i] = - 2.0 * d * d + 4 * d - 5;
+ }
+ OUString sExpectedFormula( "f(x) = "+ OUStringChar(aMinusSign) +" 2 x" + OUStringChar( aSuperscriptFigures[2] ) + " + 4 x "+ OUStringChar(aMinusSign) +" 5" );
+ checkCalculator( xValues, yValues, sExpectedFormula );
+}
+
+void Chart2TrendCalculators::testExponentialRegression1()
+{
+ loadCalculatorFromSheet( SHEET_EXPONENTIAL1 );
+ m_xRegressionCurveCalculator->setRegressionProperties( 0, false, 0, 0, 0 );
+ Sequence< double > xValues( 7 );
+ auto pxValues = xValues.getArray();
+ Sequence< double > yValues( 7 );
+ auto pyValues = yValues.getArray();
+ for (int i=0; i<7; i++)
+ {
+ const double d = static_cast<double>(i);
+ pxValues[i] = d;
+ pyValues[i] = 2.0 * exp ( 0.3 * d );
+ }
+ checkCalculator( xValues, yValues, "f(x) = 2 exp( 0.3 x )");
+}
+
+void Chart2TrendCalculators::testExponentialRegression2()
+{
+ loadCalculatorFromSheet( SHEET_EXPONENTIAL2 );
+ m_xRegressionCurveCalculator->setRegressionProperties( 0, false, 0, 0, 0 );
+ Sequence< double > xValues( 7 );
+ auto pxValues = xValues.getArray();
+ Sequence< double > yValues( 7 );
+ auto pyValues = yValues.getArray();
+ for (int i=0; i<7; i++)
+ {
+ const double d = static_cast<double>(i);
+ pxValues[i] = d;
+ pyValues[i] = -2.0 * exp ( 0.3 * d );
+ }
+ checkCalculator( xValues, yValues, "f(x) = "+ OUStringChar(aMinusSign) + " 2 exp( 0.3 x )");
+}
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION(Chart2TrendCalculators);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
new file mode 100644
index 0000000000..6958876b1d
--- /dev/null
+++ b/chart2/qa/extras/chart2export.cxx
@@ -0,0 +1,1258 @@
+/* -*- 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/chart/ErrorBarStyle.hpp>
+#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
+#include <com/sun/star/chart2/MovingAverageType.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/chart2/DataPointLabel.hpp>
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+
+using uno::Reference;
+using beans::XPropertySet;
+
+class Chart2ExportTest : public ChartTest
+{
+public:
+ Chart2ExportTest() : ChartTest("/chart2/qa/extras/data/") {}
+};
+
+namespace {
+
+void testErrorBar( Reference< XPropertySet > const & xErrorBar )
+{
+ sal_Int32 nErrorBarStyle;
+ CPPUNIT_ASSERT(
+ xErrorBar->getPropertyValue("ErrorBarStyle") >>= nErrorBarStyle);
+ CPPUNIT_ASSERT_EQUAL(chart::ErrorBarStyle::RELATIVE, nErrorBarStyle);
+ bool bShowPositive = bool(), bShowNegative = bool();
+ CPPUNIT_ASSERT(
+ xErrorBar->getPropertyValue("ShowPositiveError") >>= bShowPositive);
+ CPPUNIT_ASSERT(bShowPositive);
+ CPPUNIT_ASSERT(
+ xErrorBar->getPropertyValue("ShowNegativeError") >>= bShowNegative);
+ CPPUNIT_ASSERT(bShowNegative);
+ double nVal = 0.0;
+ CPPUNIT_ASSERT(xErrorBar->getPropertyValue("PositiveError") >>= nVal);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(10.0, nVal, 1e-10);
+}
+
+void checkCommonTrendline(
+ Reference<chart2::XRegressionCurve> const & xCurve,
+ double aExpectedExtrapolateForward, double aExpectedExtrapolateBackward,
+ bool aExpectedForceIntercept, double aExpectedInterceptValue,
+ bool aExpectedShowEquation, bool aExpectedR2, bool aExpectedMayHaveR2)
+{
+ Reference<XPropertySet> xProperties( xCurve , uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xProperties.is());
+
+ double aExtrapolateForward = 0.0;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("ExtrapolateForward") >>= aExtrapolateForward);
+ CPPUNIT_ASSERT_EQUAL(aExpectedExtrapolateForward, aExtrapolateForward);
+
+ double aExtrapolateBackward = 0.0;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("ExtrapolateBackward") >>= aExtrapolateBackward);
+ CPPUNIT_ASSERT_EQUAL(aExpectedExtrapolateBackward, aExtrapolateBackward);
+
+ bool bForceIntercept = false;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("ForceIntercept") >>= bForceIntercept);
+ CPPUNIT_ASSERT_EQUAL(aExpectedForceIntercept, bForceIntercept);
+
+ if (bForceIntercept)
+ {
+ double aInterceptValue = 0.0;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("InterceptValue") >>= aInterceptValue);
+ CPPUNIT_ASSERT_EQUAL(aExpectedInterceptValue, aInterceptValue);
+ }
+
+ Reference< XPropertySet > xEquationProperties( xCurve->getEquationProperties() );
+ CPPUNIT_ASSERT(xEquationProperties.is());
+
+ bool bShowEquation = false;
+ CPPUNIT_ASSERT(xEquationProperties->getPropertyValue("ShowEquation") >>= bShowEquation);
+ CPPUNIT_ASSERT_EQUAL(aExpectedShowEquation, bShowEquation);
+
+ bool bShowCorrelationCoefficient = false;
+ CPPUNIT_ASSERT(xEquationProperties->getPropertyValue("ShowCorrelationCoefficient") >>= bShowCorrelationCoefficient);
+ CPPUNIT_ASSERT_EQUAL(aExpectedR2, bShowCorrelationCoefficient);
+
+ bool bMayHaveR2 = false;
+ CPPUNIT_ASSERT(xEquationProperties->getPropertyValue("MayHaveCorrelationCoefficient") >>= bMayHaveR2);
+ CPPUNIT_ASSERT_EQUAL(aExpectedMayHaveR2, bMayHaveR2);
+}
+
+void checkNameAndType(Reference<XPropertySet> const & xProperties, const OUString& aExpectedName, const OUString& aExpectedServiceName)
+{
+ Reference< lang::XServiceName > xServiceName( xProperties, UNO_QUERY );
+ CPPUNIT_ASSERT(xServiceName.is());
+
+ OUString aServiceName = xServiceName->getServiceName();
+ CPPUNIT_ASSERT_EQUAL(aExpectedServiceName, aServiceName);
+
+ OUString aCurveName;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("CurveName") >>= aCurveName);
+ CPPUNIT_ASSERT_EQUAL(aExpectedName, aCurveName);
+}
+
+void checkLinearTrendline(
+ Reference<chart2::XRegressionCurve> const & xCurve, const OUString& aExpectedName,
+ double aExpectedExtrapolateForward, double aExpectedExtrapolateBackward,
+ double aExpectedInterceptValue)
+{
+ Reference<XPropertySet> xProperties( xCurve , uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xProperties.is());
+
+ checkNameAndType(xProperties, aExpectedName, "com.sun.star.chart2.LinearRegressionCurve");
+
+ checkCommonTrendline(
+ xCurve,
+ aExpectedExtrapolateForward, aExpectedExtrapolateBackward,
+ /*aExpectedForceIntercept*/false, aExpectedInterceptValue,
+ /*aExpectedShowEquation*/true, /*aExpectedR2*/false, /*aExpectedMayHaveR2*/true);
+}
+
+void checkPolynomialTrendline(
+ Reference<chart2::XRegressionCurve> const & xCurve, const OUString& aExpectedName,
+ sal_Int32 aExpectedDegree,
+ double aExpectedExtrapolateForward, double aExpectedExtrapolateBackward,
+ double aExpectedInterceptValue)
+{
+ Reference<XPropertySet> xProperties( xCurve , uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xProperties.is());
+
+ checkNameAndType(xProperties, aExpectedName, "com.sun.star.chart2.PolynomialRegressionCurve");
+
+ sal_Int32 aDegree = 2;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("PolynomialDegree") >>= aDegree);
+ CPPUNIT_ASSERT_EQUAL(aExpectedDegree, aDegree);
+
+ checkCommonTrendline(
+ xCurve,
+ aExpectedExtrapolateForward, aExpectedExtrapolateBackward,
+ /*aExpectedForceIntercept*/true, aExpectedInterceptValue,
+ /*aExpectedShowEquation*/true, /*aExpectedR2*/true, /*aExpectedMayHaveR2*/true);
+}
+
+void checkMovingAverageTrendline(
+ Reference<chart2::XRegressionCurve> const & xCurve, const OUString& aExpectedName, sal_Int32 aExpectedPeriod)
+{
+ Reference<XPropertySet> xProperties( xCurve , uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xProperties.is());
+
+ checkNameAndType(xProperties, aExpectedName, "com.sun.star.chart2.MovingAverageRegressionCurve");
+
+ sal_Int32 aPeriod = 2;
+ CPPUNIT_ASSERT(xProperties->getPropertyValue("MovingAveragePeriod") >>= aPeriod);
+ CPPUNIT_ASSERT_EQUAL(aExpectedPeriod, aPeriod);
+
+ checkCommonTrendline(
+ xCurve,
+ /*aExpectedExtrapolateForward*/0.0, /*aExpectedExtrapolateBackward*/0.0,
+ /*aExpectedForceIntercept*/false, /*aExpectedInterceptValue*/0.0,
+ /*aExpectedShowEquation*/false, /*aExpectedR2*/false, /*aExpectedMayHaveR2*/false);
+}
+
+void checkTrendlinesInChart(uno::Reference< chart2::XChartDocument > const & xChartDoc)
+{
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< chart2::XRegressionCurveContainer > xRegressionCurveContainer( xDataSeries, UNO_QUERY );
+ CPPUNIT_ASSERT( xRegressionCurveContainer.is() );
+
+ Sequence< Reference< chart2::XRegressionCurve > > xRegressionCurveSequence = xRegressionCurveContainer->getRegressionCurves();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xRegressionCurveSequence.getLength());
+
+ Reference<chart2::XRegressionCurve> xCurve;
+
+ xCurve = xRegressionCurveSequence[0];
+ CPPUNIT_ASSERT(xCurve.is());
+ checkPolynomialTrendline(xCurve, "col2_poly", 3, 0.1, -0.1, -1.0);
+
+ xCurve = xRegressionCurveSequence[1];
+ CPPUNIT_ASSERT(xCurve.is());
+ checkLinearTrendline(xCurve, "col2_linear", -0.5, -0.5, 0.0);
+
+ xCurve = xRegressionCurveSequence[2];
+ CPPUNIT_ASSERT(xCurve.is());
+ checkMovingAverageTrendline(xCurve, "col2_moving_avg", 3);
+}
+
+}
+
+// improve the test
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testErrorBarXLSX)
+{
+ loadFromFile(u"ods/error_bar.ods");
+ {
+ // make sure the ODS import was successful
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
+
+ // test that y error bars are there
+ Reference< beans::XPropertySet > xErrorBarYProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_Y) >>= xErrorBarYProps;
+ testErrorBar(xErrorBarYProps);
+ }
+
+ saveAndReload("Calc Office Open XML");
+ {
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
+
+ // test that y error bars are there
+ Reference< beans::XPropertySet > xErrorBarYProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_Y) >>= xErrorBarYProps;
+ testErrorBar(xErrorBarYProps);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testErrorBarPropXLSX)
+{
+ loadFromFile(u"xlsx/testErrorBarProp.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // test y error bars property
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:errBars[1]/c:errDir"_ostr, "val"_ostr, "y");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:errBars[1]/c:spPr/a:ln"_ostr, "w"_ostr, "12600");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:errBars[1]/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+
+ // test x error bars property
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:errBars[2]/c:errDir"_ostr, "val"_ostr, "x");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:errBars[2]/c:spPr/a:ln"_ostr, "w"_ostr, "9360");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:errBars[2]/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "595959");
+}
+
+// This method tests the preservation of properties for trendlines / regression curves
+// in an export -> import cycle using different file formats - ODS, XLS and XLSX.
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testTrendline)
+{
+ // Validation fails with
+ // Error: tag name "chart:symbol-image" is not allowed. Possible tag names are: <label-separator>
+ skipValidation();
+ loadFromFile(u"ods/trendline.ods");
+ checkTrendlinesInChart(getChartDocFromSheet( 0, mxComponent));
+ saveAndReload("calc8");
+ checkTrendlinesInChart(getChartDocFromSheet( 0, mxComponent));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testTrendlineOOXML)
+{
+ loadFromFile(u"ods/trendline.ods");
+ checkTrendlinesInChart(getChartDocFromSheet( 0, mxComponent));
+ saveAndReload("Calc Office Open XML");
+ checkTrendlinesInChart(getChartDocFromSheet( 0, mxComponent));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testTrendlineXLS)
+{
+ loadFromFile(u"ods/trendline.ods");
+ checkTrendlinesInChart(getChartDocFromSheet( 0, mxComponent));
+ saveAndReload("MS Excel 97");
+ checkTrendlinesInChart(getChartDocFromSheet( 0, mxComponent));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testMovingAverage)
+{
+ loadFromFile(u"ods/moving-type.ods");
+ saveAndReload("calc8");
+
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< chart2::XRegressionCurveContainer > xRegressionCurveContainer( xDataSeries, UNO_QUERY );
+ CPPUNIT_ASSERT( xRegressionCurveContainer.is() );
+
+ Sequence< Reference< chart2::XRegressionCurve > > xRegressionCurveSequence = xRegressionCurveContainer->getRegressionCurves();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xRegressionCurveSequence.getLength());
+
+ Reference<chart2::XRegressionCurve> xCurve = xRegressionCurveSequence[0];
+ CPPUNIT_ASSERT(xCurve.is());
+
+ Reference<XPropertySet> xProperties( xCurve , uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xProperties.is());
+
+ sal_Int32 nMovingAverageType = 0;
+ xProperties->getPropertyValue("MovingAverageType") >>= nMovingAverageType;
+ CPPUNIT_ASSERT_EQUAL(chart2::MovingAverageType::Central, nMovingAverageType);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testStockChart)
+{
+ /* For attached file Stock_Chart.docx, in chart1.xml,
+ * <c:stockChart>, there are four types of series as
+ * Open,Low,High and Close.
+ * For Open series, in <c:idx val="0" />
+ * an attribute val of index should start from 1 and not from 0.
+ * Which was problem area.
+ */
+ loadFromFile(u"docx/testStockChart.docx");
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:idx"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:order"_ostr, "val"_ostr, "1");
+ assertXPathContent(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:stockChart/c:ser[1]/c:tx/c:strRef/c:strCache/c:pt/c:v"_ostr,
+ "Open");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testBarChart)
+{
+ loadFromFile(u"docx/testBarChart.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:barDir"_ostr, "val"_ostr, "col");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testCrosses)
+{
+ // test crosses val="autoZero" with DOCX
+ {
+ loadFromFile(u"docx/Bar_horizontal_cone.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:crosses"_ostr, "val"_ostr, "autoZero");
+ }
+ // tdf#142351: test crossesAt val="-50" with XLSX
+ {
+ loadFromFile(u"xlsx/tdf142351.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:crossesAt"_ostr, "val"_ostr, "-50");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testScatterChartTextXValues)
+{
+ loadFromFile(u"docx/scatter-chart-text-x-values.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ // Make sure we have exactly 3 data series.
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 1"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 2"), aLabels[1][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), aLabels[2][0].get<OUString>());
+
+ std::vector<std::vector<double> > aYValues = getDataSeriesYValuesFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aYValues.size());
+
+ // Check the Y values of "Series 1".
+ CPPUNIT_ASSERT_EQUAL(size_t(4), aYValues[0].size());
+ CPPUNIT_ASSERT_EQUAL(4.3, aYValues[0][0]);
+ CPPUNIT_ASSERT_EQUAL(2.5, aYValues[0][1]);
+ CPPUNIT_ASSERT_EQUAL(3.5, aYValues[0][2]);
+ CPPUNIT_ASSERT_EQUAL(4.5, aYValues[0][3]);
+
+ // And "Series 2".
+ CPPUNIT_ASSERT_EQUAL(size_t(4), aYValues[1].size());
+ CPPUNIT_ASSERT_EQUAL(2.4, aYValues[1][0]);
+ CPPUNIT_ASSERT_EQUAL(4.4, aYValues[1][1]);
+ CPPUNIT_ASSERT_EQUAL(1.8, aYValues[1][2]);
+ CPPUNIT_ASSERT_EQUAL(2.8, aYValues[1][3]);
+
+ // And "Series 3".
+ CPPUNIT_ASSERT_EQUAL(size_t(4), aYValues[2].size());
+ CPPUNIT_ASSERT_EQUAL(2.0, aYValues[2][0]);
+ CPPUNIT_ASSERT_EQUAL(2.0, aYValues[2][1]);
+ CPPUNIT_ASSERT_EQUAL(3.0, aYValues[2][2]);
+ CPPUNIT_ASSERT_EQUAL(5.0, aYValues[2][3]);
+
+ // Test the export.
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal[1]/c:numRef[1]/c:numCache[1]/c:pt[1]/c:v[1]"_ostr, "1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testScatterXAxisValues)
+{
+ loadFromFile(u"odt/tdf114657.odt");
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:ptCount"_ostr, "val"_ostr, "5");
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:pt[1]/c:v"_ostr, "15");
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:pt[2]/c:v"_ostr, "11");
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:pt[3]/c:v"_ostr, "20");
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:pt[4]/c:v"_ostr, "16");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testScatterXAxisCategories)
+{
+ loadFromFile(u"odt/tdf131143.odt");
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:ptCount"_ostr, "val"_ostr, "4");
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:pt[1]/c:v"_ostr, "Row 1");
+ assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:pt[2]/c:v"_ostr, "Row 2");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testChartDataTable)
+{
+ loadFromFile(u"docx/testChartDataTable.docx");
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dTable/c:showHorzBorder"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dTable/c:showVertBorder"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dTable/c:showOutline"_ostr, "val"_ostr, "1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testChartExternalData)
+{
+ loadFromFile(u"docx/testMultipleChart.docx");
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:externalData"_ostr);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testEmbeddingsGrabBag)
+{
+ // The problem was that .xlsx files were missing from docx file from embeddings folder
+ // after saving file.
+ // This test case tests whether embeddings files grabbagged properly in correct object.
+
+ loadFromFile(u"docx/testMultiplechartembeddings.docx" );
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTextDocumentPropertySet(xTextDocument, uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aGrabBag(0);
+ xTextDocumentPropertySet->getPropertyValue("InteropGrabBag") >>= aGrabBag;
+ CPPUNIT_ASSERT(aGrabBag.hasElements()); // Grab Bag not empty
+ bool bEmbeddings = false;
+ const char* const testEmbeddedFileNames[] {"word/embeddings/Microsoft_Excel_Worksheet3.xlsx",
+ "word/embeddings/Microsoft_Excel_Worksheet2.xlsx",
+ "word/embeddings/Microsoft_Excel_Worksheet1.xlsx"};
+ for(beans::PropertyValue const & prop : std::as_const(aGrabBag))
+ {
+ if (prop.Name == "OOXEmbeddings")
+ {
+ bEmbeddings = true;
+ uno::Sequence<beans::PropertyValue> aEmbeddingsList(0);
+ uno::Reference<io::XInputStream> aEmbeddingXlsxStream;
+ OUString aEmbeddedfileName;
+ CPPUNIT_ASSERT(prop.Value >>= aEmbeddingsList); // PropertyValue of proper type
+ sal_Int32 length = aEmbeddingsList.getLength();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), length);
+ for(int j = 0; j < length; ++j)
+ {
+ aEmbeddingsList[j].Value >>= aEmbeddingXlsxStream;
+ aEmbeddedfileName = aEmbeddingsList[j].Name;
+ CPPUNIT_ASSERT(aEmbeddingXlsxStream); // Reference not empty
+ CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(testEmbeddedFileNames[j]),aEmbeddedfileName);
+ }
+ }
+ }
+ CPPUNIT_ASSERT(bEmbeddings); // Grab Bag has all the expected elements
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testAreaChartLoad)
+{
+ loadFromFile(u"docx/testAreaChartLoad.docx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:areaChart/c:ser/c:dLbls/c:showVal"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:areaChart/c:ser/c:dLbls/c:dLbl"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testUpDownBars)
+{
+ loadFromFile(u"docx/UpDownBars.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:upDownBars"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDoughnutChart)
+{
+ loadFromFile(u"docx/doughnutChart.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:doughnutChart"_ostr);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDisplayUnits)
+{
+ loadFromFile(u"docx/DisplayUnits.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:dispUnits/c:builtInUnit"_ostr, "val"_ostr, "billions");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testFdo74115WallGradientFill)
+{
+ loadFromFile(u"docx/fdo74115_WallGradientFill.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill"_ostr);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testFdo74115WallBitmapFill)
+{
+ loadFromFile(u"docx/fdo74115_WallBitmapFill.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:blipFill"_ostr);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testPieChartWallLineStyle)
+{
+ loadFromFile(u"odt/testPieChartWallLineStyle.odt");
+
+ // FIXME: validation error in OOXML export: Errors: 9
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:ln/a:noFill"_ostr);
+}
+
+//The below test case tests the built in marker 'x' for Office 2010 in Line charts
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testFdo78290LineChartMarkerX)
+{
+ loadFromFile(u"docx/fdo78290_Line_Chart_Marker_x.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:marker[1]/c:symbol[1]"_ostr,"val"_ostr,"x");
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:marker[1]/c:size[1]"_ostr,"val"_ostr,"7");
+}
+
+// We can also use the built in marker 'x' in scatter chart, hence writing the test case for the same.
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testFdo78290ScatterChartMarkerX)
+{
+ loadFromFile(u"docx/fdo78290_Scatter_Chart_Marker_x.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:scatterChart[1]/c:ser[1]/c:marker[1]/c:symbol[1]"_ostr,"val"_ostr,"x");
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:scatterChart[1]/c:ser[1]/c:marker[1]/c:size[1]"_ostr,"val"_ostr,"7");
+}
+
+// Also in a combination of charts like a column chart and line chart, we can use the built in marker 'x'
+// for the line chart too. hence put a test case for the combination chart also.
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testFdo78290CombinationChartMarkerX)
+{
+ loadFromFile(u"docx/fdo78290_Combination_Chart_Marker_x.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:marker[1]/c:symbol[1]"_ostr,"val"_ostr,"x");
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:marker[1]/c:size[1]"_ostr,"val"_ostr,"7");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testTdf126115IndividualMarker)
+{
+ // Check individual marker properties.
+ loadFromFile(u"xlsx/tdf126115.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // 1. series
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dPt/c:marker/c:symbol"_ostr, "val"_ostr, "square");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dPt/c:marker/c:size"_ostr, "val"_ostr, "8");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dPt/c:marker/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+ // 2. series
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[2]/c:dPt/c:marker/c:symbol"_ostr, "val"_ostr, "x");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[2]/c:dPt/c:marker/c:size"_ostr, "val"_ostr, "15");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[2]/c:dPt/c:marker/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "7030a0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testAxisNumberFormatODS)
+{
+ struct
+ {
+ void check( const Reference<chart2::XChartDocument>& xChartDoc )
+ {
+ Reference<chart2::XAxis> xAxisX = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ Reference<chart2::XTitled> xTitle(xAxisX, UNO_QUERY_THROW);
+ OUString aTitleText = getTitleString(xTitle);
+ CPPUNIT_ASSERT_EQUAL(OUString("Linked To Source"), aTitleText);
+
+ sal_Int32 nNumFmt = getNumberFormatFromAxis(xAxisX);
+ sal_Int16 nType = getNumberFormatType(xChartDoc, nNumFmt);
+ CPPUNIT_ASSERT_MESSAGE("X axis should be percentage format.", (nType & util::NumberFormat::PERCENT));
+
+ bool bNumFmtLinked = false;
+ Reference<beans::XPropertySet> xPS(xAxisX, uno::UNO_QUERY_THROW);
+ xPS->getPropertyValue("LinkNumberFormatToSource") >>= bNumFmtLinked;
+ CPPUNIT_ASSERT_MESSAGE("X axis should have its number format linked to source.", bNumFmtLinked);
+
+ Reference<chart2::XAxis> xAxisY = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ xTitle.set(xAxisY, UNO_QUERY_THROW);
+ aTitleText = getTitleString(xTitle);
+ CPPUNIT_ASSERT_EQUAL(OUString("Not Linked"), aTitleText);
+
+ nNumFmt = getNumberFormatFromAxis(xAxisY);
+ nType = getNumberFormatType(xChartDoc, nNumFmt);
+ CPPUNIT_ASSERT_MESSAGE("Y axis should be a normal number format.", (nType & util::NumberFormat::NUMBER));
+
+ bNumFmtLinked = true;
+ xPS.set(xAxisY, uno::UNO_QUERY_THROW);
+ xPS->getPropertyValue("LinkNumberFormatToSource") >>= bNumFmtLinked;
+ CPPUNIT_ASSERT_MESSAGE("Y axis should not have its number format linked to source.", !bNumFmtLinked);
+ }
+
+ } aTest;
+
+ loadFromFile(u"ods/axis-numformats-linked.ods");
+
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ aTest.check(xChartDoc);
+
+ // Reload the document and make sure everything remains intact.
+ saveAndReload("calc8");
+ xChartDoc = getChartDocFromSheet(0, mxComponent);
+ aTest.check(xChartDoc);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testAxisNumberFormatXLS)
+{
+ struct
+ {
+ void check( const Reference<chart2::XChartDocument>& xChartDoc, bool bNumFmtLinkedActual, sal_Int16 nNumFmtTypeFlag ) const
+ {
+ Reference<chart2::XAxis> xAxisY = getAxisFromDoc( xChartDoc, 0, 1, 0 );
+ bool bNumFmtLinked = false;
+ Reference<beans::XPropertySet> xPS( xAxisY, uno::UNO_QUERY_THROW );
+ xPS->getPropertyValue( "LinkNumberFormatToSource" ) >>= bNumFmtLinked;
+
+ if ( bNumFmtLinkedActual )
+ CPPUNIT_ASSERT_MESSAGE( "Y axis should have its number format linked to source.", bNumFmtLinked );
+ else
+ {
+ CPPUNIT_ASSERT_MESSAGE( "Y axis should not have its number format linked to source.", !bNumFmtLinked );
+
+ sal_Int32 nNumFmt = getNumberFormatFromAxis( xAxisY );
+ sal_Int16 nType = getNumberFormatType( xChartDoc, nNumFmt );
+ if ( nNumFmtTypeFlag == util::NumberFormat::PERCENT )
+ CPPUNIT_ASSERT_MESSAGE( "Y axis should be percentage format.", ( nType & util::NumberFormat::PERCENT ) );
+ else
+ CPPUNIT_ASSERT_MESSAGE( "Y axis should be number format.", ( nType & util::NumberFormat::NUMBER ) );
+ }
+ }
+
+ void change( const Reference<chart2::XChartDocument>& xChartDoc, sal_Int16 nNumFmtTypeFlag )
+ {
+ Reference<chart2::XAxis> xAxisY = getAxisFromDoc( xChartDoc, 0, 1, 0 );
+ Reference<beans::XPropertySet> xPS( xAxisY, uno::UNO_QUERY_THROW );
+ Any aAny( false );
+ xPS->setPropertyValue( "LinkNumberFormatToSource", aAny );
+
+ Reference<util::XNumberFormatsSupplier> xNFS( xChartDoc, uno::UNO_QUERY_THROW );
+ Reference<util::XNumberFormats> xNumberFormats = xNFS->getNumberFormats();
+ CPPUNIT_ASSERT( xNumberFormats.is() );
+ lang::Locale aLocale{ "en", "US", "" };
+ Sequence<sal_Int32> aNumFmts = xNumberFormats->queryKeys( nNumFmtTypeFlag, aLocale, false );
+ CPPUNIT_ASSERT( aNumFmts.hasElements() );
+ aAny <<= aNumFmts[0];
+ xPS->setPropertyValue( CHART_UNONAME_NUMFMT, aAny );
+ }
+
+ } aTest;
+
+ loadFromFile(u"xls/axis_sourceformatting.xls" );
+
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ aTest.check( xChartDoc, true, util::NumberFormat::PERCENT );
+
+ aTest.change( xChartDoc, util::NumberFormat::NUMBER );
+ // Write the document(xls) with changes made close it, load it and check if changes are intact
+ saveAndReload( "MS Excel 97" );
+ xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ aTest.check( xChartDoc, false, util::NumberFormat::NUMBER );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelBordersDOCX)
+{
+ struct Check
+ {
+ sal_Int32 mnIndex;
+ css::drawing::LineStyle meStyle;
+ Color mnColor;
+ };
+
+ struct
+ {
+ /**
+ * Chart 1 has 4 bars of which 1st and 3rd have labels with borders
+ * around them.
+ */
+ void checkObject1( const Reference<chart2::XChartDocument>& xChartDoc )
+ {
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ // Check to make sure that data points 0 and 2 have local properties.
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ Sequence<sal_Int32> aIndices;
+ xPropSet->getPropertyValue("AttributedDataPoints") >>= aIndices;
+ /*
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be 2 data points with local properties.", sal_Int32(2), aIndices.getLength());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aIndices[0]);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aIndices[1]);
+ */
+
+ static const Check aDataPoints[] =
+ {
+ { 0, css::drawing::LineStyle_SOLID, 0x00FFFF00 }, // solid yellow
+ { 2, css::drawing::LineStyle_SOLID, 0x00FF0000 } // solid red
+ };
+
+ for (size_t i = 0; i < std::size(aDataPoints); ++i)
+ {
+ xPropSet = xDataSeries->getDataPointByIndex(aDataPoints[i].mnIndex);
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ css::drawing::LineStyle eLineStyle = css::drawing::LineStyle_NONE;
+ xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_STYLE) >>= eLineStyle;
+ CPPUNIT_ASSERT_EQUAL(aDataPoints[i].meStyle, eLineStyle);
+
+ sal_Int32 nWidth = -1;
+ xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_WIDTH) >>= nWidth;
+ CPPUNIT_ASSERT(nWidth > 0);
+
+ Color nColor;
+ xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_COLOR) >>= nColor;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Border color is wrong.", aDataPoints[i].mnColor, nColor);
+ }
+ }
+
+ /**
+ * Chart 2 has all its data labels with identical borders.
+ */
+ void checkObject2( const Reference<chart2::XChartDocument>& xChartDoc )
+ {
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ css::drawing::LineStyle eLineStyle = css::drawing::LineStyle_NONE;
+ xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_STYLE) >>= eLineStyle;
+ CPPUNIT_ASSERT_EQUAL(css::drawing::LineStyle_SOLID, eLineStyle);
+
+ sal_Int32 nWidth = -1;
+ xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_WIDTH) >>= nWidth;
+ CPPUNIT_ASSERT(nWidth > 0);
+
+ Color nColor;
+ xPropSet->getPropertyValue(CHART_UNONAME_LABEL_BORDER_COLOR) >>= nColor;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Border color should be green.", COL_LIGHTGREEN, nColor);
+ }
+
+ } aTest;
+
+ loadFromFile(u"docx/data-label-borders.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+
+ // "Automatic" chart background fill in docx should be loaded as solid white.
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::FillStyle eStyle = xPropSet->getPropertyValue("FillStyle").get<drawing::FillStyle>();
+ sal_Int32 nColor = xPropSet->getPropertyValue("FillColor").get<sal_Int32>();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in docx should be loaded as solid fill.",
+ drawing::FillStyle_SOLID, eStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in docx should be loaded as solid white.",
+ sal_Int32(0x00FFFFFF), sal_Int32(nColor & 0x00FFFFFF)); // highest 2 bytes are transparency which we ignore here.
+
+ aTest.checkObject1(xChartDoc);
+ xChartDoc.set(getChartDocFromWriter(1), uno::UNO_QUERY);
+ aTest.checkObject2(xChartDoc);
+
+ // FIXME: validation error in OOXML export: Errors: 3
+ skipValidation();
+
+ saveAndReload("Office Open XML Text");
+
+ xChartDoc.set(getChartDocFromWriter(0), uno::UNO_QUERY);
+ aTest.checkObject1(xChartDoc);
+ xChartDoc.set(getChartDocFromWriter(1), uno::UNO_QUERY);
+ aTest.checkObject2(xChartDoc);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabel3DChartDOCX)
+{
+ loadFromFile(u"docx/3d-bar-label.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // We must not export label position attributes for 3D bar charts. The
+ // same rule also applies to several other 3D charts, apparently.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:dLblPos"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:dLbl/c:dLblPos"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelBarChartDOCX)
+{
+ loadFromFile(u"docx/bar-chart-labels.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls/c:dLblPos"_ostr, "val"_ostr, "ctr");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[2]/c:dLbls/c:dLblPos"_ostr, "val"_ostr, "inEnd");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[3]/c:dLbls/c:dLblPos"_ostr, "val"_ostr, "inBase");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelClusteredBarChartDOCX)
+{
+ loadFromFile(u"docx/clustered-bar-chart-labels.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // FIXME: validation error in OOXML export: Errors: 9
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // This was "t", should be one of the allowed values.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls/c:dLbl[2]/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelRadarChartDOCX)
+{
+ loadFromFile(u"docx/radar-chart-labels.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // We must not export label position attributes for radar charts.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:radarChart/c:ser/c:dLbls/c:dLblPos"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:radarChart/c:ser/c:dLbls/c:dLbl/c:dLblPos"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelDoughnutChartDOCX)
+{
+ loadFromFile(u"docx/doughnut-chart-labels.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // We must not export label position attributes for doughnut charts.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:ser/c:dLbls/c:dLblPos"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:ser/c:dLbls/c:dLbl/c:dLblPos"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelAreaChartDOCX)
+{
+ loadFromFile(u"docx/area-chart-labels.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // We must not export label position attributes for area charts.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:areaChart/c:ser/c:dLbls/c:dLblPos"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:areaChart/c:ser/c:dLbls/c:dLbl/c:dLblPos"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testDataLabelDefaultLineChartDOCX)
+{
+ // This file was created by Word 2007, which doesn't provide default data
+ // label position (2010 does). Make sure its default data label position
+ // is RIGHT when exporting.
+
+ loadFromFile(u"docx/line-chart-label-default-placement.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ saveAndReload("Office Open XML Text");
+
+ xChartDoc.set(getChartDocFromWriter(0), uno::UNO_QUERY);
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropSet.is());
+ sal_Int32 nLabelPlacement = -1;
+ if (xPropSet->getPropertyValue("LabelPlacement") >>= nLabelPlacement)
+ // This option may not be set. Check its value only when it's set.
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Line chart's default label placement should be 'right'.", chart::DataLabelPlacement::RIGHT, nLabelPlacement );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testIndividualDataLabelProps)
+{
+ loadFromFile(u"xlsx/tdf122915.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[3]/c:dLbls/c:dLbl/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[3]/c:dLbls/c:dLbl/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "1600");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[3]/c:dLbls/c:dLbl/c:txPr/a:p/a:pPr/a:defRPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[3]/c:dLbls/c:dLbl/c:txPr/a:p/a:pPr/a:defRPr/a:latin"_ostr, "typeface"_ostr, "Times New Roman");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testBarChartRotation)
+{
+ loadFromFile(u"docx/barChartRotation.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:view3D/c:rotX"_ostr, "val"_ostr, "30");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:view3D/c:rotY"_ostr, "val"_ostr, "50");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testShapeFollowedByChart)
+{
+ /* If there is a scenario where a chart is followed by a shape
+ which is being exported as an alternate content then, the
+ docPr Id is being repeated, ECMA 20.4.2.5 says that the
+ docPr Id should be unique, ensuring the same here.
+ */
+ loadFromFile(u"docx/FDO74430.docx");
+
+ // FIXME: validation error in OOXML export: Errors: 5
+ skipValidation();
+
+ save("Office Open XML Text" );
+ xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ OUString aValueOfFirstDocPR = getXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:drawing[1]/wp:inline[1]/wp:docPr[1]"_ostr, "id"_ostr);
+ OUString aValueOfSecondDocPR = getXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/mc:AlternateContent[1]/mc:Choice[1]/w:drawing[1]/wp:anchor[1]/wp:docPr[1]"_ostr, "id"_ostr);
+
+ CPPUNIT_ASSERT( aValueOfFirstDocPR != aValueOfSecondDocPR );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testPieChartDataLabels)
+{
+ loadFromFile(u"docx/PieChartDataLabels.docx");
+
+ // FIXME: validation error in OOXML export: Errors: 19
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser[1]/c:dLbls/c:dLbl[1]/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testSeriesIdxOrder)
+{
+ loadFromFile(u"docx/testSeriesIdxOrder.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:idx[1]"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace[1]/c:chart[1]/c:plotArea[1]/c:lineChart[1]/c:ser[1]/c:order[1]"_ostr, "val"_ostr, "1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testScatterPlotLabels)
+{
+ loadFromFile(u"odt/scatter-plot-labels.odt");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ // Make sure the original chart has 'a', 'b', 'c' as its data labels.
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("a"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("b"), aLabels[1][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("c"), aLabels[2][0].get<OUString>());
+
+ // Reload the doc and check again. The labels should not change.
+ saveAndReload("writer8");
+
+ xChartDoc.set(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("a"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("b"), aLabels[1][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("c"), aLabels[2][0].get<OUString>());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testErrorBarDataRangeODS)
+{
+ loadFromFile(u"ods/ErrorBarRange.ods");
+ saveAndReload("calc8");
+
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
+
+ // test that y error bars are there
+ Reference< beans::XPropertySet > xErrorBarYProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_Y) >>= xErrorBarYProps;
+ uno::Any aAny = xErrorBarYProps->getPropertyValue("ErrorBarRangePositive");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ OUString aPosRange;
+ aAny >>= aPosRange;
+ CPPUNIT_ASSERT_EQUAL(OUString("$Sheet1.$B$1:$B$3"), aPosRange);
+
+ aAny = xErrorBarYProps->getPropertyValue("ErrorBarRangeNegative");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ OUString aNegRange;
+ aAny >>= aNegRange;
+ CPPUNIT_ASSERT_EQUAL(OUString("$Sheet1.$C$1:$C$3"), aNegRange);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testChartCrash)
+{
+ loadFromFile(u"docx/FDO75975.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testPieChartRotation)
+{
+ loadFromFile(u"docx/pieChartRotation.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:view3D/c:rotX"_ostr, "val"_ostr, "40");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:view3D/c:rotY"_ostr, "val"_ostr, "30");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testEmbeddingsOleObjectGrabBag)
+{
+ // The problem was that .bin files were missing from docx file from embeddings folder
+ // after saving file.
+ // This test case tests whether embeddings files grabbagged properly in correct object.
+
+ loadFromFile(u"docx/testchartoleobjectembeddings.docx" );
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTextDocumentPropertySet(xTextDocument, uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aGrabBag(0);
+ xTextDocumentPropertySet->getPropertyValue("InteropGrabBag") >>= aGrabBag;
+ CPPUNIT_ASSERT(aGrabBag.hasElements()); // Grab Bag not empty
+ bool bEmbeddings = false;
+ const char* const testEmbeddedFileNames[] = {"word/embeddings/oleObject1.bin"};
+ for(beans::PropertyValue const & prop : std::as_const(aGrabBag))
+ {
+ if (prop.Name == "OOXEmbeddings")
+ {
+ bEmbeddings = true;
+ uno::Sequence<beans::PropertyValue> aEmbeddingsList(0);
+ uno::Reference<io::XInputStream> aEmbeddingXlsxStream;
+ OUString aEmbeddedfileName;
+ CPPUNIT_ASSERT(prop.Value >>= aEmbeddingsList); // PropertyValue of proper type
+ sal_Int32 length = aEmbeddingsList.getLength();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), length);
+ for(int j = 0; j < length; ++j)
+ {
+ aEmbeddingsList[j].Value >>= aEmbeddingXlsxStream;
+ aEmbeddedfileName = aEmbeddingsList[j].Name;
+ CPPUNIT_ASSERT(aEmbeddingXlsxStream); // Reference not empty
+ CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(testEmbeddedFileNames[j]),aEmbeddedfileName);
+ }
+ }
+ }
+ CPPUNIT_ASSERT(bEmbeddings); // Grab Bag has all the expected elements
+}
+
+namespace {
+
+void checkGapWidth(Reference<beans::XPropertySet> const & xPropSet, sal_Int32 nValue)
+{
+ uno::Any aAny = xPropSet->getPropertyValue("GapwidthSequence");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ uno::Sequence< sal_Int32 > aSequence;
+ aAny >>= aSequence;
+ CPPUNIT_ASSERT(aSequence.hasElements());
+ CPPUNIT_ASSERT_EQUAL(nValue, aSequence[0]);
+}
+
+void checkOverlap(Reference<beans::XPropertySet> const & xPropSet, sal_Int32 nValue)
+{
+ uno::Any aAny = xPropSet->getPropertyValue("OverlapSequence");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ uno::Sequence< sal_Int32 > aSequence;
+ aAny >>= aSequence;
+ CPPUNIT_ASSERT(aSequence.hasElements());
+ CPPUNIT_ASSERT_EQUAL(nValue, aSequence[0]);
+}
+
+void checkSheetForGapWidthAndOverlap(uno::Reference< chart2::XChartDocument > const & xChartDoc,
+ sal_Int32 nExpectedGapWidth, sal_Int32 nExpectedOverlap)
+{
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT(xChartType.is());
+
+ Reference< beans::XPropertySet > xPropSet( xChartType, uno::UNO_QUERY_THROW );
+ checkGapWidth(xPropSet, nExpectedGapWidth);
+ checkOverlap(xPropSet, nExpectedOverlap);
+
+}
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testGapWidthXLSX)
+{
+ loadFromFile(u"xlsx/gapWidth.xlsx");
+
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 120, -60);
+
+ xChartDoc = getChartDocFromSheet( 1, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 50, 30);
+
+ saveAndReload("Calc Office Open XML");
+
+ xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 120, -60);
+
+ xChartDoc = getChartDocFromSheet( 1, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 50, 30);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testSmoothedLines)
+{
+ loadFromFile(u"ods/smoothedLines.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser[1]/c:smooth"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest, testLabelStringODS)
+{
+ loadFromFile(u"ods/labelString.ods");
+
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ Reference< chart2::data::XDataSequence > xLabelSeq =
+ getLabelDataSequenceFromDoc(xChartDoc);
+ CPPUNIT_ASSERT(xLabelSeq.is());
+
+ OUString aLabelString = xLabelSeq->getSourceRangeRepresentation();
+ CPPUNIT_ASSERT_EQUAL(OUString("\"LabelName\""), aLabelString);
+
+ saveAndReload("calc8");
+
+ xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ xLabelSeq = getLabelDataSequenceFromDoc(xChartDoc);
+ CPPUNIT_ASSERT(xLabelSeq.is());
+
+ aLabelString = xLabelSeq->getSourceRangeRepresentation();
+ CPPUNIT_ASSERT_EQUAL(OUString("\"LabelName\""), aLabelString);
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2export2.cxx b/chart2/qa/extras/chart2export2.cxx
new file mode 100644
index 0000000000..f5378dc944
--- /dev/null
+++ b/chart2/qa/extras/chart2export2.cxx
@@ -0,0 +1,1685 @@
+/* -*- 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/XDataPointCustomLabelField.hpp>
+#include <com/sun/star/chart2/DataPointCustomLabelFieldType.hpp>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/chart2/DataPointLabel.hpp>
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+
+using uno::Reference;
+using beans::XPropertySet;
+
+class Chart2ExportTest2 : public ChartTest
+{
+public:
+ Chart2ExportTest2()
+ : ChartTest("/chart2/qa/extras/data/")
+ {
+ }
+};
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testSetSeriesToSecondaryAxisXLSX)
+{
+ loadFromFile(u"xlsx/add_series_secondary_axis.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ // Second series
+ Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xChartDoc, 1);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ Reference<beans::XPropertySet> xPropSet(xSeries, uno::UNO_QUERY_THROW);
+ sal_Int32 AxisIndex = 1;
+ // Attach the second series to the secondary axis. (The third series is already attached.)
+ xPropSet->setPropertyValue("AttachedAxisIndex", uno::Any(AxisIndex));
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Check there are only two <lineChart> tag in the XML, one for the primary and one for the secondary axis.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart"_ostr, 2);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCombinedChartSecondaryAxisXLSX)
+{
+ // Original file was created with MS Office
+ loadFromFile(u"xlsx/combined_chart_secondary_axis.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Collect barchart axID on secondary Axis
+ OUString XValueIdOfBarchart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueIdOfBarchart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:axId[2]"_ostr, "val"_ostr);
+ // Collect linechart axID on primary Axis
+ OUString XValueIdOfLinechart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueIdOfLinechart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[2]"_ostr, "val"_ostr);
+ // Check which c:catAx and c:valAx contain the AxisId of charttypes
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[1]/c:axId"_ostr, "val"_ostr,
+ XValueIdOfLinechart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:axId"_ostr, "val"_ostr,
+ YValueIdOfLinechart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[2]/c:axId"_ostr, "val"_ostr,
+ XValueIdOfBarchart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:axId"_ostr, "val"_ostr,
+ YValueIdOfBarchart);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCombinedChartSecondaryAxisODS)
+{
+ // Original file was created with LibreOffice
+ loadFromFile(u"ods/combined_chart_secondary_axis.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Collect barchart axID on secondary Axis
+ OUString XValueIdOfBarchart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueIdOfBarchart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:axId[2]"_ostr, "val"_ostr);
+ // Collect linechart axID on primary Axis
+ OUString XValueIdOfLinechart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueIdOfLinechart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[2]"_ostr, "val"_ostr);
+ // Check which c:catAx and c:valAx contain the AxisId of charttypes
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[1]/c:axId"_ostr, "val"_ostr,
+ XValueIdOfLinechart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:axId"_ostr, "val"_ostr,
+ YValueIdOfLinechart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[2]/c:axId"_ostr, "val"_ostr,
+ XValueIdOfBarchart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:axId"_ostr, "val"_ostr,
+ YValueIdOfBarchart);
+ // do not need CT_crosses tag if the actual axis is deleted, so we need to make sure it is not saved
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[2]/c:crosses"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCrossBetweenXLSX)
+{
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ // Original files were created with MS Office
+ {
+ loadFromFile(u"xlsx/tdf127777.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween"_ostr,
+ "val"_ostr, "between");
+ }
+ {
+ loadFromFile(u"xlsx/tdf132076.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween"_ostr,
+ "val"_ostr, "between");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCrossBetweenWithDeletedAxis)
+{
+ // Original file was created with MS Office (the category axis is deleted in the file)
+ loadFromFile(u"xlsx/tdf128633.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween"_ostr, "val"_ostr,
+ "between");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCrossBetweenODS)
+{
+ // Original file was created with LibreOffice
+ loadFromFile(u"ods/test_CrossBetween.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween"_ostr, "val"_ostr,
+ "between");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testAxisTitleRotationXLSX)
+{
+ loadFromFile(u"xlsx/axis_title_rotation.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:title/c:tx/c:rich/a:bodyPr"_ostr,
+ "rot"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testAxisTitlePositionDOCX)
+{
+ loadFromFile(u"docx/testAxisTitlePosition.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // test X Axis title position
+ OUString aXVal = getXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:title/c:layout/c:manualLayout/c:x"_ostr,
+ "val"_ostr);
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.698208543867708, nX, 1e-3);
+ OUString aYVal = getXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:title/c:layout/c:manualLayout/c:y"_ostr,
+ "val"_ostr);
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.805152435594555, nY, 1e-3);
+
+ // test Y Axis title position
+ aXVal = getXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:title/c:layout/c:manualLayout/c:x"_ostr,
+ "val"_ostr);
+ nX = aXVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0253953671500755, nX, 1e-3);
+ aYVal = getXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:title/c:layout/c:manualLayout/c:y"_ostr,
+ "val"_ostr);
+ nY = aYVal.toDouble();
+ // just test the first two decimal digits because it is not perfect in docx yet.
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.384070199122511, nY, 1e-2);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testAxisCrossBetweenDOCX)
+{
+ loadFromFile(u"odt/axis-position.odt");
+
+ // FIXME: validation error in OOXML export: Errors: 3
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ assertXPath(pXmlDoc, "(//c:crossBetween)[1]"_ostr, "val"_ostr, "midCat");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testPieChartDataPointExplosionXLSX)
+{
+ loadFromFile(u"xlsx/pie_chart_datapoint_explosion.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dPt/c:explosion"_ostr,
+ "val"_ostr, "28");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCustomDataLabel)
+{
+ loadFromFile(u"pptx/tdf115107.pptx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ float nFontSize;
+ sal_Int64 nFontColor;
+ sal_Int32 nCharUnderline;
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+
+ // 1
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("90.0 = "), aFields[0]->getString());
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[0]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(18), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xed7d31), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE,
+ aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("90"), aFields[1]->getString());
+ CPPUNIT_ASSERT_EQUAL(OUString("{0C576297-5A9F-4B4E-A675-B6BA406B7D87}"), aFields[1]->getGuid());
+
+ // 2
+ xPropertySet.set(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(8), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), aFields[0]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" : "), aFields[1]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CATEGORYNAME,
+ aFields[2]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("B"), aFields[2]->getString());
+ CPPUNIT_ASSERT_EQUAL(OUString("{0CCAAACD-B393-42CE-8DBD-82F9F9ADC852}"), aFields[2]->getGuid());
+ aFields[2]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[2]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(16), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xed7d31), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_NEWLINE,
+ aFields[3]->getFieldType());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[4]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Multi"), aFields[4]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[5]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("line"), aFields[5]->getString());
+ aFields[5]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[5]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(11.97), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xbf9000), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_NEWLINE,
+ aFields[6]->getFieldType());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[7]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Abc"), aFields[7]->getString());
+ aFields[7]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[7]->getPropertyValue("CharColor") >>= nFontColor;
+ aFields[7]->getPropertyValue("CharUnderline") >>= nCharUnderline;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(12), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xa9d18e), nFontColor);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nCharUnderline);
+
+ // 3
+ xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME,
+ aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("DATA"), aFields[0]->getString());
+ CPPUNIT_ASSERT_EQUAL(OUString("{C8F3EB90-8960-4F9A-A3AD-B4FAC4FE4566}"), aFields[0]->getGuid());
+
+ // 4
+ xPropertySet.set(xDataSeries->getDataPointByIndex(3), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLREF,
+ aFields[0]->getFieldType());
+ //CPPUNIT_ASSERT_EQUAL(OUString("70"), aFields[0]->getString()); TODO: Not implemented yet
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" <CELLREF"), aFields[1]->getString());
+
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Check the data labels font color for the complete data series
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/"
+ "a:defRPr/a:solidFill/a:srgbClr"_ostr,
+ "val"_ostr, "404040");
+}
+
+/// Test for tdf#94235
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testDataSeriesName)
+{
+ // ODF
+ {
+ loadFromFile(u"ods/ser_labels.ods");
+ saveAndReload("calc8");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ chart2::DataPointLabel aDataPointLabel;
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aDataPointLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aDataPointLabel.ShowSeriesName);
+ }
+
+ // OOXML
+ {
+ loadFromFile(u"xlsx/ser_labels.xlsx");
+ saveAndReload("Calc Office Open XML");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ chart2::DataPointLabel aDataPointLabel;
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aDataPointLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aDataPointLabel.ShowSeriesName);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCustomPositionofDataLabel)
+{
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ loadFromFile(u"xlsx/testCustomPosDataLabels.xlsx");
+ {
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // test custom position of data label (xlsx)
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:idx"_ostr,
+ "val"_ostr, "2");
+ OUString aXVal = getXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/"
+ "c:dLbl[1]/c:layout/c:manualLayout/c:x"_ostr,
+ "val"_ostr);
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.11027682973075476, nX, 1e-7);
+
+ OUString aYVal = getXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/"
+ "c:dLbl[1]/c:layout/c:manualLayout/c:y"_ostr,
+ "val"_ostr);
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.0742140311063737, nY, 1e-7);
+ }
+
+ loadFromFile(u"docx/testTdf108110.docx");
+ {
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // test custom position of data label (docx)
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[2]/c:idx"_ostr,
+ "val"_ostr, "2");
+ OUString aXVal = getXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/"
+ "c:dLbl[2]/c:layout/c:manualLayout/c:x"_ostr,
+ "val"_ostr);
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0227256488772236, nX, 1e-7);
+
+ OUString aYVal = getXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/"
+ "c:dLbl[2]/c:layout/c:manualLayout/c:y"_ostr,
+ "val"_ostr);
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.172648731408574, nY, 1e-7);
+ }
+
+ loadFromFile(u"ods/tdf136024.ods");
+ {
+ saveAndReload("calc8");
+ // tdf#136024: test custom position of pie chart data label after an ods export
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0),
+ uno::UNO_SET_THROW);
+
+ chart2::RelativePosition aCustomLabelPosition;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("CustomLabelPosition")
+ >>= aCustomLabelPosition);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.0961935120945059, aCustomLabelPosition.Primary, 1e-5);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.209578842093566, aCustomLabelPosition.Secondary, 1e-5);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCustomDataLabelMultipleSeries)
+{
+ loadFromFile(u"pptx/tdf115107-2.pptx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ float nFontSize;
+ sal_Int64 nFontColor;
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+
+ // First series
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE,
+ aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("4.3"), aFields[0]->getString());
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[0]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(18), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xc00000), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), aFields[1]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME,
+ aFields[2]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Bars"), aFields[2]->getString());
+
+ // Second series
+ xDataSeries = getDataSeriesFromDoc(xChartDoc, 0, 1);
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE,
+ aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("2"), aFields[0]->getString());
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[0]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(18), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xffd966), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT,
+ aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), aFields[1]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME,
+ aFields[2]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Line"), aFields[2]->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testLeaderLines)
+{
+ // FIXME: validation error in OOXML export: Errors: 2
+ skipValidation();
+
+ loadFromFile(u"xlsx/testTdf90749.xlsx");
+ {
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser[1]/c:dLbls/c:extLst/c:ext/"
+ "c15:showLeaderLines"_ostr,
+ "val"_ostr, "1");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser[2]/c:dLbls/c:extLst/c:ext/"
+ "c15:showLeaderLines"_ostr,
+ "val"_ostr, "0");
+ }
+ loadFromFile(u"docx/MSO_Custom_Leader_Line.docx");
+ {
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // tdf#134571: Check the leader line is switch off.
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:extLst/c:ext/"
+ "c15:showLeaderLines"_ostr,
+ "val"_ostr, "0");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testNumberFormatExportPPTX)
+{
+ loadFromFile(u"pptx/tdf115859.pptx");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:numFmt"_ostr,
+ "formatCode"_ostr, "#,##0.00,\\K");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:numFmt"_ostr,
+ "sourceLinked"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testLabelSeparatorExportDOCX)
+{
+ loadFromFile(u"docx/testLabelSeparator.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // The text separator should be a new line
+ assertXPathContent(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls/c:separator"_ostr,
+ "\n");
+ // The text separator should be a comma
+ assertXPathContent(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[2]/c:dLbls/c:separator"_ostr,
+ ", ");
+ // The text separator should be a semicolon
+ assertXPathContent(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[3]/c:dLbls/c:separator"_ostr,
+ "; ");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testChartTitlePropertiesColorFillPPTX)
+{
+ loadFromFile(u"pptx/testChartTitlePropertiesColorFill.pptx");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:solidFill/a:srgbClr"_ostr,
+ "val"_ostr, "ff0000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testChartTitlePropertiesGradientFillPPTX)
+{
+ loadFromFile(u"pptx/testChartTitlePropertiesGradientFill.pptx");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:title/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr"_ostr,
+ "val"_ostr, "f6f8fc");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:title/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr"_ostr,
+ "val"_ostr, "c7d5ed");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testChartTitlePropertiesBitmapFillPPTX)
+{
+ loadFromFile(u"pptx/testChartTitlePropertiesBitmapFill.pptx");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:blipFill/a:blip"_ostr,
+ "embed"_ostr, "rId1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testxAxisLabelsRotation)
+{
+ loadFromFile(u"xlsx/xAxisLabelsRotation.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc1 = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc1);
+
+ // Chart1 xAxis labels should be 45 degree
+ assertXPath(pXmlDoc1, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:txPr/a:bodyPr"_ostr,
+ "rot"_ostr, "2700000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testMultipleCategoryAxisLablesXLSX)
+{
+ loadFromFile(u"ods/multilevelcat.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // check category axis labels number of first level
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/c:multiLvlStrRef/"
+ "c:multiLvlStrCache/c:ptCount"_ostr,
+ "val"_ostr, "6");
+ // check category axis labels text of first level
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[1]/c:pt[1]/c:v"_ostr,
+ "Categoria 1");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[1]/c:pt[6]/c:v"_ostr,
+ "Categoria 6");
+ // check category axis labels text of second level
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[2]/c:pt[1]/c:v"_ostr,
+ "2011");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[2]/c:pt[3]/c:v"_ostr,
+ "2013");
+ // check the 'noMultiLvlLbl' tag - ChartExport.cxx:2950 FIXME: seems not support, so check the default noMultiLvlLbl value.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:noMultiLvlLbl"_ostr,
+ "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testMultipleCategoryAxisLablesDOCX)
+{
+ loadFromFile(u"odt/multilevelcat.odt");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // check category axis labels number of first level
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/c:multiLvlStrRef/"
+ "c:multiLvlStrCache/c:ptCount"_ostr,
+ "val"_ostr, "4");
+ // check category axis labels text of first level
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[1]/c:pt[1]/c:v"_ostr,
+ "Categoria 1");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[1]/c:pt[4]/c:v"_ostr,
+ "Categoria 4");
+ // check category axis labels text of second level
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[2]/c:pt[1]/c:v"_ostr,
+ "2011");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/"
+ "c:multiLvlStrRef/c:multiLvlStrCache/c:lvl[2]/c:pt[2]/c:v"_ostr,
+ "2012");
+ // check the 'noMultiLvlLbl' tag - ChartExport.cxx:2950 FIXME: seems not support, so check the default noMultiLvlLbl value.
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:noMultiLvlLbl"_ostr,
+ "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf116163)
+{
+ loadFromFile(u"pptx/tdf116163.pptx");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:txPr/a:bodyPr"_ostr,
+ "rot"_ostr, "-5400000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf111824)
+{
+ loadFromFile(u"xlsx/tdf111824.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Collect 3D barchart Z axID
+ OUString zAxisIdOf3DBarchart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:axId[3]"_ostr, "val"_ostr);
+ // 3D barchart Z axis properties should be in a serAx OOXML tag instead of catAx
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:serAx/c:axId"_ostr, "val"_ostr,
+ zAxisIdOf3DBarchart);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, test3DAreaChartZAxis)
+{
+ loadFromFile(u"xlsx/test3DAreaChartZAxis.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Collect 3D area chart Z axID
+ OUString zAxisIdOf3DAreachart = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:area3DChart/c:axId[3]"_ostr, "val"_ostr);
+ // 3D area chart z-axis properties should be in a serAx OOXML element instead of catAx
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:serAx/c:axId"_ostr, "val"_ostr,
+ zAxisIdOf3DAreachart);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf119029)
+{
+ loadFromFile(u"odp/tdf119029.odp");
+ // Only use "chart", without number, because the number depends on the previous tests
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:txPr/a:bodyPr"_ostr,
+ "rot"_ostr, "-5400000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf108022)
+{
+ loadFromFile(u"odt/tdf108022.odt");
+ saveAndReload("Office Open XML Text");
+
+ // assert we really have two charts
+ Reference<chart2::XChartDocument> xChartDoc1(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc1.is());
+ Reference<chart2::XChartDocument> xChartDoc2(getChartDocFromWriter(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc2.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf121744)
+{
+ loadFromFile(u"docx/tdf121744.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ OUString XValueId = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueId = getXPath(
+ pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:axId[2]"_ostr, "val"_ostr);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[1]"_ostr, "val"_ostr,
+ XValueId);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:axId[2]"_ostr, "val"_ostr,
+ YValueId);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf121189)
+{
+ loadFromFile(u"odp/tdf121189.odp");
+ saveAndReload("Impress Office Open XML");
+
+ uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0),
+ uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xPage->getCount());
+ uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.drawing.OLE2Shape"), xShape->getShapeType());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf122031)
+{
+ //Checks pie chart data label format.
+ loadFromFile(u"xlsx/tdf122031.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:numFmt"_ostr,
+ "formatCode"_ostr, "0.000%");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[1]/c:numFmt"_ostr,
+ "formatCode"_ostr, "0.000%");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[2]/c:numFmt"_ostr,
+ "formatCode"_ostr, "0.000%");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[3]/c:numFmt"_ostr,
+ "formatCode"_ostr, "0.000%");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf115012)
+{
+ loadFromFile(u"xlsx/tdf115012.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // workaround: use-zero instead of leave-gap to show the original line chart
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:dispBlanksAs"_ostr, "val"_ostr, "zero");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf134118)
+{
+ loadFromFile(u"xlsx/tdf134118.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // workaround: use leave-gap instead of zero to show the original line chart
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:dispBlanksAs"_ostr, "val"_ostr, "gap");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf123206_customLabelText)
+{
+ loadFromFile(u"docx/tdf123206.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // FIXME: validation error in OOXML export: Errors: 2
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[2]/c:tx/"
+ "c:rich/a:p/a:r/a:t"_ostr,
+ "kiscica");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCustomLabelText)
+{
+ loadFromFile(u"docx/testCustomlabeltext.docx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // FIXME: validation error in OOXML export: Errors: 3
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl[1]/c:idx"_ostr,
+ "val"_ostr, "2");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl[1]/c:tx/"
+ "c:rich/a:p/a:r[1]/a:t"_ostr,
+ "3.5");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl[1]/c:tx/"
+ "c:rich/a:p/a:r[3]/a:t"_ostr,
+ "CustomLabel 1");
+
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl[2]/c:idx"_ostr,
+ "val"_ostr, "3");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl[2]/c:tx/"
+ "c:rich/a:p/a:r[1]/a:t"_ostr,
+ "4.5");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl[2]/c:tx/"
+ "c:rich/a:p/a:r[3]/a:t"_ostr,
+ "CustomLabel 2");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testDeletedLegendEntries)
+{
+ loadFromFile(u"xlsx/deleted_legend_entry.xlsx");
+ {
+ saveAndReload("Calc Office Open XML");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 1));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropertySet(xDataSeries, uno::UNO_QUERY_THROW);
+ bool bShowLegendEntry = true;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("ShowLegendEntry") >>= bShowLegendEntry);
+ CPPUNIT_ASSERT(!bShowLegendEntry);
+ }
+
+ loadFromFile(u"xlsx/deleted_legend_entry2.xlsx");
+ {
+ saveAndReload("Calc Office Open XML");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropertySet(xDataSeries, uno::UNO_QUERY_THROW);
+ bool bShowLegendEntry = true;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("ShowLegendEntry") >>= bShowLegendEntry);
+ CPPUNIT_ASSERT(!bShowLegendEntry);
+
+ Reference<chart2::XChartDocument> xChartDoc2 = getChartDocFromSheet(1, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries2(getDataSeriesFromDoc(xChartDoc2, 0));
+ CPPUNIT_ASSERT(xDataSeries2.is());
+ Reference<beans::XPropertySet> xPropertySet2(xDataSeries2, uno::UNO_QUERY_THROW);
+ Sequence<sal_Int32> deletedLegendEntriesSeq;
+ CPPUNIT_ASSERT(xPropertySet2->getPropertyValue("DeletedLegendEntries")
+ >>= deletedLegendEntriesSeq);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), deletedLegendEntriesSeq[0]);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf60316)
+{
+ loadFromFile(u"pptx/tdf60316.pptx");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Without the fix in place, the shape would have had a solidFill background
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:noFill"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:solidFill"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf130225)
+{
+ loadFromFile(u"docx/piechart_deleted_legend_entry.docx");
+ saveAndReload("Office Open XML Text");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropertySet(xDataSeries, uno::UNO_QUERY_THROW);
+ Sequence<sal_Int32> deletedLegendEntriesSeq;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("DeletedLegendEntries")
+ >>= deletedLegendEntriesSeq);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), deletedLegendEntriesSeq[0]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf59857)
+{
+ loadFromFile(u"ods/tdf59857.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:floor/c:spPr/a:ln/a:noFill"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:floor/c:spPr/a:solidFill/a:srgbClr"_ostr,
+ "val"_ostr, "cccccc");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:backWall/c:spPr/a:ln/a:noFill"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:backWall/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr,
+ "val"_ostr, "b3b3b3");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf126076)
+{
+ loadFromFile(u"xlsx/auto_marker_excel10.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // This was 12: all series exported with square markers
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:marker/c:symbol[@val='square']"_ostr,
+ 0);
+ // instead of skipping markers
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:marker"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf75330)
+{
+ loadFromFile(u"ods/legend_overlay.ods");
+ saveAndReload("calc8");
+ {
+ uno::Reference<chart2::XChartDocument> xChart2Doc = getChartDocFromSheet(0, mxComponent);
+ uno::Reference<chart::XChartDocument> xChartDoc(xChart2Doc, uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xLegend = xChartDoc->getLegend();
+ Reference<beans::XPropertySet> xPropertySet(xLegend, uno::UNO_QUERY_THROW);
+ bool bOverlay = false;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Overlay") >>= bOverlay);
+ CPPUNIT_ASSERT(bOverlay);
+ }
+ saveAndReload("Calc Office Open XML");
+ {
+ uno::Reference<chart2::XChartDocument> xChart2Doc = getChartDocFromSheet(0, mxComponent);
+ uno::Reference<chart::XChartDocument> xChartDoc(xChart2Doc, uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xLegend = xChartDoc->getLegend();
+ Reference<beans::XPropertySet> xPropertySet(xLegend, uno::UNO_QUERY_THROW);
+ bool bOverlay = false;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Overlay") >>= bOverlay);
+ CPPUNIT_ASSERT(bOverlay);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf127792)
+{
+ loadFromFile(u"docx/MSO_axis_position.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween"_ostr, "val"_ostr,
+ "between");
+
+ pXmlDoc = parseExport("word/charts/chart2.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:crossBetween"_ostr, "val"_ostr,
+ "midCat");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf131979)
+{
+ loadFromFile(u"ods/tdf131115.ods");
+ {
+ saveAndReload("calc8");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropertySet;
+ xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
+ bool blinknumberformattosource = true;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT)
+ >>= blinknumberformattosource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.",
+ !blinknumberformattosource);
+ }
+
+ loadFromFile(u"ods/tdf131979.ods");
+ {
+ saveAndReload("calc8");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropertySet;
+ xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
+ bool blinknumberformattosource = true;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT)
+ >>= blinknumberformattosource);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.",
+ blinknumberformattosource);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf132076)
+{
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ {
+ loadFromFile(u"ods/tdf132076.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:numFmt"_ostr,
+ "formatCode"_ostr, "dd");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:numFmt"_ostr,
+ "sourceLinked"_ostr, "0");
+ }
+ {
+ loadFromFile(u"xlsx/tdf132076.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:numFmt"_ostr,
+ "formatCode"_ostr, "dd");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:numFmt"_ostr,
+ "sourceLinked"_ostr, "0");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf125812)
+{
+ loadFromFile(u"odp/ellipticalGradientFill.odp");
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:path"_ostr,
+ "path"_ostr, "circle");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:path/a:fillToRect"_ostr,
+ "l"_ostr, "50000");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:path/a:fillToRect"_ostr,
+ "t"_ostr, "49000");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:path/a:fillToRect"_ostr,
+ "r"_ostr, "50000");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:path/a:fillToRect"_ostr,
+ "b"_ostr, "51000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf133190)
+{
+ loadFromFile(u"xlsx/tdf133190_tdf133191.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Test word wrap of data point label
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[1]/c:txPr/a:bodyPr"_ostr,
+ "wrap"_ostr, "none");
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[2]/c:txPr/a:bodyPr"_ostr,
+ "wrap"_ostr, "square");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf133191)
+{
+ loadFromFile(u"xlsx/tdf133190_tdf133191.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Test rotation of data point label
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[3]/c:txPr/a:bodyPr"_ostr,
+ "rot"_ostr, "-4500000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf132594)
+{
+ loadFromFile(u"xlsx/chart_pie2007.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:cat"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf134255)
+{
+ loadFromFile(u"docx/tdf134255.docx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // import test
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, UNO_QUERY_THROW);
+ bool bWrap = false;
+ CPPUNIT_ASSERT((xPropSet->getPropertyValue("TextWordWrap") >>= bWrap));
+ CPPUNIT_ASSERT(bWrap);
+
+ // FIXME: validation error in OOXML export: Errors: 11
+ skipValidation();
+
+ // export test
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:txPr/a:bodyPr"_ostr,
+ "wrap"_ostr, "square");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf134977)
+{
+ loadFromFile(u"xlsx/custom_data_label.xlsx");
+
+ //import test
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0),
+ uno::UNO_SET_THROW);
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+ float nFontSize;
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(9), nFontSize);
+
+ // FIXME: validation error in OOXML export: Errors: 2
+ skipValidation();
+
+ //export test
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl/c:tx/c:rich/a:p/"
+ "a:r/a:rPr"_ostr,
+ "sz"_ostr, "900");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf123647)
+{
+ loadFromFile(u"xlsx/empty_chart.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf136267)
+{
+ loadFromFile(u"xlsx/tdf136267.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 2
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPathContent(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:cat/c:strRef/c:strCache/c:pt/c:v"_ostr,
+ "John");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testDataLabelPlacementPieChart)
+{
+ loadFromFile(u"xlsx/tdf134978.xlsx");
+ saveAndReload("calc8");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ UNO_QUERY_THROW);
+ // test the placement of the manually positioned label
+ Reference<beans::XPropertySet> xDataPointPropSet(
+ xChartDoc->getDiagram()->getDataPointProperties(2, 0), uno::UNO_SET_THROW);
+ uno::Any aAny = xDataPointPropSet->getPropertyValue("LabelPlacement");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ sal_Int32 nLabelPlacement = 0;
+ CPPUNIT_ASSERT(aAny >>= nLabelPlacement);
+ CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::OUTSIDE, nLabelPlacement);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf137917)
+{
+ loadFromFile(u"xlsx/tdf137917.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:baseTimeUnit"_ostr,
+ "val"_ostr, "days");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:majorUnit"_ostr, "val"_ostr,
+ "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:majorTimeUnit"_ostr,
+ "val"_ostr, "months");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:minorUnit"_ostr, "val"_ostr,
+ "7");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dateAx/c:minorTimeUnit"_ostr,
+ "val"_ostr, "days");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf138204)
+{
+ loadFromFile(u"xlsx/tdf138204.xlsx");
+
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ struct CustomLabelsTestData
+ {
+ sal_Int32 nSeriesIdx;
+ sal_Int32 nNumFields;
+ // First field attributes.
+ chart2::DataPointCustomLabelFieldType eFieldType;
+ OUString aCellRange;
+ OUString aString;
+ };
+
+ const CustomLabelsTestData aTestEntries[2] = {
+ {
+ // series id of c:ser[1] is 0.
+ 0, // nSeriesIdx
+ 1, // nNumFields
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE,
+ "Munka1!$F$9", // aCellRange
+ "67,5%", // aString
+ },
+ {
+
+ // series id of c:ser[2] is 1.
+ 1, // nSeriesIdx
+ 1, // nNumFields
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE,
+ "Munka1!$G$9", // aCellRange
+ "32,3%", // aString
+ },
+ };
+
+ for (const auto& aTestEntry : aTestEntries)
+ {
+ uno::Reference<chart2::XDataSeries> xDataSeries(
+ getDataSeriesFromDoc(xChartDoc, aTestEntry.nSeriesIdx));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(aTestEntry.nNumFields, aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(aTestEntry.eFieldType, aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(aTestEntry.aCellRange, aFields[0]->getCellRange());
+ CPPUNIT_ASSERT_EQUAL(aTestEntry.aString, aFields[0]->getString());
+ }
+
+ // FIXME: validation error in OOXML export: Errors: 2
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Check the first data label field type
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls/c:dLbl/c:tx/c:rich/a:p/a:fld"_ostr,
+ "type"_ostr, "CELLRANGE");
+
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[2]/c:dLbls/c:dLbl/c:tx/c:rich/a:p/a:fld"_ostr,
+ "type"_ostr, "CELLRANGE");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf138181)
+{
+ loadFromFile(u"xlsx/piechart_deleted_legendentry.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xLegendEntry1, xLegendEntry2, xLegendEntry3;
+
+ // first legend entry is visible
+ xLegendEntry1
+ = getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0:LegendEntry=0");
+ CPPUNIT_ASSERT(xLegendEntry1.is());
+
+ // second legend entry is not visible
+ xLegendEntry2
+ = getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1:LegendEntry=0");
+ CPPUNIT_ASSERT(!xLegendEntry2.is());
+
+ // third legend entry is visible
+ xLegendEntry3
+ = getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2:LegendEntry=0");
+ CPPUNIT_ASSERT(xLegendEntry3.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testCustomShapeText)
+{
+ loadFromFile(u"ods/tdf72776.ods");
+ saveAndReload("calc8");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+ // test that the text of custom shape exists inside the chart
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xCustomShape.is());
+
+ Reference<text::XText> xRange(xCustomShape, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(!xRange->getString().isEmpty());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testuserShapesXLSX)
+{
+ loadFromFile(u"xlsx/tdf128621.xlsx");
+ saveAndReload("Calc Office Open XML");
+
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // test that the custom shape exists
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xCustomShape.is());
+ // test type of shape
+ CPPUNIT_ASSERT(xCustomShape->getShapeType().endsWith("CustomShape"));
+ // test custom shape position
+ awt::Point aPosition = xCustomShape->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1356, aPosition.X, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(9107, aPosition.Y, 300);
+ // test custom shape size
+ awt::Size aSize = xCustomShape->getSize();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(9520, aSize.Width, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1805, aSize.Height, 300);
+ // test custom shape text
+ Reference<text::XText> xRange(xCustomShape, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(!xRange->getString().isEmpty());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testuserShapesDOCX)
+{
+ loadFromFile(u"docx/tdf143130.docx");
+ saveAndReload("Office Open XML Text");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // test that the custom shape exists
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xCustomShape.is());
+ // test type of shape
+ CPPUNIT_ASSERT(xCustomShape->getShapeType().endsWith("CustomShape"));
+ // test custom shape position
+ awt::Point aPosition = xCustomShape->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(9824, aPosition.X, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(547, aPosition.Y, 300);
+ // test custom shape size
+ awt::Size aSize = xCustomShape->getSize();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1848, aSize.Width, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1003, aSize.Height, 300);
+ // test custom shape text
+ Reference<text::XText> xRange(xCustomShape, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(!xRange->getString().isEmpty());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testGraphicBlipXLSX)
+{
+ loadFromFile(u"xlsx/tdf143127.xlsx");
+ saveAndReload("Calc Office Open XML");
+
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // test that the Graphic shape exists
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xCustomShape.is());
+ // test type of shape
+ CPPUNIT_ASSERT(xCustomShape->getShapeType().endsWith("GraphicObjectShape"));
+ Reference<XPropertySet> xShapeProps(xCustomShape, UNO_QUERY);
+
+ uno::Reference<graphic::XGraphic> xGraphic;
+ CPPUNIT_ASSERT(xShapeProps->getPropertyValue("Graphic") >>= xGraphic);
+
+ Graphic aGraphic(xGraphic);
+ GfxLink aLink = aGraphic.GetGfxLink();
+ std::size_t nDataSize = aLink.GetDataSize();
+
+ // test the image size is bigger then 0.
+ CPPUNIT_ASSERT_GREATER(size_t(0), nDataSize);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testNameRangeXLSX)
+{
+ loadFromFile(u"xlsx/chart_with_name_range.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // test the syntax of local range name on the local sheet.
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:cat/c:strRef/c:f"_ostr,
+ "Sheet1!local_name_range");
+ // test the syntax of a global range name.
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:val/c:numRef/c:f"_ostr,
+ "[0]!series1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testTdf143942)
+{
+ loadFromFile(u"xlsx/tdf143942.xlsx");
+
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ constexpr size_t nLabels = 4;
+ OUString aCellRange = "Sheet1!$A$2:$A$5";
+ OUString aLabels[nLabels] = {
+ "Test1",
+ "Test2",
+ "Tes3",
+ "Test4",
+ };
+
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+ for (size_t i = 0; i < nLabels; ++i)
+ {
+ xPropertySet.set(xDataSeries->getDataPointByIndex(i), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aFields.getLength());
+ CPPUNIT_ASSERT_EQUAL(
+ chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE,
+ aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(aCellRange, aFields[0]->getCellRange());
+ CPPUNIT_ASSERT_EQUAL(aLabels[i], aFields[0]->getString());
+ }
+
+ // FIXME: validation error in OOXML export: Errors: 4
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:extLst/c:ext"_ostr,
+ "uri"_ostr, "{02D57815-91ED-43cb-92C2-25804820EDAC}");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:extLst/c:ext/"
+ "c15:datalabelsRange/c15:dlblRangeCache/c:ptCount"_ostr,
+ "val"_ostr, "4");
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:extLst/c:ext/"
+ "c15:datalabelsRange/c15:f"_ostr,
+ aCellRange);
+ for (size_t i = 0; i < nLabels; ++i)
+ {
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dLbls/c:dLbl["
+ + OString::number(i + 1) + "]/c:tx/c:rich/a:p/a:fld",
+ "type"_ostr, "CELLRANGE");
+ assertXPath(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:dLbls/c:dLbl["
+ + OString::number(i + 1) + "]/c:extLst/c:ext/c15:showDataLabelsRange",
+ "val"_ostr, "1");
+ // Check if the actual label is stored under c15:datalabelsRange
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser[1]/c:extLst/"
+ "c:ext/c15:datalabelsRange/c15:dlblRangeCache/c:pt["
+ + OString::number(i + 1) + "]/c:v",
+ aLabels[i]);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testDateCategoriesPPTX)
+{
+ loadFromFile(u"pptx/bnc889755.pptx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Impress Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ constexpr size_t nCats = 16;
+ double aDates[nCats] = {
+ 41183, 41214, 41244, 41275, 41306, 41334, 41365, 41395,
+ 41426, 41456, 41487, 41518, 41548, 41579, 41609, 41640,
+ };
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat"_ostr);
+ assertXPathContent(pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/c:numRef/"
+ "c:numCache/c:formatCode"_ostr,
+ "mmm\\-yy");
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/c:numRef/c:numCache/c:ptCount"_ostr,
+ "val"_ostr, OUString::number(nCats));
+
+ for (size_t i = 0; i < nCats; ++i)
+ {
+ assertXPath(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/c:numRef/c:numCache/c:pt["
+ + OString::number(i + 1) + "]",
+ "idx"_ostr, OUString::number(i));
+ assertXPathContent(
+ pXmlDoc,
+ "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:cat/c:numRef/c:numCache/c:pt["
+ + OString::number(i + 1) + "]/c:v",
+ OUString::number(aDates[i]));
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest2, testDataTableImportExport)
+{
+ loadFromFile(u"xlsx/ChartDataTable.xlsx");
+ {
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ auto xDiagram = xChartDoc->getFirstDiagram();
+ CPPUNIT_ASSERT(xDiagram.is());
+ auto xDataTable = xDiagram->getDataTable();
+ CPPUNIT_ASSERT(xDataTable.is());
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataTable, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropertySet.is());
+ bool bHBorder;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("HBorder") >>= bHBorder);
+ CPPUNIT_ASSERT_EQUAL(true, bHBorder);
+ bool bVBorder;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("VBorder") >>= bVBorder);
+ CPPUNIT_ASSERT_EQUAL(true, bVBorder);
+ bool bOutline;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Outline") >>= bOutline);
+ CPPUNIT_ASSERT_EQUAL(false, bOutline);
+ bool bKeys;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Keys") >>= bKeys);
+ CPPUNIT_ASSERT_EQUAL(false, bKeys);
+ }
+ saveAndReload("calc8");
+ {
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ auto xDiagram = xChartDoc->getFirstDiagram();
+ CPPUNIT_ASSERT(xDiagram.is());
+ auto xDataTable = xDiagram->getDataTable();
+ CPPUNIT_ASSERT(xDataTable.is());
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataTable, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropertySet.is());
+ bool bHBorder;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("HBorder") >>= bHBorder);
+ CPPUNIT_ASSERT_EQUAL(true, bHBorder);
+ bool bVBorder;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("VBorder") >>= bVBorder);
+ CPPUNIT_ASSERT_EQUAL(true, bVBorder);
+ bool bOutline;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Outline") >>= bOutline);
+ CPPUNIT_ASSERT_EQUAL(false, bOutline);
+ bool bKeys;
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Keys") >>= bKeys);
+ CPPUNIT_ASSERT_EQUAL(false, bKeys);
+ }
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2export3.cxx b/chart2/qa/extras/chart2export3.cxx
new file mode 100644
index 0000000000..838da77191
--- /dev/null
+++ b/chart2/qa/extras/chart2export3.cxx
@@ -0,0 +1,767 @@
+/* -*- 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/chart/ErrorBarStyle.hpp>
+#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
+#include <com/sun/star/chart2/MovingAverageType.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/chart2/DataPointLabel.hpp>
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+
+using uno::Reference;
+using beans::XPropertySet;
+
+class Chart2ExportTest3 : public ChartTest
+{
+public:
+ Chart2ExportTest3() : ChartTest("/chart2/qa/extras/data/") {}
+};
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTdf108107)
+{
+ loadFromFile(u"xlsx/tdf108107.xlsx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:idx"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:dLbl[1]/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "2000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTdf114139)
+{
+ loadFromFile(u"xlsx/tdf114139.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pie3DChart"_ostr, 1);
+ //no fill
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:solidFill"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTdf64224)
+{
+ loadFromFile(u"ods/tdf64224.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ //no fill
+ assertXPath(pXmlDoc, "/c:chartSpace/c:spPr/a:noFill"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:spPr/a:solidFill"_ostr, 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartTitlePropertiesColorFillDOCX)
+{
+ loadFromFile(u"docx/testChartTitlePropertiesColorFill.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartTitlePropertiesGradientFillDOCX)
+{
+ loadFromFile(u"docx/testChartTitlePropertiesGradientFill.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr"_ostr, "val"_ostr, "cccccc");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr"_ostr, "val"_ostr, "666666");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartTitlePropertiesBitmapFillDOCX)
+{
+ loadFromFile(u"docx/testChartTitlePropertiesBitmapFill.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:blipFill/a:blip"_ostr, "embed"_ostr, "rId1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testColorGradientWithTransparencyDOCX)
+{
+ // Test color gradient (two color) with gradient transparency
+ loadFromFile(u"docx/testColorGradientWithTransparency.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Test the transparency of the first color
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr/a:alpha"_ostr, "val"_ostr, "60000");
+ // Test the transparency of the second color
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr/a:alpha"_ostr, "val"_ostr, "90000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testColorGradientWithTransparencyODS)
+{
+ // Test color gradient (two color) with simple transparency
+ loadFromFile(u"ods/testColorGradientWithTransparency.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Test the transparency of the first color
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr/a:alpha"_ostr, "val"_ostr, "60000");
+ // Test the transparency of the second color
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr/a:alpha"_ostr, "val"_ostr, "60000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testColorGradientStopXLSX)
+{
+ // Test color gradient (two color) stop of the first color
+ loadFromFile(u"xlsx/tdf128619.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Test the position of the first color
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:spPr/a:gradFill/a:gsLst/a:gs[1]"_ostr, "pos"_ostr, "45000");
+ // Test the position of the second color
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:spPr/a:gradFill/a:gsLst/a:gs[2]"_ostr, "pos"_ostr, "100000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testRadialColorGradientDOCX)
+{
+ loadFromFile(u"docx/tdf128794.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Test the gradient style (if there is no 'a:path' attribute, it is a linear gradient)
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:path"_ostr, 0);
+ // Test the linear gradient angle
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill/a:lin"_ostr, "ang"_ostr, "13500000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testBarChartDataPointPropDOCX)
+{
+ loadFromFile(u"docx/testBarChartDataPointPropDOCX.docx");
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:varyColors"_ostr, "val"_ostr, "0");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:idx"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr"_ostr, "val"_ostr, "f6f8fc");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr"_ostr, "val"_ostr, "c7d5ed");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "70ad47");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:idx"_ostr, "val"_ostr, "2");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "000000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testFdo83058dlblPos)
+{
+ loadFromFile(u"docx/fdo83058_dlblPos.docx");
+
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ save("Office Open XML Text");
+ xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls[1]/c:dLbl[2]/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls[1]/c:dLbl[3]/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls[1]/c:dLbl[4]/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[1]/c:dLbls[1]/c:dLbl[5]/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testAutoTitleDelXLSX)
+{
+ loadFromFile(u"xlsx/autotitledel_2007.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:autoTitleDeleted"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testDispBlanksAsXLSX)
+{
+ loadFromFile(u"xlsx/dispBlanksAs_2007.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:dispBlanksAs"_ostr, "val"_ostr, "gap");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testMarkerColorXLSX)
+{
+ loadFromFile(u"xlsx/markerColor.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:marker/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "92d050");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testRoundedCornersXLSX)
+{
+ loadFromFile(u"xlsx/markerColor.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:roundedCorners"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testAxisNumberFormatXLSX)
+{
+ loadFromFile(u"ods/axis_number_format.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx"_ostr, 2);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:numFmt"_ostr, "formatCode"_ostr, "0.00E+000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:numFmt"_ostr, "sourceLinked"_ostr, "0");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:numFmt"_ostr, "formatCode"_ostr, "[$$-409]#,##0;\\-[$$-409]#,##0");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:numFmt"_ostr, "sourceLinked"_ostr, "1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testDataPointLabelNumberFormatXLSX)
+{
+ // FIXME: validation error in OOXML export: Errors: 1
+ skipValidation();
+
+ loadFromFile(u"ods/tdf123774.ods");
+ {
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:numFmt"_ostr, "formatCode"_ostr, "[$-40E]0.00%");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:numFmt"_ostr, "sourceLinked"_ostr, "0");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[1]/c:numFmt"_ostr, "formatCode"_ostr, "[$-40E]0.00%");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:dLbl[1]/c:numFmt"_ostr, "sourceLinked"_ostr, "0");
+ }
+
+ loadFromFile(u"xlsx/tdf130986.xlsx");
+ {
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl/c:idx"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl/c:numFmt"_ostr, "formatCode"_ostr, "0.00E+00");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLbl/c:numFmt"_ostr, "sourceLinked"_ostr, "0");
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testDataLabelDefaultValuesXLSX)
+{
+ loadFromFile(u"xlsx/data_label.xlsx");
+ Reference< chart2::XChartDocument> xDoc = getChartDocFromSheet(0, mxComponent);
+ Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xDoc, 0);
+ Reference<beans::XPropertySet> xPropSet(xSeries, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("Label");
+ chart2::DataPointLabel aLabel;
+ CPPUNIT_ASSERT(aAny >>= aLabel);
+ CPPUNIT_ASSERT(aLabel.ShowNumber);
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:showVal"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:dLblPos"_ostr, "val"_ostr, "outEnd");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testDataLabelFillColor)
+{
+ loadFromFile(u"xlsx/data_labels_fill_color.xlsx");
+ Reference< chart2::XChartDocument> xDoc = getChartDocFromSheet(0, mxComponent);
+ Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xDoc, 0);
+ Reference<beans::XPropertySet> xPropSet(xSeries, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("LabelFillColor");
+ sal_Int32 nLabelFillColor;
+ CPPUNIT_ASSERT(aAny >>= nLabelFillColor);
+
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dLbls/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "F79646");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTitleOverlayXLSX)
+{
+ loadFromFile(u"xlsx/chart_title.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:overlay"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testInvertIfNegativeXLSX)
+{
+ loadFromFile(u"xlsx/bar_chart_simple.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:invertIfNegative"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testBubble3DXLSX)
+{
+ loadFromFile(u"xlsx/bubble_chart_simple.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:bubbleChart/c:ser[1]/c:bubble3D"_ostr, "val"_ostr, "0");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:bubbleChart/c:ser[2]/c:bubble3D"_ostr, "val"_ostr, "0");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:bubbleChart/c:ser[3]/c:bubble3D"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testNoMarkerXLSX)
+{
+ loadFromFile(u"xlsx/no_marker.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser[1]/c:marker/c:symbol"_ostr, "val"_ostr, "none");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser[2]/c:marker/c:symbol"_ostr, "val"_ostr, "none");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:marker"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTitleManualLayoutXLSX)
+{
+ loadFromFile(u"xlsx/title_manual_layout.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:layoutTarget"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:xMode"_ostr, "val"_ostr, "edge");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:yMode"_ostr, "val"_ostr, "edge");
+
+ OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:x"_ostr, "val"_ostr);
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT(nX > 0);
+ CPPUNIT_ASSERT(nX < 1);
+
+ OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:y"_ostr, "val"_ostr);
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT(nY > 0);
+ CPPUNIT_ASSERT(nY < 1);
+ CPPUNIT_ASSERT(nX != nY);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:bodyPr"_ostr, "rot"_ostr, "1200000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testPlotAreaManualLayoutXLSX)
+{
+ loadFromFile(u"xlsx/plot_area_manual_layout.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:layoutTarget"_ostr, "val"_ostr, "inner");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:xMode"_ostr, "val"_ostr, "edge");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:yMode"_ostr, "val"_ostr, "edge");
+
+ OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:x"_ostr, "val"_ostr);
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT(nX > 0);
+ CPPUNIT_ASSERT(nX < 1);
+
+ OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:y"_ostr, "val"_ostr);
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT(nY > 0);
+ CPPUNIT_ASSERT(nY < 1);
+ CPPUNIT_ASSERT(nX != nY);
+
+ OUString aWVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:w"_ostr, "val"_ostr);
+ double nW = aWVal.toDouble();
+ CPPUNIT_ASSERT(nW > 0);
+ CPPUNIT_ASSERT(nW < 1);
+
+ OUString aHVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:h"_ostr, "val"_ostr);
+ double nH = aHVal.toDouble();
+ CPPUNIT_ASSERT(nH > 0);
+ CPPUNIT_ASSERT(nH < 1);
+ CPPUNIT_ASSERT(nH != nW);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testLegendManualLayoutXLSX)
+{
+ loadFromFile(u"xlsx/legend_manual_layout.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:layout/c:manualLayout/c:layoutTarget"_ostr, 0);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:xMode"_ostr, "val"_ostr, "edge");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:yMode"_ostr, "val"_ostr, "edge");
+
+ OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:x"_ostr, "val"_ostr);
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT(nX > 0);
+ CPPUNIT_ASSERT(nX < 1);
+
+ OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:y"_ostr, "val"_ostr);
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT(nY > 0);
+ CPPUNIT_ASSERT(nY < 1);
+ CPPUNIT_ASSERT(nX != nY);
+
+ OUString aWVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:w"_ostr, "val"_ostr);
+ double nW = aWVal.toDouble();
+ CPPUNIT_ASSERT(nW > 0);
+ CPPUNIT_ASSERT(nW < 1);
+
+ OUString aHVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:layout/c:manualLayout/c:h"_ostr, "val"_ostr);
+ double nH = aHVal.toDouble();
+ CPPUNIT_ASSERT(nH > 0);
+ CPPUNIT_ASSERT(nH < 1);
+ CPPUNIT_ASSERT(nH != nW);
+
+ // Make sure that default text font size is preserved after export
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:legend/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "900");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartSubTitle)
+{
+ loadFromFile(u"ods/testChartSubTitle.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // test properties of subtitle
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "1100");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "00a933");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:rPr/a:latin"_ostr, "typeface"_ostr, "Times New Roman");
+ assertXPathContent(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:t"_ostr, "It is a Subtitle");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "b2b2b2");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartMainWithSubTitle)
+{
+ loadFromFile(u"ods/testChartMainWithSubTitle.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // test properties of title
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "1300");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "0");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "i"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "f10d0c");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:rPr/a:latin"_ostr, "typeface"_ostr, "Arial");
+ assertXPathContent(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:t"_ostr, "It is a Maintitle\nIt is a Subtitle");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "81d41a");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testAutoTitleDeleted)
+{
+ loadFromFile(u"xlsx/testAutoTitleDeleted.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:autoTitleDeleted"_ostr, "val"_ostr, "1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartTitlePropertiesColorFillXLSX)
+{
+ loadFromFile(u"xlsx/testChartTitlePropertiesColorFill.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartTitlePropertiesGradientFillXLSX)
+{
+ loadFromFile(u"xlsx/testChartTitlePropertiesGradientFill.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr"_ostr, "val"_ostr, "cccccc");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr"_ostr, "val"_ostr, "666666");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testChartTitlePropertiesBitmapFillXLSX)
+{
+ loadFromFile(u"xlsx/testChartTitlePropertiesBitmapFill.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:blipFill/a:blip"_ostr, "embed"_ostr, "rId1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:spPr/a:ln/a:noFill"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testBarChartDataPointPropXLSX)
+{
+ loadFromFile(u"xlsx/testBarChartDataPointPropXLSX.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:varyColors"_ostr, "val"_ostr, "0");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:idx"_ostr, "val"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:spPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[1]/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "000000");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:idx"_ostr, "val"_ostr, "2");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:spPr/a:gradFill/a:gsLst/a:gs[1]/a:srgbClr"_ostr, "val"_ostr, "f6f8fc");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:spPr/a:gradFill/a:gsLst/a:gs[2]/a:srgbClr"_ostr, "val"_ostr, "c7d5ed");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:spPr/a:ln/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "70ad47");
+}
+
+namespace {
+
+void checkGapWidth(Reference<beans::XPropertySet> const & xPropSet, sal_Int32 nValue)
+{
+ uno::Any aAny = xPropSet->getPropertyValue("GapwidthSequence");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ uno::Sequence< sal_Int32 > aSequence;
+ aAny >>= aSequence;
+ CPPUNIT_ASSERT(aSequence.hasElements());
+ CPPUNIT_ASSERT_EQUAL(nValue, aSequence[0]);
+}
+
+void checkOverlap(Reference<beans::XPropertySet> const & xPropSet, sal_Int32 nValue)
+{
+ uno::Any aAny = xPropSet->getPropertyValue("OverlapSequence");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ uno::Sequence< sal_Int32 > aSequence;
+ aAny >>= aSequence;
+ CPPUNIT_ASSERT(aSequence.hasElements());
+ CPPUNIT_ASSERT_EQUAL(nValue, aSequence[0]);
+}
+
+void checkSheetForGapWidthAndOverlap(uno::Reference< chart2::XChartDocument > const & xChartDoc,
+ sal_Int32 nExpectedGapWidth, sal_Int32 nExpectedOverlap)
+{
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT(xChartType.is());
+
+ Reference< beans::XPropertySet > xPropSet( xChartType, uno::UNO_QUERY_THROW );
+ checkGapWidth(xPropSet, nExpectedGapWidth);
+ checkOverlap(xPropSet, nExpectedOverlap);
+
+}
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testDataseriesOverlapStackedChartXLSX)
+{
+ loadFromFile(u"xlsx/testDataseriesOverlapStackedChart.xlsx");
+
+ // test the overlap value of a simple Stacked Column Chart
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 100, 0);
+
+ // test the overlap value of a Percent Stacked Bar Chart
+ xChartDoc = getChartDocFromSheet( 1, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 100, 35);
+
+ saveAndReload("Calc Office Open XML");
+
+ xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 100, 100);
+
+ xChartDoc = getChartDocFromSheet( 1, mxComponent );
+ checkSheetForGapWidthAndOverlap(xChartDoc, 100, 100);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testAxisCharacterPropertiesXLSX)
+{
+ loadFromFile(u"xlsx/axis_character_properties.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "1000");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "i"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "u"_ostr, "sng");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "900");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "1");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:txPr/a:p/a:pPr/a:defRPr"_ostr, "strike"_ostr, "sngStrike");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:txPr/a:p/a:pPr/a:defRPr/a:solidFill/a:srgbClr"_ostr, "val"_ostr, "ff0000");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTitleCharacterPropertiesXLSX)
+{
+ loadFromFile(u"xlsx/title_character_properties.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "sz"_ostr, "2400");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:pPr/a:defRPr"_ostr, "b"_ostr, "1");
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:rPr"_ostr, "sz"_ostr, "2400");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:rPr"_ostr, "b"_ostr, "1");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testPlotVisOnlyXLSX)
+{
+ loadFromFile(u"xlsx/hidden_cells.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotVisOnly"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testBarChartVaryColorsXLSX)
+{
+ loadFromFile(u"xlsx/tdf90876.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:varyColors"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTdf96161)
+{
+ loadFromFile(u"ods/tdf96161.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:varyColors"_ostr, "val"_ostr, "0");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTableOnPage3)
+{
+ loadFromFile(u"docx/TableOnPage3.docx");
+
+ // FIXME: validation error in OOXML export: Errors: 2
+ skipValidation();
+
+ saveAndReload("Office Open XML Text");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference< chart::XChartDataArray > xDataArray(xChartDoc->getDataProvider(), UNO_QUERY_THROW);
+ Sequence<OUString> aColumnDesc = xDataArray->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("There must be 4 columns and descriptions", static_cast<sal_Int32>(4), aColumnDesc.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("If oversubscription relative to allowance increases at the same average rate B15-B17"), aColumnDesc[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Known requirements"), aColumnDesc[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Allowance"), aColumnDesc[2]);
+ CPPUNIT_ASSERT_EQUAL(OUString("If oversubscription relative to allowance holds steady at average oversubscription level B15-B17"), aColumnDesc[3]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, tdf137691)
+{
+ // given a doc where the banana negative data formats as ($123) and the pineapple data as $(123)
+ loadFromFile(u"pptx/tdf137691_dataTable.pptx");
+ saveAndReload("Impress MS PowerPoint 2007 XML");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+
+ Reference< chart2::data::XDataSequence > xDataSeq;
+ xDataSeq.set(getDataSequenceFromDocByRole(xChartDoc, u"values-y", 0));
+ const sal_Int32 nKey_bananas = xDataSeq->getNumberFormatKeyByIndex(-1);
+ // This should not be General format (0), but a defined format (129)
+ CPPUNIT_ASSERT(nKey_bananas);
+
+ xDataSeq.set(getDataSequenceFromDocByRole(xChartDoc, u"values-y", 1));
+ const sal_Int32 nKey_pineapples = xDataSeq->getNumberFormatKeyByIndex(-1);
+ // This should not be General format (0), but a defined format (130)
+ CPPUNIT_ASSERT(nKey_pineapples);
+ CPPUNIT_ASSERT(nKey_pineapples != nKey_bananas);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testMultipleAxisXLSX)
+{
+ loadFromFile(u"ods/multiple_axis.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart"_ostr, 2);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart[1]/c:ser"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:scatterChart[2]/c:ser"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx"_ostr, 4);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:delete[@val='1']"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:axPos[@val='l']"_ostr, 1);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx/c:axPos[@val='r']"_ostr, 1);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testSecondaryAxisXLSX)
+{
+ loadFromFile(u"ods/secondary_axis.ods");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart"_ostr, 2);
+ // test there is just those series in the first <lineChart> tag which are attached to the primary axis
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart[1]/c:ser"_ostr, 2);
+ assertXPathContent(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart[1]/c:ser[1]/c:tx/c:strRef/c:strCache/c:pt/c:v"_ostr, "b");
+ assertXPathContent(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart[1]/c:ser[2]/c:tx/c:strRef/c:strCache/c:pt/c:v"_ostr, "c");
+ // test there is just those series in the second <lineChart> tag which are attached to the secondary axis
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart[2]/c:ser"_ostr, 1);
+ assertXPathContent(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart[2]/c:ser[1]/c:tx/c:strRef/c:strCache/c:pt/c:v"_ostr, "a");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testBarChartSecondaryAxisXLSX)
+{
+ loadFromFile(u"xlsx/testSecondaryAxis.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ // Collect barchart axID on primary Axis
+ OUString XValueIdOf1Barchart = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart[1]/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueIdOf1Barchart = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart[1]/c:axId[2]"_ostr, "val"_ostr);
+ // Collect barchart axID on secondary Axis
+ OUString XValueIdOf2Barchart = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart[2]/c:axId[1]"_ostr, "val"_ostr);
+ OUString YValueIdOf2Barchart = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart[2]/c:axId[2]"_ostr, "val"_ostr);
+ // Check which c:catAx and c:valAx contain the AxisId of barcharts
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[1]/c:axId"_ostr, "val"_ostr, XValueIdOf1Barchart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:axId"_ostr, "val"_ostr, YValueIdOf1Barchart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:catAx[2]/c:axId"_ostr, "val"_ostr, XValueIdOf2Barchart);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:axId"_ostr, "val"_ostr, YValueIdOf2Barchart);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ExportTest3, testTdf148142)
+{
+ // The document contains a line chart with "Between tick marks" X axis position.
+ loadFromFile(u"ods/tdf148142.ods");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
+
+ // Set the X axis position to "On tick marks".
+ aScaleData.ShiftedCategoryPosition = false;
+ xAxis->setScaleData(aScaleData);
+
+ // Check the X axis position after export.
+ saveAndReload("calc8");
+ Reference<chart2::XChartDocument> xChartDoc2 = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc2.is());
+ Reference<chart2::XAxis> xAxis2 = getAxisFromDoc(xChartDoc2, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis2.is());
+ chart2::ScaleData aScaleData2 = xAxis2->getScaleData();
+ CPPUNIT_ASSERT(!aScaleData2.ShiftedCategoryPosition);
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2geometry.cxx b/chart2/qa/extras/chart2geometry.cxx
new file mode 100644
index 0000000000..c7de713df1
--- /dev/null
+++ b/chart2/qa/extras/chart2geometry.cxx
@@ -0,0 +1,493 @@
+/* -*- 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 <test/xmltesttools.hxx>
+
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/XDataSeries.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+
+#include <unotools/saveopt.hxx>
+
+#include <string_view>
+
+using uno::Reference;
+using beans::XPropertySet;
+
+class Chart2GeometryTest : public ChartTest
+{
+public:
+ Chart2GeometryTest()
+ : ChartTest("/chart2/qa/extras/data/")
+ {
+ }
+ // Mostly tests for line and fill properties
+ void testTdf135184RoundLineCap();
+ void testTdf135184RoundLineCap2();
+ void testTdf135184RoundLineCap3();
+ void testTdf135184RoundLineCap4();
+ void testTdf128345ChartArea_CG_TS_export();
+ void testTdf128345ChartArea_CG_TS_import();
+ void testTdf128345ChartWall_CS_TG_export();
+ void testTdf128345ChartWall_CS_TG_import();
+ void testTdf128345Legend_CS_TG_axial_export();
+ void testTdf128345Legend_CS_TG_axial_import();
+ void testTdf135366LabelOnSeries();
+ void testTdf135366LabelOnPoint();
+ void testTdf135366LabelExport();
+ void testTdf135366_CustomLabelText();
+
+ CPPUNIT_TEST_SUITE(Chart2GeometryTest);
+ CPPUNIT_TEST(testTdf135184RoundLineCap);
+ CPPUNIT_TEST(testTdf135184RoundLineCap2);
+ CPPUNIT_TEST(testTdf135184RoundLineCap3);
+ CPPUNIT_TEST(testTdf135184RoundLineCap4);
+ CPPUNIT_TEST(testTdf128345ChartArea_CG_TS_export);
+ CPPUNIT_TEST(testTdf128345ChartArea_CG_TS_import);
+ CPPUNIT_TEST(testTdf128345ChartWall_CS_TG_export);
+ CPPUNIT_TEST(testTdf128345ChartWall_CS_TG_import);
+ CPPUNIT_TEST(testTdf128345Legend_CS_TG_axial_export);
+ CPPUNIT_TEST(testTdf128345Legend_CS_TG_axial_import);
+ CPPUNIT_TEST(testTdf135366LabelOnSeries);
+ CPPUNIT_TEST(testTdf135366LabelOnPoint);
+ CPPUNIT_TEST(testTdf135366LabelExport);
+ CPPUNIT_TEST(testTdf135366_CustomLabelText);
+
+ CPPUNIT_TEST_SUITE_END();
+};
+
+static OString OU2O(std::u16string_view sOUSource)
+{
+ return rtl::OUStringToOString(sOUSource, RTL_TEXTENCODING_UTF8);
+}
+
+// Without the patch for tdf#135184, charts were not able to use linecap at all.
+// These two tests verify, that round linecaps in the xlsx file are saved in ods.
+void Chart2GeometryTest::testTdf135184RoundLineCap()
+{
+ // It tests chart area, data series line and regression-curve line.
+ loadFromFile(u"xlsx/tdf135184RoundLineCap.xlsx");
+ save("calc8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ static constexpr OString sStyleStart("/office:document-content/office:automatic-styles"_ostr);
+ static constexpr OString sCap("/style:graphic-properties[@svg:stroke-linecap='round']"_ostr);
+ static constexpr OString sChartStart(
+ "/office:document-content/office:body/office:chart/chart:chart"_ostr);
+ OString sPredicate;
+ // chart area
+ const OUString sOUAreaStyleName = getXPathContent(pXmlDoc, sChartStart + "/@chart:style-name");
+ sPredicate = "[@style:name='" + OU2O(sOUAreaStyleName) + "']";
+ assertXPath(pXmlDoc, sStyleStart + "/style:style" + sPredicate + sCap);
+ // data series line
+ const OString sSeries(sChartStart + "/chart:plot-area/chart:series");
+ const OUString sOUSeriesStyleName = getXPathContent(pXmlDoc, sSeries + "/@chart:style-name");
+ sPredicate = "[@style:name='" + OU2O(sOUSeriesStyleName) + "']";
+ assertXPath(pXmlDoc, sStyleStart + "/style:style" + sPredicate + sCap);
+ // regression-curve (trend line)
+ const OString sTrend(sChartStart + "/chart:plot-area/chart:series/chart:regression-curve");
+ const OUString sOUTrendStyleName = getXPathContent(pXmlDoc, sTrend + "/@chart:style-name");
+ sPredicate = "[@style:name='" + OU2O(sOUTrendStyleName) + "']";
+ assertXPath(pXmlDoc, sStyleStart + "/style:style" + sPredicate + sCap);
+}
+
+void Chart2GeometryTest::testTdf135184RoundLineCap2()
+{
+ // It tests legend, data series sector and title.
+ loadFromFile(u"xlsx/tdf135184RoundLineCap2.xlsx");
+ save("calc8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ static constexpr OString sStyleStart("/office:document-content/office:automatic-styles"_ostr);
+ static constexpr OString sCap("/style:graphic-properties[@svg:stroke-linecap='round']"_ostr);
+ static constexpr OString sChartStart(
+ "/office:document-content/office:body/office:chart/chart:chart"_ostr);
+ OString sPredicate;
+ // legend
+ const OString sLegend(sChartStart + "/chart:legend");
+ const OUString sOULegendStyleName = getXPathContent(pXmlDoc, sLegend + "/@chart:style-name");
+ sPredicate = "[@style:name='" + OU2O(sOULegendStyleName) + "']";
+ assertXPath(pXmlDoc, sStyleStart + "/style:style" + sPredicate + sCap);
+ // title
+ const OString sTitle(sChartStart + "/chart:title");
+ const OUString sOUTitleStyleName = getXPathContent(pXmlDoc, sTitle + "/@chart:style-name");
+ sPredicate = "[@style:name='" + OU2O(sOUTitleStyleName) + "']";
+ assertXPath(pXmlDoc, sStyleStart + "/style:style" + sPredicate + sCap);
+ // sector
+ const OString sSector(sChartStart + "/chart:plot-area/chart:series/chart:data-point[3]");
+ const OUString sOUSectorStyleName = getXPathContent(pXmlDoc, sSector + "/@chart:style-name");
+ sPredicate = "[@style:name='" + OU2O(sOUSectorStyleName) + "']";
+ assertXPath(pXmlDoc, sStyleStart + "/style:style" + sPredicate + sCap);
+}
+
+// These two tests verify the round-trip of preset dash styles in the xlsx file.
+void Chart2GeometryTest::testTdf135184RoundLineCap3()
+{
+ // It tests chart area, data series line and regression-curve line.
+ loadFromFile(u"xlsx/tdf135184RoundLineCap.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ static constexpr OString sDash("/c:spPr/a:ln/a:prstDash"_ostr);
+ // chart area
+ assertXPath(pXmlDoc, "/c:chartSpace" + sDash, "val"_ostr, "dashDot");
+ // data series line
+ static constexpr OString sStart("/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser"_ostr);
+ assertXPath(pXmlDoc, sStart + sDash, "val"_ostr, "dash");
+ // regression-curve (trendline)
+ assertXPath(pXmlDoc, sStart + "/c:trendline" + sDash, "val"_ostr, "sysDot");
+}
+
+void Chart2GeometryTest::testTdf135184RoundLineCap4()
+{
+ // It tests legend, data series sector and title.
+ loadFromFile(u"xlsx/tdf135184RoundLineCap2.xlsx");
+ save("Calc Office Open XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("xl/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ static constexpr OString sChartStart("/c:chartSpace/c:chart"_ostr);
+ static constexpr OString sDash("/c:spPr/a:ln/a:prstDash"_ostr);
+ assertXPath(pXmlDoc, sChartStart + "/c:legend" + sDash, "val"_ostr, "sysDot");
+ const OString sSeries(sChartStart + "/c:plotArea/c:pieChart/c:ser/c:dPt[3]");
+ assertXPath(pXmlDoc, sSeries + sDash, "val"_ostr, "dash");
+ assertXPath(pXmlDoc, sChartStart + "/c:title" + sDash, "val"_ostr, "dashDot");
+}
+
+void Chart2GeometryTest::testTdf128345ChartArea_CG_TS_export()
+{
+ // chart area with color gradient and solid transparency
+ // Without the patch the transparency was lost in saved pptx file.
+ loadFromFile(u"odp/tdf128345_ChartArea_CG_TS.odp");
+
+ // MCGR: Similar to testTdf128345Legend_CS_TG_axial_export:
+ // Checked that it works with the existing import file,
+ // but will change with ODF MCGR im/export again.
+ // Adapting for now, but need to re-check values after
+ // ODF im/export for MCGR is integrated
+
+ // Make sure the chart area has a transparency in gradient stops in saved pptx file.
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ OString sPathStart("//c:chartSpace/c:spPr/a:gradFill"_ostr);
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs", 2);
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[1]/a:srgbClr/a:alpha", "val"_ostr, "30000");
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[2]/a:srgbClr/a:alpha", "val"_ostr, "30000");
+}
+
+void Chart2GeometryTest::testTdf128345ChartArea_CG_TS_import()
+{
+ // This works on the file, which was exported from file tdf128345_ChartArea_CG_TS.odp to pptx.
+ // It has gradient stops with identical transparency values.
+ // Make sure chart area has transparency when pptx document is opened and resaved as odp.
+ // As of Aug 2020, the import generates a transparency gradient. When import is changed to
+ // generate solid transparency, the test needs to be adapted.
+
+ // MCGR: Similar to testTdf128345Legend_CS_TG_axial_export:
+ // Checked that it works with the existing import file,
+ // but will change with ODF MCGR im/export again. We will need to
+ // update the *.odp input file. Disable unclear values for now and
+ // adapt when ODF im/export for MCGR is integrated
+ loadFromFile(u"pptx/tdf128345_ChartArea_CG_TS.pptx");
+
+ // Find transparency gradient name
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ const OUString sOUChartStyleName = getXPathContent(
+ pXmlDoc,
+ "//office:document-content/office:body/office:chart/chart:chart/@chart:style-name"_ostr);
+ const OString sStylePath(
+ "//office:document-content/office:automatic-styles/style:style[@style:name='"
+ + OU2O(sOUChartStyleName) + "']");
+ assertXPath(pXmlDoc, sStylePath, 1);
+ assertXPath(pXmlDoc, sStylePath + "/style:graphic-properties/@draw:opacity-name", 1);
+ const OUString sOUOpacityName
+ = getXPathContent(pXmlDoc, sStylePath + "/style:graphic-properties/@draw:opacity-name");
+
+ // Verify the content of the opacity definition
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc2 = parseExport("Object 1/styles.xml");
+ CPPUNIT_ASSERT(pXmlDoc2);
+ const OString sAttribute("@draw:name='" + OU2O(sOUOpacityName) + "'");
+ const OString sStart("//office:document-styles/office:styles/draw:opacity[" + sAttribute);
+ assertXPath(pXmlDoc2, sStart + "]", 1);
+ assertXPath(pXmlDoc2, sStart + " and @draw:style='linear']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:start='30%']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:end='30%']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:angle='30deg']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:border='0%']"); // MCGR: no border anymore 20% -> 0%
+}
+
+void Chart2GeometryTest::testTdf128345ChartWall_CS_TG_export()
+{
+ // chart wall with solid color and transparency gradient
+ // Without the patch the transparency was lost.
+ loadFromFile(u"odp/tdf128345_ChartWall_CS_TG.odp");
+
+ // Make sure the chart has a gradient with transparency in gradient stops in saved pptx file.
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ OString sPathStart("//c:chartSpace/c:chart/c:plotArea/c:spPr/a:gradFill"_ostr);
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs", 2); //linear
+ // MS Office has opacity, so 100% transparency is val="0"
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[1]/a:srgbClr/a:alpha", "val"_ostr, "0");
+ // no element for 0% transparent
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[2]/a:srgbClr/a:alpha", 0);
+}
+
+void Chart2GeometryTest::testTdf128345ChartWall_CS_TG_import()
+{
+ // This works on the file, which was exported from file tdf128345_ChartWall_CS_TG.odp to pptx.
+ // Make sure chart wall has transparency when pptx document is resaved as odp.
+ loadFromFile(u"pptx/tdf128345_ChartWall_CS_TG.pptx");
+
+ // Find transparency gradient name
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ const OUString sOUChartStyleName
+ = getXPathContent(pXmlDoc, "//office:document-content/office:body/office:chart/chart:chart/"
+ "chart:plot-area/chart:wall/@chart:style-name"_ostr);
+ const OString sStylePath(
+ "//office:document-content/office:automatic-styles/style:style[@style:name='"
+ + OU2O(sOUChartStyleName) + "']");
+ assertXPath(pXmlDoc, sStylePath, 1);
+ assertXPath(pXmlDoc, sStylePath + "/style:graphic-properties/@draw:opacity-name", 1);
+ const OUString sOUOpacityName
+ = getXPathContent(pXmlDoc, sStylePath + "/style:graphic-properties/@draw:opacity-name");
+
+ // Verify content of the opacity definition
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc2 = parseExport("Object 1/styles.xml");
+ CPPUNIT_ASSERT(pXmlDoc2);
+ const OString sAttribute("@draw:name='" + OU2O(sOUOpacityName) + "'");
+ const OString sStart("//office:document-styles/office:styles/draw:opacity[" + sAttribute);
+ assertXPath(pXmlDoc2, sStart + "]", 1);
+ assertXPath(pXmlDoc2, sStart + " and @draw:style='linear']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:start='0%']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:end='100%']");
+}
+
+void Chart2GeometryTest::testTdf128345Legend_CS_TG_axial_export()
+{
+ // legend with solid color and transparency gradient
+ // Without the patch the transparency was lost.
+ loadFromFile(u"odp/tdf128345_Legend_CS_TG_axial.odp");
+
+ // Make sure the chart has a gradient with transparency in gradient stops in saved pptx file.
+ save("Impress MS PowerPoint 2007 XML");
+ xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ OString sPathStart("//c:chartSpace/c:chart/c:legend/c:spPr/a:gradFill"_ostr);
+
+ // MCGR: three entries due to axial being mirrored+expanded to linear
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs", 3);
+
+ // MCGR: start entry, no transparence, pos zero
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[1]/a:srgbClr/a:alpha", 0);
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[1]", "pos"_ostr, "0");
+
+ // MCGR: middle entry, 100% transparence, pos 0.5
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[2]/a:srgbClr/a:alpha", "val"_ostr, "0");
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[2]", "pos"_ostr, "50000");
+
+ // MCGR: end entry, no transparence, pos 1.0
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[3]/a:srgbClr/a:alpha", 0);
+ assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[3]", "pos"_ostr, "100000");
+}
+
+void Chart2GeometryTest::testTdf128345Legend_CS_TG_axial_import()
+{
+ // This works on the file, which was exported from file tdf128345_Legend_CS_TG_axial.odp to pptx.
+ // Error was, that in case of axial not the middle value was taken but start and end value.
+ loadFromFile(u"pptx/tdf128345_Legend_CS_TG_axial.pptx");
+
+ // Find transparency gradient name
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+ const OUString sOUChartStyleName
+ = getXPathContent(pXmlDoc, "//office:document-content/office:body/office:chart/chart:chart/"
+ "chart:legend/@chart:style-name"_ostr);
+ const OString sStylePath(
+ "//office:document-content/office:automatic-styles/style:style[@style:name='"
+ + OU2O(sOUChartStyleName) + "']");
+ assertXPath(pXmlDoc, sStylePath, 1);
+ assertXPath(pXmlDoc, sStylePath + "/style:graphic-properties/@draw:opacity-name", 1);
+ const OUString sOUOpacityName
+ = getXPathContent(pXmlDoc, sStylePath + "/style:graphic-properties/@draw:opacity-name");
+
+ // Verify content of the opacity definition
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc2 = parseExport("Object 1/styles.xml");
+ CPPUNIT_ASSERT(pXmlDoc2);
+ const OString sAttribute("@draw:name='" + OU2O(sOUOpacityName) + "'");
+ const OString sStart("//office:document-styles/office:styles/draw:opacity[" + sAttribute);
+ assertXPath(pXmlDoc2, sStart + "]", 1);
+ assertXPath(pXmlDoc2, sStart + " and @draw:style='axial']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:start='0%']");
+ assertXPath(pXmlDoc2, sStart + " and @draw:end='100%']");
+}
+
+void Chart2GeometryTest::testTdf135366LabelOnSeries()
+{
+ // Error was, that the fill and line properties of a <chart:data-label> were not
+ // imported at all. Here they should be at the series.
+ loadFromFile(u"ods/tdf135366_data_label_series.ods");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, UNO_QUERY_THROW);
+ uno::Any aAny;
+
+ aAny = xPropSet->getPropertyValue("LabelBorderStyle");
+ drawing::LineStyle eLineStyle;
+ CPPUNIT_ASSERT_MESSAGE("No LabelBorderStyle set.", aAny >>= eLineStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("solid line expected", drawing::LineStyle_SOLID, eLineStyle);
+
+ sal_Int32 nBorderWidth;
+ sal_Int32 nExpectedWidth = 95;
+ xPropSet->getPropertyValue("LabelBorderWidth") >>= nBorderWidth;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("LabelBorderWidth", nExpectedWidth, nBorderWidth);
+
+ sal_Int32 nLineColor;
+ sal_Int32 nExpectedLineColor = 255;
+ xPropSet->getPropertyValue("LabelBorderColor") >>= nLineColor;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("line color blue, 255=#0000FF", nExpectedLineColor, nLineColor);
+
+ aAny = xPropSet->getPropertyValue("LabelFillStyle");
+ drawing::FillStyle eFillStyle;
+ CPPUNIT_ASSERT_MESSAGE("No LabelFillStyle set", aAny >>= eFillStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("solid fill expected", drawing::FillStyle_SOLID, eFillStyle);
+
+ sal_Int32 nFillColor;
+ sal_Int32 nExpectedFillColor = 65280;
+ xPropSet->getPropertyValue("LabelFillColor") >>= nFillColor;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("fill color green, 65280=#00FF00", nExpectedFillColor, nFillColor);
+}
+
+void Chart2GeometryTest::testTdf135366LabelOnPoint()
+{
+ // Error was, that the fill and line properties of a <chart:data-label> were not
+ // imported at all. Here they should be at point 2.
+ loadFromFile(u"odt/tdf135366_data_label_point.odt");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropSet(xDataSeries->getDataPointByIndex(2),
+ uno::UNO_SET_THROW);
+ uno::Any aAny;
+
+ aAny = xPropSet->getPropertyValue("LabelBorderStyle");
+ drawing::LineStyle eLineStyle;
+ CPPUNIT_ASSERT_MESSAGE("No LabelBorderStyle set.", aAny >>= eLineStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("solid line expected", drawing::LineStyle_SOLID, eLineStyle);
+
+ sal_Int32 nBorderWidth;
+ sal_Int32 nExpectedWidth = 381;
+ xPropSet->getPropertyValue("LabelBorderWidth") >>= nBorderWidth;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("LabelBorderWidth", nExpectedWidth, nBorderWidth);
+
+ sal_Int32 nLineTransparency;
+ sal_Int32 nExpectedTransparency = 30;
+ xPropSet->getPropertyValue("LabelBorderTransparency") >>= nLineTransparency;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("line transparency", nExpectedTransparency, nLineTransparency);
+
+ sal_Int32 nLineColor;
+ sal_Int32 nExpectedLineColor = 10206041;
+ xPropSet->getPropertyValue("LabelBorderColor") >>= nLineColor;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("line color greenish, 10206041=#9BBB59", nExpectedLineColor,
+ nLineColor);
+
+ aAny = xPropSet->getPropertyValue("LabelFillStyle");
+ drawing::FillStyle eFillStyle;
+ CPPUNIT_ASSERT_MESSAGE("No LabelFillStyle set", aAny >>= eFillStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("solid fill expected", drawing::FillStyle_SOLID, eFillStyle);
+
+ sal_Int32 nFillColor;
+ sal_Int32 nExpectedFillColor = 14277081;
+ xPropSet->getPropertyValue("LabelFillColor") >>= nFillColor;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("fill color gray, 14277081=#d9d9d9", nExpectedFillColor,
+ nFillColor);
+}
+
+void Chart2GeometryTest::testTdf135366LabelExport()
+{
+ // Error was, that line and fill properties were not exported as
+ // graphic-properties of a <chart:data-label> element, but only
+ // as loext chart-properties of the <chart:data-point> element.
+ loadFromFile(u"odt/tdf135366_data_label_export.odt");
+
+ // FIXME: Error: unexpected attribute "loext:label-stroke-color"
+ skipValidation();
+
+ save("writer8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Find label style
+ const OUString sOULabelStyleName = getXPathContent(
+ pXmlDoc, "//office:document-content/office:body/office:chart/chart:chart/chart:plot-area"
+ "/chart:series/chart:data-point[1]/chart:data-label/@chart:style-name"_ostr);
+
+ // Verify content of graphic properties of label style
+ const OString sStylePath(
+ "//office:document-content/office:automatic-styles/style:style[@style:name='"
+ + OU2O(sOULabelStyleName) + "']/style:graphic-properties");
+ assertXPath(pXmlDoc, sStylePath, 1);
+ assertXPath(pXmlDoc, sStylePath + "[@draw:fill='solid']");
+ assertXPath(pXmlDoc, sStylePath + "[@draw:fill-color='#5050a0']");
+ assertXPath(pXmlDoc, sStylePath + "[@draw:stroke='solid']");
+ assertXPath(pXmlDoc, sStylePath + "[@svg:stroke-width='0.254cm']");
+ assertXPath(pXmlDoc, sStylePath + "[@svg:stroke-color='#00ffff']");
+}
+
+void Chart2GeometryTest::testTdf135366_CustomLabelText()
+{
+ // Error was, that custom text in a data label was only exported in ODF extended,
+ // although the used <chart:data-label> element exists since ODF 1.2.
+ const SvtSaveOptions::ODFDefaultVersion nCurrentODFVersion(GetODFDefaultVersion());
+ SetODFDefaultVersion(SvtSaveOptions::ODFVER_012);
+ loadFromFile(u"pptx/tdf135366_CustomLabelText.pptx");
+ save("impress8");
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/content.xml");
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ // Find custom text. As of version 7.0 it is in a <text:span> element.
+ static constexpr OString sCustomTextPath(
+ "//office:document-content/office:body/office:chart/chart:chart/chart:plot-area"
+ "/chart:series/chart:data-point[2]/chart:data-label/text:p/text:span"_ostr);
+ assertXPath(pXmlDoc, sCustomTextPath, 1);
+
+ // Verify text content
+ const OUString sOUTextContent = getXPathContent(pXmlDoc, sCustomTextPath);
+ CPPUNIT_ASSERT_EQUAL(OUString("Custom"), sOUTextContent);
+
+ SetODFDefaultVersion(nCurrentODFVersion);
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(Chart2GeometryTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
new file mode 100644
index 0000000000..f7324c9475
--- /dev/null
+++ b/chart2/qa/extras/chart2import.cxx
@@ -0,0 +1,2242 @@
+/* -*- 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/CurveStyle.hpp>
+#include <com/sun/star/chart2/DataPointLabel.hpp>
+#include <com/sun/star/chart2/XDataPointCustomLabelField.hpp>
+#include <com/sun/star/chart2/DataPointCustomLabelFieldType.hpp>
+#include <com/sun/star/chart/ErrorBarStyle.hpp>
+#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/chart2/XInternalDataProvider.hpp>
+#include <com/sun/star/chart/XChartDataArray.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/chart/XAxisXSupplier.hpp>
+#include <com/sun/star/chart/XAxisYSupplier.hpp>
+#include <com/sun/star/chart/MissingValueTreatment.hpp>
+#include <com/sun/star/chart2/TickmarkStyle.hpp>
+#include <com/sun/star/chart2/SymbolStyle.hpp>
+#include <com/sun/star/chart2/Symbol.hpp>
+#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <iterator>
+
+#include <com/sun/star/util/Color.hpp>
+#include <com/sun/star/awt/Gradient2.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <basegfx/utils/gradienttools.hxx>
+#include <docmodel/uno/UnoGradientTools.hxx>
+
+class Chart2ImportTest : public ChartTest
+{
+public:
+ Chart2ImportTest() : ChartTest("/chart2/qa/extras/data/") {}
+
+protected:
+ void testTransparentBackground(std::u16string_view filename);
+};
+
+// error bar import
+// split method up into smaller chunks for more detailed tests
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo60083)
+{
+ loadFromFile(u"ods/fdo60083.ods");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
+
+ // test that y error bars are there
+ Reference< beans::XPropertySet > xErrorBarYProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_Y) >>= xErrorBarYProps;
+ CPPUNIT_ASSERT(xErrorBarYProps.is());
+ {
+ sal_Int32 nErrorBarStyle;
+ CPPUNIT_ASSERT(
+ xErrorBarYProps->getPropertyValue("ErrorBarStyle")
+ >>= nErrorBarStyle);
+ CPPUNIT_ASSERT_EQUAL(
+ chart::ErrorBarStyle::RELATIVE,
+ nErrorBarStyle);
+
+ double nVal = 0.0;
+ CPPUNIT_ASSERT(
+ xErrorBarYProps->getPropertyValue("PositiveError") >>= nVal);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(5.0, nVal, 1e-8);
+
+ CPPUNIT_ASSERT(
+ xErrorBarYProps->getPropertyValue("NegativeError") >>= nVal);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(5.0, nVal, 1e-8);
+
+ bool bVal;
+ CPPUNIT_ASSERT(
+ xErrorBarYProps->getPropertyValue("ShowPositiveError") >>= bVal);
+ CPPUNIT_ASSERT_EQUAL(true, bVal);
+
+ CPPUNIT_ASSERT(
+ xErrorBarYProps->getPropertyValue("ShowNegativeError") >>= bVal);
+ CPPUNIT_ASSERT_EQUAL(true, bVal);
+ }
+
+ // test that x error bars are not imported
+ Reference< beans::XPropertySet > xErrorBarXProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_X) >>= xErrorBarXProps;
+ CPPUNIT_ASSERT(!xErrorBarXProps.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testErrorBarRange)
+{
+ loadFromFile(u"ods/error_bar_range.ods");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
+
+ // test that y error bars are there
+ Reference< beans::XPropertySet > xErrorBarYProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_Y) >>= xErrorBarYProps;
+ CPPUNIT_ASSERT(xErrorBarYProps.is());
+
+ sal_Int32 nErrorBarStyle;
+ CPPUNIT_ASSERT(
+ xErrorBarYProps->getPropertyValue("ErrorBarStyle")
+ >>= nErrorBarStyle);
+ CPPUNIT_ASSERT_EQUAL(
+ chart::ErrorBarStyle::FROM_DATA,
+ nErrorBarStyle);
+
+ OUString aRangePos;
+ CPPUNIT_ASSERT(xErrorBarYProps->getPropertyValue("ErrorBarRangePositive") >>= aRangePos);
+ CPPUNIT_ASSERT_EQUAL(OUString("$Sheet1.$C$2:$C$4"), aRangePos);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testErrorBarFormatting)
+{
+ loadFromFile(u"ods/error_bar_properties.ods");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT( xDataSeries.is() );
+
+ Reference< beans::XPropertySet > xPropSet( xDataSeries, UNO_QUERY_THROW );
+
+ // test that y error bars are there
+ Reference< beans::XPropertySet > xErrorBarYProps;
+ xPropSet->getPropertyValue(CHART_UNONAME_ERRORBAR_Y) >>= xErrorBarYProps;
+ CPPUNIT_ASSERT(xErrorBarYProps.is());
+
+ util::Color aColor(0);
+ xErrorBarYProps->getPropertyValue("LineColor") >>= aColor;
+ sal_uInt32 nColorValue = aColor;
+ CPPUNIT_ASSERT_EQUAL(sal_uInt32(0xff3333), nColorValue);
+}
+
+// stepped line interpolation
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSteppedLines)
+{
+ const sal_Int32 MAXSHEET = 14;
+ chart2::CurveStyle const curveStyle[] = {
+ chart2::CurveStyle_LINES,
+ chart2::CurveStyle_CUBIC_SPLINES,
+ chart2::CurveStyle_B_SPLINES,
+ chart2::CurveStyle_STEP_START,
+ chart2::CurveStyle_STEP_END,
+ chart2::CurveStyle_STEP_CENTER_X,
+ chart2::CurveStyle_STEP_CENTER_Y,
+ chart2::CurveStyle_LINES,
+ chart2::CurveStyle_CUBIC_SPLINES,
+ chart2::CurveStyle_B_SPLINES,
+ chart2::CurveStyle_STEP_START,
+ chart2::CurveStyle_STEP_END,
+ chart2::CurveStyle_STEP_CENTER_X,
+ chart2::CurveStyle_STEP_CENTER_Y
+ };
+
+ loadFromFile(u"ods/stepped_lines.ods");
+ for(sal_Int32 nSheet = 0; nSheet < MAXSHEET; ++nSheet)
+ {
+ uno::Reference< chart2::XChartDocument > xChart2Doc = getChartDocFromSheet( nSheet, mxComponent );
+ CPPUNIT_ASSERT(xChart2Doc.is());
+
+ Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChart2Doc, 0 );
+ CPPUNIT_ASSERT(xChartType.is());
+
+ Reference< beans::XPropertySet > xPropSet( xChartType, UNO_QUERY );
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ chart2::CurveStyle eCurveStyle;
+ xPropSet->getPropertyValue("CurveStyle") >>= eCurveStyle;
+ CPPUNIT_ASSERT_EQUAL(eCurveStyle, curveStyle[nSheet]);
+ }
+}
+
+static uno::Sequence < OUString > getChartColumnDescriptions( uno::Reference< chart::XChartDocument > const & xChart1Doc)
+{
+ CPPUNIT_ASSERT(xChart1Doc.is());
+ uno::Reference< chart::XChartDataArray > xChartData ( xChart1Doc->getData(), UNO_QUERY_THROW);
+ uno::Sequence < OUString > seriesList = xChartData->getColumnDescriptions();
+ return seriesList;
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testODSChartSeries)
+{
+ loadFromFile(u"ods/chart.ods");
+ uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ uno::Sequence < OUString > seriesList = getChartColumnDescriptions( xChart1Doc);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 33"), seriesList[2]);
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testXLSXChartSeries)
+{
+ loadFromFile(u"xlsx/chart.xlsx");
+ uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ uno::Sequence < OUString > seriesList = getChartColumnDescriptions(xChart1Doc );
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 33"), seriesList[2]);
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testXLSChartSeries)
+{
+ loadFromFile(u"xls/chart.xls");
+ uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ uno::Sequence < OUString > seriesList = getChartColumnDescriptions(xChart1Doc );
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Col 3"), seriesList[2]);
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testODTChartSeries)
+{
+ loadFromFile(u"odt/chart.odt");
+ uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCChartSeries)
+{
+ loadFromFile(u"doc/chart.doc");
+ uno::Sequence< OUString > seriesList = getWriterChartColumnDescriptions(mxComponent);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCXChartSeries)
+{
+ loadFromFile(u"docx/chart.docx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 1"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 2"), aLabels[1][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), aLabels[2][0].get<OUString>());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCXChartEmptySeries)
+{
+ loadFromFile(u"docx/tdf125337.docx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("1. dataseries"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("2. dataseries"), aLabels[1][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), aLabels[2][0].get<OUString>());
+
+ //test chart series sparse data for docx
+ std::vector<std::vector<double> > aValues = getDataSeriesYValuesFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aValues.size());
+ //test the second series values
+ CPPUNIT_ASSERT_EQUAL(2.4, aValues[1][0]);
+ CPPUNIT_ASSERT_EQUAL(4.4, aValues[1][1]);
+ //test the third series (empty) values
+ CPPUNIT_ASSERT(std::isnan(aValues[2][0]));
+ CPPUNIT_ASSERT(std::isnan(aValues[2][1]));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf81396)
+{
+ loadFromFile(u"xlsx/tdf81396.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<chart2::XChartDocument> xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType(getChartTypeFromDoc(xChartDoc2, 0), UNO_SET_THROW);
+ std::vector aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), aDataSeriesYValues.size());
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 105.210801910481
+ // - Actual : nan
+ CPPUNIT_ASSERT_EQUAL(105.210801910481, aDataSeriesYValues[0][0]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXChartErrorBars)
+{
+ loadFromFile(u"pptx/tdf127720.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference< chart::XChartDataArray > xDataArray(xChartDoc->getDataProvider(), UNO_QUERY_THROW);
+ Sequence<OUString> aColumnDesc = xDataArray->getColumnDescriptions();
+ // Number of columns = 4 (Y-values, X-values and positive/negative error bars).
+ // Without the fix there would only be 2 columns (no error range).
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("There must be 4 columns and descriptions", static_cast<sal_Int32>(4), aColumnDesc.getLength());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDOCXChartValuesSize)
+{
+ loadFromFile(u"docx/bubblechart.docx" );
+ Reference<chart2::XChartDocument> xChartDoc( getChartDocFromWriter(0), uno::UNO_QUERY );
+ CPPUNIT_ASSERT( xChartDoc.is() );
+
+ uno::Reference< chart::XChartDataArray > xDataArray( xChartDoc->getDataProvider(), UNO_QUERY_THROW );
+ Sequence<OUString> aColumnDesc = xDataArray->getColumnDescriptions();
+ // Number of columns = 3 (Y-values, X-values and bubble sizes).
+ // Without the fix there would only be 2 columns (no bubble sizes).
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "There must be 3 columns and descriptions", static_cast<sal_Int32>(3), aColumnDesc.getLength() );
+ Sequence<Sequence<double>> aData = xDataArray->getData();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "There must be exactly 3 data points", static_cast<sal_Int32>(3), aData.getLength() );
+
+ std::vector<std::vector<double>> aExpected = { { 2.7, 0.7, 10.0 }, { 3.2, 1.8, 4.0 }, { 0.8, 2.6, 8.0 } };
+
+ for ( sal_Int32 nRowIdx = 0; nRowIdx < 3; ++nRowIdx )
+ for( sal_Int32 nColIdx = 0; nColIdx < 3; ++nColIdx )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL( aExpected[nRowIdx][nColIdx], aData[nRowIdx][nColIdx], 1e-1 );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTChartSeries)
+{
+ //test chart series names for ppt
+ loadFromFile(u"ppt/chart.ppt");
+ uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions(0, 0);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXChartSeries)
+{
+ //test chart series names for pptx
+ loadFromFile(u"pptx/chart.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), aLabels[1][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), aLabels[2][0].get<OUString>());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXSparseChartSeries)
+{
+ //test chart series sparse data for pptx
+ loadFromFile(u"pptx/sparse-chart.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ std::vector<std::vector<double> > aValues = getDataSeriesYValuesFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(2), aValues.size());
+ CPPUNIT_ASSERT( std::isnan( aValues[0][0] ) );
+ CPPUNIT_ASSERT_EQUAL(2.5, aValues[0][1]);
+ CPPUNIT_ASSERT_EQUAL(3.5, aValues[0][2]);
+ CPPUNIT_ASSERT( std::isnan( aValues[0][3] ) );
+ CPPUNIT_ASSERT_EQUAL(-2.4, aValues[1][0]);
+ CPPUNIT_ASSERT( std::isnan( aValues[1][1] ) );
+ CPPUNIT_ASSERT( std::isnan( aValues[1][2] ) );
+ CPPUNIT_ASSERT_EQUAL(-2.8, aValues[1][3]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXHiddenDataSeries)
+{
+ /**
+ * Original data contains 3 series but 2 of them are hidden. For now, we
+ * detect and skip those hidden series on import (since we don't support
+ * hidden columns for internal data table yet).
+ */
+ loadFromFile(u"pptx/stacked-bar-chart-hidden-series.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // "Automatic" chart background fill in pptx should be loaded as no fill.
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::FillStyle eStyle = xPropSet->getPropertyValue("FillStyle").get<drawing::FillStyle>();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in pptx should be loaded as no fill (transparent).",
+ drawing::FillStyle_NONE, eStyle);
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ // There should be only one data series present.
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), aLabels.size());
+ CPPUNIT_ASSERT_EQUAL(OUString("Series 3"), aLabels[0][0].get<OUString>());
+
+ // Test the internal data.
+ CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+
+ Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xInternalProvider.is());
+
+ Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDescAccess.is());
+
+ // Get the category labels.
+ Sequence<Sequence<OUString> > aCategories = xDescAccess->getComplexRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aCategories.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("Category 1"), aCategories[0][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Category 2"), aCategories[1][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Category 3"), aCategories[2][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Category 4"), aCategories[3][0]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXPercentageNumberFormats)
+{
+ loadFromFile(u"pptx/percentage-number-formats.pptx");
+
+ // 1st chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ chart2::DataPointLabel aLabel;
+ sal_Int32 nNumberFormat;
+ const sal_Int32 nPercentFormatSimple = getNumberFormat(xChartDoc, "0%");
+ const sal_Int32 nPercentFormatDecimal = getNumberFormat(xChartDoc, "0.00%");
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nPercentFormatSimple, nNumberFormat);
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nPercentFormatDecimal, nNumberFormat);
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nPercentFormatSimple, nNumberFormat);
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(3), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nPercentFormatDecimal, nNumberFormat);
+
+ // 2nd chart
+ xChartDoc.set(getChartDocFromDrawImpress(1, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+
+ Reference<beans::XPropertySet> xPS(xYAxis, uno::UNO_QUERY_THROW);
+ bool bLinkNumberFormatToSource = true;
+ bool bSuccess = xPS->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", !bLinkNumberFormatToSource);
+
+ // FIXME: This should be in fact "0.00%".
+ // see TODO in oox/source/drawingml/chart/modelbase.cxx
+ const sal_Int32 nPercentFormatDecimalShort = getNumberFormat(xChartDoc, "0.0%");
+ nNumberFormat = getNumberFormatFromAxis(xYAxis);
+ CPPUNIT_ASSERT_EQUAL(nPercentFormatDecimalShort, nNumberFormat);
+ sal_Int16 nType = getNumberFormatType(xChartDoc, nNumberFormat);
+ CPPUNIT_ASSERT_MESSAGE("Y axis should be a percent format.", (nType & util::NumberFormat::PERCENT));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPieChartLabelsNumFormat)
+{
+ loadFromFile(u"xlsx/tdfPieNumFormat.xlsx");
+ uno::Reference< chart::XChartDocument > xChartDoc(getChartCompFromSheet(0, 0, mxComponent), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ // test data point labels format
+ Reference<beans::XPropertySet> xDataPointPropSet(xChartDoc->getDiagram()->getDataPointProperties(0, 0), uno::UNO_SET_THROW);
+ chart2::DataPointLabel aLabel;
+ xDataPointPropSet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumber);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPPTXStackedNonStackedYAxis)
+{
+ loadFromFile(u"pptx/stacked-non-stacked-mix-y-axis.pptx");
+
+ // 1st chart is a normal stacked column.
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ OUString aTitle = getTitleString(xTitled);
+ CPPUNIT_ASSERT_EQUAL(OUString("Stacked"), aTitle);
+
+ // Get the Y-axis.
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+
+ sal_Int32 nNumberFormat = getNumberFormatFromAxis(xYAxis);
+ sal_Int16 nType = getNumberFormatType(xChartDoc, nNumberFormat);
+ CPPUNIT_ASSERT_MESSAGE("Y axis should be a normal number format.", (nType & util::NumberFormat::NUMBER));
+ CPPUNIT_ASSERT_MESSAGE("Y axis should NOT be a percent format.", !(nType & util::NumberFormat::PERCENT));
+
+ // 2nd chart is a percent-stacked column.
+ xChartDoc.set(getChartDocFromDrawImpress(1, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ xTitled.set(xChartDoc, uno::UNO_QUERY_THROW);
+ aTitle = getTitleString(xTitled);
+ CPPUNIT_ASSERT_EQUAL(OUString("100% Stacked"), aTitle);
+
+ // Get the Y-axis.
+ xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+
+ // Get the number format of the Y-axis.
+ nNumberFormat = getNumberFormatFromAxis(xYAxis);
+ nType = getNumberFormatType(xChartDoc, nNumberFormat);
+ CPPUNIT_ASSERT_MESSAGE("Y axis should be a percent format.", (nType & util::NumberFormat::PERCENT));
+
+ // 3rd chart is a mixture of normal-stacked column with a percent-stacked
+ // area chart series. Excel in this case sets the Y-axis to be
+ // non-percent axis and we should do the same for interoperability.
+ xChartDoc.set(getChartDocFromDrawImpress(2, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ xTitled.set(xChartDoc, uno::UNO_QUERY_THROW);
+ aTitle = getTitleString(xTitled);
+ CPPUNIT_ASSERT_EQUAL(OUString("Stacked column mixed with 100% stacked area"), aTitle);
+
+ // Get the Y-axis.
+ xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+
+ // Get the number format of the Y-axis.
+ nNumberFormat = getNumberFormatFromAxis(xYAxis);
+ nType = getNumberFormatType(xChartDoc, nNumberFormat);
+ CPPUNIT_ASSERT_MESSAGE("Y axis should be a normal number format.", (nType & util::NumberFormat::NUMBER));
+ CPPUNIT_ASSERT_MESSAGE("Y axis should NOT be a percent format.", !(nType & util::NumberFormat::PERCENT));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testODPChartSeries)
+{
+ //test chart series names for odp
+ loadFromFile(u"odp/chart.odp");
+ uno::Sequence < OUString > seriesList = getImpressChartColumnDescriptions(0, 0);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 1"), seriesList[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 2"), seriesList[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Column 3"), seriesList[2]);
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc864396)
+{
+ loadFromFile(u"pptx/bnc864396.pptx");
+ uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0,0), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+
+ uno::Reference< chart2::XInternalDataProvider > xDataProvider( xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW );
+ uno::Reference< chart::XChartDataArray > xChartDataArray(xDataProvider, uno::UNO_QUERY_THROW);
+ uno::Sequence< OUString > aRowLabels = xChartDataArray->getRowDescriptions();
+ for(sal_Int32 i = 0; i < aRowLabels.getLength(); ++i)
+ {
+ OUString aExpected = "cat" + OUString::number(i+1);
+ CPPUNIT_ASSERT_EQUAL(aExpected, aRowLabels[i]);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc889755)
+{
+ loadFromFile(u"pptx/bnc889755.pptx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 5), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+
+ constexpr sal_Int32 nNumCategories = 16;
+ Sequence<OUString> aDateSeq = getFormattedDateCategories(xChartDoc);
+
+ CPPUNIT_ASSERT_EQUAL(nNumCategories, aDateSeq.getLength());
+
+ const OUString aExpectedDateCategories[nNumCategories] = {
+ "Oct-12", "Nov-12", "Dec-12", "Jan-13",
+ "Feb-13", "Mar-13", "Apr-13", "May-13",
+ "Jun-13", "Jul-13", "Aug-13", "Sep-13",
+ "Oct-13", "Nov-13", "Dec-13", "Jan-14",
+ };
+
+ for (size_t nIdx = 0; nIdx < nNumCategories; ++nIdx)
+ CPPUNIT_ASSERT_EQUAL(aExpectedDateCategories[nIdx], aDateSeq[nIdx]);
+
+ //tdf#139940 - the title's gradient was lost and was filled with solid blue, instead of a "blue underline".
+ uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW);
+
+ // Shape "Title 3"
+ // MCGR: Use the whole completely imported transparency gradient to check for correctness
+ uno::Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(4), uno::UNO_QUERY_THROW);
+ awt::Gradient2 aTransparence;
+ xShapeProps->getPropertyValue("FillTransparenceGradient") >>= aTransparence;
+ const basegfx::BColorStops aColorStops = model::gradient::getColorStopsFromUno(aTransparence.ColorStops);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
+ CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
+ CPPUNIT_ASSERT_EQUAL(Color(0x404040), Color(aColorStops[0].getStopColor()));
+ CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.070000000000000007));
+ CPPUNIT_ASSERT_EQUAL(Color(0x404040), Color(aColorStops[1].getStopColor()));
+ CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 0.080000000000000002));
+ CPPUNIT_ASSERT_EQUAL(Color(0xffffff), Color(aColorStops[2].getStopColor()));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc882383)
+{
+ loadFromFile(u"pptx/bnc882383.pptx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY_THROW);
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ OUString sGradientName;
+ xPropertySet->getPropertyValue("GradientName") >>= sGradientName;
+ CPPUNIT_ASSERT(!sGradientName.isEmpty());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTransparencyGradientValue)
+{
+ loadFromFile(u"xlsx/tdf128732.xlsx");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ OUString sTranspGradientName;
+ xPropertySet->getPropertyValue("FillTransparenceGradientName") >>= sTranspGradientName;
+ CPPUNIT_ASSERT(!sTranspGradientName.isEmpty());
+
+ awt::Gradient2 aTransparenceGradient;
+ uno::Reference< lang::XMultiServiceFactory > xFact(xChartDoc, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xFact.is());
+ uno::Reference< container::XNameAccess > xTransparenceGradient(xFact->createInstance("com.sun.star.drawing.TransparencyGradientTable"), uno::UNO_QUERY);
+ uno::Any rTransparenceValue = xTransparenceGradient->getByName(sTranspGradientName);
+ CPPUNIT_ASSERT(rTransparenceValue >>= aTransparenceGradient);
+ const basegfx::BColorStops aColorStops = model::gradient::getColorStopsFromUno(aTransparenceGradient.ColorStops);
+
+ // MCGR: Use the whole completely imported transparency gradient to check for correctness
+ CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
+ CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
+ CPPUNIT_ASSERT_EQUAL(Color(0x4d4d4d), Color(aColorStops[0].getStopColor()));
+ CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
+ CPPUNIT_ASSERT_EQUAL(Color(0x333333), Color(aColorStops[1].getStopColor()));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSimpleStrictXLSX)
+{
+ loadFromFile(u"xlsx/strict_chart.xlsx");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XDataSeries > xDataSeries = getDataSeriesFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDelayedCellImport)
+{
+ // chart range referencing content on later sheets
+ loadFromFile(u"xlsx/fdo70609.xlsx");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
+ Reference< chart2::data::XDataSequence > xDataSeq =
+ getDataSequenceFromDocByRole(xChartDoc, u"values-x");
+
+ OUString aRange = xDataSeq->getSourceRangeRepresentation();
+ CPPUNIT_ASSERT_EQUAL(OUString("$Sheet2.$C$5:$C$9"), aRange);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFlatODSStackedColumnChart)
+{
+ loadFromFile(u"fods/stacked-column-chart.fods");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xChartType.is());
+
+ Reference<chart2::XDataSeriesContainer> xDSCont(xChartType, UNO_QUERY);
+ CPPUNIT_ASSERT(xDSCont.is());
+ Sequence<Reference<chart2::XDataSeries> > aSeriesSeq = xDSCont->getDataSeries();
+
+ // The stacked column chart should consist of 5 data series.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aSeriesSeq.getLength());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo78080)
+{
+ loadFromFile(u"xlsx/fdo78080.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(!xTitle.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf127811)
+{
+ loadFromFile(u"pptx/tdf127811.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XChartType> xCT = getChartTypeFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xCT.is());
+
+ std::vector<uno::Sequence<uno::Any> > aLabels = getDataSeriesLabelsFromChartType(xCT);
+ CPPUNIT_ASSERT_EQUAL(size_t(2), aLabels.size());
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 1. first
+ // - Actual : 2. second
+ CPPUNIT_ASSERT_EQUAL(OUString("1. first"), aLabels[0][0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("2. second"), aLabels[1][0].get<OUString>());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf86624)
+{
+ // manually placed legends
+ loadFromFile(u"ods/tdf86624.ods");
+ uno::Reference< chart2::XChartDocument > xChart2Doc = getChartDocFromSheet(0, mxComponent);
+ uno::Reference< chart::XChartDocument > xChartDoc (xChart2Doc, uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xLegend = xChartDoc->getLegend();
+ awt::Point aPos = xLegend->getPosition();
+ CPPUNIT_ASSERT(aPos.X > 5000); // real value for me is above 8000 but before bug fix is below 1000
+ CPPUNIT_ASSERT(aPos.Y > 4000); // real value for ms is above 7000
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf105517)
+{
+ loadFromFile(u"pptx/tdf105517.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XCoordinateSystemContainer> xCoordContainer(xChartDoc->getFirstDiagram(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xCoordContainer.is());
+ Reference<chart2::XChartTypeContainer> xChartTypeContainer(xCoordContainer->getCoordinateSystems()[0], uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartTypeContainer.is());
+ Reference<chart2::XDataSeriesContainer> xDSContainer(xChartTypeContainer->getChartTypes()[0], uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDSContainer.is());
+ Reference<beans::XPropertySet> xPropSet1(xDSContainer->getDataSeries()[0], uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropSet1.is());
+
+ tools::Long lineColor;
+ xPropSet1->getPropertyValue("Color") >>= lineColor;
+ // incorrect line color was 0x4a7ebb due to not handling themeOverride
+ CPPUNIT_ASSERT_EQUAL(tools::Long(0xeaa700), lineColor);
+
+ Reference<beans::XPropertySet> xPropSet2(xDSContainer->getDataSeries()[1], uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPropSet2.is());
+
+ xPropSet2->getPropertyValue("Color") >>= lineColor;
+ // incorrect line color was 0x98b855
+ CPPUNIT_ASSERT_EQUAL(tools::Long(0x1e69a8), lineColor);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf106217)
+{
+ loadFromFile(u"pptx/tdf106217.pptx");
+ uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromDrawImpress(0, 0);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShape> xCircle(xDrawPage->getByIndex(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xCircle.is());
+
+ uno::Reference<container::XNamed> xNamedShape(xCircle, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Oval 1"), xNamedShape->getName());
+
+ awt::Point aPosition = xCircle->getPosition();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6870), aPosition.X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(7261), aPosition.Y);
+ awt::Size aSize = xCircle->getSize();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2701), aSize.Width);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2700), aSize.Height);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf108021)
+{
+ // Tdf108021 : To check TextBreak value is true.
+ loadFromFile(u"ods/tdf108021.ods");
+ uno::Reference< chart::XDiagram > mxDiagram;
+ uno::Reference< beans::XPropertySet > xAxisProp;
+ bool bTextBreak = false;
+ uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ mxDiagram.set(xChartDoc->getDiagram());
+ CPPUNIT_ASSERT(mxDiagram.is());
+ uno::Reference< chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xAxisXSupp.is());
+ xAxisProp = xAxisXSupp->getXAxis();
+ xAxisProp->getPropertyValue("TextBreak") >>= bTextBreak;
+ // Expected value of 'TextBreak' is true
+ CPPUNIT_ASSERT(bTextBreak);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf100084)
+{
+ // The test file was created with IBM Cognos, make sure there is a diagram.
+ loadFromFile(u"xlsx/tdf100084.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<beans::XPropertySet> xDiagram(xChartDoc->getFirstDiagram(), UNO_QUERY);
+ CPPUNIT_ASSERT_MESSAGE("There should be a Diagram.", xDiagram.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf124817)
+{
+ loadFromFile(u"xlsx/tdf124817.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries;
+ chart2::Symbol aSymblProp;
+
+ // Check the symbol of data series 1 (marker style none)
+ xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropSet_0(xDataSeries, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT((xPropSet_0->getPropertyValue("Symbol") >>= aSymblProp));
+ CPPUNIT_ASSERT_EQUAL(chart2::SymbolStyle_NONE, aSymblProp.Style);
+
+ // Check the symbol of data series 2 (marker style square)
+ xDataSeries = getDataSeriesFromDoc(xChartDoc, 1);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropSet_1(xDataSeries, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT((xPropSet_1->getPropertyValue("Symbol") >>= aSymblProp));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xED7D31), aSymblProp.FillColor);
+
+ // Check the symbol of data series 3 (marker style diagonal cross)
+ xDataSeries = getDataSeriesFromDoc(xChartDoc, 2);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropSet_2(xDataSeries, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT((xPropSet_2->getPropertyValue("Symbol") >>= aSymblProp));
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xFF0000), aSymblProp.BorderColor);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf126033)
+{
+ loadFromFile(u"xlsx/tdf126033.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ // Check symbol style and size of data points
+ chart2::Symbol aSymblProp;
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ CPPUNIT_ASSERT(xPropertySet->getPropertyValue("Symbol") >>= aSymblProp);
+ CPPUNIT_ASSERT_EQUAL(chart2::SymbolStyle_NONE, aSymblProp.Style);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(176), aSymblProp.Size.Width);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(176), aSymblProp.Size.Height);
+}
+
+void Chart2ImportTest::testTransparentBackground(std::u16string_view filename)
+{
+ loadFromFile(filename);
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ uno::Reference< chart::XChartDocument > xChart2Doc (xChartDoc, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChart2Doc.is());
+
+ Reference< beans::XPropertySet > xPropSet = xChart2Doc->getArea();
+ CPPUNIT_ASSERT_MESSAGE("failed to get Area", xPropSet.is());
+
+ css::drawing::FillStyle aStyle;
+ xPropSet -> getPropertyValue("FillStyle") >>= aStyle;
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Background needs to be with solid fill style", css::drawing::FillStyle_SOLID, aStyle);
+}
+
+// 2 test methods here so that tearDown() can dispose the document
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo54361)
+{
+ testTransparentBackground(u"xlsx/fdo54361.xlsx");
+}
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFdo54361_1)
+{
+ testTransparentBackground(u"xlsx/fdo54361-1.xlsx");
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoBackgroundXLSX)
+{
+ loadFromFile(u"xlsx/chart-auto-background.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ // "Automatic" chart background fill in xlsx should be loaded as solid white.
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::FillStyle eStyle = xPropSet->getPropertyValue("FillStyle").get<drawing::FillStyle>();
+ sal_Int32 nColor = xPropSet->getPropertyValue("FillColor").get<sal_Int32>();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in xlsx should be loaded as solid fill.",
+ drawing::FillStyle_SOLID, eStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in xlsx should be loaded as solid white.",
+ sal_Int32(0x00FFFFFF), sal_Int32(nColor & 0x00FFFFFF)); // highest 2 bytes are transparency which we ignore here.
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoChartAreaBorderPropXLSX)
+{
+ loadFromFile(u"xlsx/chart-area-style-border.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ // Test "Automatic" chartarea border style/color/width.
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::LineStyle eStyle = xPropSet->getPropertyValue("LineStyle").get<drawing::LineStyle>();
+ sal_Int32 nColor = xPropSet->getPropertyValue("LineColor").get<sal_Int32>();
+ sal_Int32 nWidth = xPropSet->getPropertyValue("LineWidth").get<sal_Int32>();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chartarea border should be loaded as solid style.",
+ drawing::LineStyle_SOLID, eStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chartarea border color should be loaded as light gray.",
+ sal_Int32(0xD9D9D9), nColor);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chartarea border width should be loaded as 0.75 pt (~0.026 cm)",
+ sal_Int32(26), nWidth);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoChartAreaBorderPropPPTX)
+{
+ loadFromFile(u"pptx/tdf150176.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ // Test "Automatic" chartarea border style/color/width.
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::LineStyle eStyle = xPropSet->getPropertyValue("LineStyle").get<drawing::LineStyle>();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chartarea border should be loaded as none style for pptx.",
+ drawing::LineStyle_NONE, eStyle);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testChartAreaStyleBackgroundXLSX)
+{
+ loadFromFile(u"xlsx/chart-area-style-background.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ // "Automatic" chart background fill in xlsx should be loaded as solid white.
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::FillStyle eStyle = xPropSet->getPropertyValue("FillStyle").get<drawing::FillStyle>();
+ sal_Int32 nColor = xPropSet->getPropertyValue("FillColor").get<sal_Int32>();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in xlsx should be loaded as solid fill.",
+ drawing::FillStyle_SOLID, eStyle);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("'Automatic' chart background fill in xlsx should be loaded as solid white.",
+ sal_Int32(0), nColor);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testChartHatchFillXLSX)
+{
+ loadFromFile(u"xlsx/chart-hatch-fill.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ // Check the chart background FillStyle is HATCH
+ Reference<beans::XPropertySet> xPropSet = xChartDoc->getPageBackground();
+ CPPUNIT_ASSERT(xPropSet.is());
+ drawing::FillStyle eStyle = xPropSet->getPropertyValue("FillStyle").get<drawing::FillStyle>();
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Chart background fill in this xlsx should be loaded as hatch fill.",
+ drawing::FillStyle_HATCH, eStyle);
+
+ // Check the FillBackground of chart background
+ bool bBackgroundFill = false;
+ xPropSet->getPropertyValue("FillBackground") >>= bBackgroundFill;
+ CPPUNIT_ASSERT(bBackgroundFill);
+
+ Color nBackgroundColor;
+ xPropSet->getPropertyValue("FillColor") >>= nBackgroundColor;
+ CPPUNIT_ASSERT_EQUAL(COL_WHITE, nBackgroundColor);
+
+ // Check the datapoint has HatchName value
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
+ OUString sHatchName;
+ xPropertySet->getPropertyValue("HatchName") >>= sHatchName;
+ CPPUNIT_ASSERT(!sHatchName.isEmpty());
+
+ // Check the FillBackground of datapoint
+ bool bBackgroundFillofDatapoint = false;
+ xPropertySet->getPropertyValue("FillBackground") >>= bBackgroundFillofDatapoint;
+ CPPUNIT_ASSERT(bBackgroundFillofDatapoint);
+
+ sal_Int32 nBackgroundColorofDatapoint;
+ xPropertySet->getPropertyValue("FillColor") >>= nBackgroundColorofDatapoint;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0x00B050), nBackgroundColorofDatapoint);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTextRotationXLSX)
+{
+ loadFromFile(u"xlsx/axis-label-rotation.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+
+ Reference<beans::XPropertySet> xPS(xYAxis, uno::UNO_QUERY_THROW);
+ double nRotation = 0;
+ bool bSuccess = xPS->getPropertyValue("TextRotation") >>= nRotation;
+
+ CPPUNIT_ASSERT(bSuccess);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(90, nRotation, 1e-10);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTextCanOverlapXLSX)
+{
+ // fdo#84647 : To check textoverlap value is imported correctly.
+ loadFromFile(u"xlsx/chart-text-can-overlap.xlsx");
+ uno::Reference< chart::XDiagram > mxDiagram;
+ uno::Reference< beans::XPropertySet > xAxisProp;
+ bool bTextCanOverlap = false;
+ uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ mxDiagram.set(xChartDoc->getDiagram());
+ CPPUNIT_ASSERT(mxDiagram.is());
+ uno::Reference< chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xAxisXSupp.is());
+ xAxisProp = xAxisXSupp->getXAxis();
+ xAxisProp->getPropertyValue("TextCanOverlap") >>= bTextCanOverlap;
+ CPPUNIT_ASSERT(!bTextCanOverlap);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTextBreakXLSX)
+{
+ // tdf#122091: To check textbreak value is true in case of 0° degree of Axis label rotation.
+ loadFromFile(u"xlsx/chart_label_text_break.xlsx");
+ uno::Reference< chart::XDiagram > mxDiagram;
+ uno::Reference< beans::XPropertySet > xAxisProp;
+ bool textBreak = false;
+ uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ mxDiagram.set(xChartDoc->getDiagram());
+ CPPUNIT_ASSERT(mxDiagram.is());
+ uno::Reference< chart::XAxisXSupplier > xAxisXSupp( mxDiagram, uno::UNO_QUERY );
+ CPPUNIT_ASSERT(xAxisXSupp.is());
+ xAxisProp = xAxisXSupp->getXAxis();
+ xAxisProp->getPropertyValue("TextBreak") >>= textBreak;
+ // Expected value of 'TextBreak' is true
+ CPPUNIT_ASSERT(textBreak);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testNumberFormatsXLSX)
+{
+ loadFromFile(u"xlsx/number-formats.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ chart2::DataPointLabel aLabel;
+ sal_Int32 nNumberFormat;
+ bool bLinkNumberFormatToSource = false;
+ const sal_Int32 nChartDataNumberFormat = getNumberFormat(
+ xChartDoc, "_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"??_);_(@_)");
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nChartDataNumberFormat, nNumberFormat);
+ bool bSuccess = xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(false, bSuccess);
+ bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource);
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nChartDataNumberFormat, nNumberFormat);
+ bSuccess = xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(false, bSuccess);
+ bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource);
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ xPropertySet->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nChartDataNumberFormat, nNumberFormat);
+ bSuccess = xPropertySet->getPropertyValue("PercentageNumberFormat") >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(false, bSuccess);
+ bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testNumberFormatsDOCX)
+{
+ loadFromFile(u"docx/tdf132174.docx");
+ {
+ uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+
+ sal_Int32 nNumberFormat;
+ bool bLinkNumberFormatToSource = true;
+ const sal_Int32 nChartDataNumberFormat = getNumberFormat(xChartDoc, "0%");
+ xPropertySet->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nChartDataNumberFormat, nNumberFormat);
+ xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ // LinkNumberFormatToSource should be set to false even if the original OOXML contain a true value,
+ // because the inner data table of charts have no own number format!
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", !bLinkNumberFormatToSource);
+ }
+
+ loadFromFile(u"docx/tdf136650.docx");
+ {
+ uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
+
+ sal_Int32 nNumberFormat;
+ bool bLinkNumberFormatToSource = true;
+ const sal_Int32 nChartDataNumberFormat = getNumberFormat(xChartDoc, "0%");
+ xPropertySet->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormat;
+ CPPUNIT_ASSERT_EQUAL(nChartDataNumberFormat, nNumberFormat);
+ xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ // LinkNumberFormatToSource should be set to false even if the original OOXML file contain a true value,
+ // because the inner data table of charts have no own number format!
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to false.", !bLinkNumberFormatToSource);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPercentageNumberFormatsDOCX)
+{
+ loadFromFile(u"docx/tdf133632.docx");
+ uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+
+ bool bLinkNumberFormatToSource = false;
+ chart2::DataPointLabel aLabel;
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(sal_False, aLabel.ShowNumber);
+ CPPUNIT_ASSERT_EQUAL(sal_True, aLabel.ShowNumberInPercent);
+ bool bSuccess = xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkNumberFormatToSource;
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to true.", bLinkNumberFormatToSource);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoTitleDelDefaultValue2007XLSX)
+{
+ // below are OOXML default value tests for cases
+ // where we fixed the handling of MSO 2007 vs OOXML
+ loadFromFile(u"xlsx/autotitledel_2007.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ OUString aTitle = getTitleString(xTitled);
+ CPPUNIT_ASSERT_MESSAGE("autoTitleDel default value is false in MSO 2007 documents",
+ !aTitle.isEmpty());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutoTitleDelDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/autotitledel_2013.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT_MESSAGE("autoTitleDel default value is true in the OOXML spec",
+ !xTitle.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDispBlanksAsDefaultValue2007XLSX)
+{
+ loadFromFile(u"xlsx/dispBlanksAs_2007.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<beans::XPropertySet> xDiagram(xChartDoc->getFirstDiagram(), UNO_QUERY);
+ CPPUNIT_ASSERT(xDiagram.is());
+ uno::Any aAny = xDiagram->getPropertyValue("MissingValueTreatment");
+ sal_Int32 nMissingValueTreatment = -2;
+ CPPUNIT_ASSERT(aAny >>= nMissingValueTreatment);
+ CPPUNIT_ASSERT_EQUAL(chart::MissingValueTreatment::LEAVE_GAP, nMissingValueTreatment);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testDispBlanksAsDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/dispBlanksAs_2013.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<beans::XPropertySet> xDiagram(xChartDoc->getFirstDiagram(), UNO_QUERY);
+ CPPUNIT_ASSERT(xDiagram.is());
+ uno::Any aAny = xDiagram->getPropertyValue("MissingValueTreatment");
+ sal_Int32 nMissingValueTreatment = -2;
+ CPPUNIT_ASSERT(aAny >>= nMissingValueTreatment);
+ CPPUNIT_ASSERT_EQUAL(chart::MissingValueTreatment::USE_ZERO, nMissingValueTreatment);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSmoothDefaultValue2007XLSX)
+{
+ loadFromFile(u"xlsx/smoothed_series2007.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT(xChartType.is());
+
+ Reference< beans::XPropertySet > xPropSet( xChartType, UNO_QUERY );
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ chart2::CurveStyle eCurveStyle;
+ xPropSet->getPropertyValue("CurveStyle") >>= eCurveStyle;
+ CPPUNIT_ASSERT_EQUAL(chart2::CurveStyle_LINES, eCurveStyle);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSmoothDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/smoothed_series.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChartDoc, 0 );
+ CPPUNIT_ASSERT(xChartType.is());
+
+ Reference< beans::XPropertySet > xPropSet( xChartType, UNO_QUERY );
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ chart2::CurveStyle eCurveStyle;
+ xPropSet->getPropertyValue("CurveStyle") >>= eCurveStyle;
+ CPPUNIT_ASSERT(eCurveStyle != chart2::CurveStyle_LINES);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTrendlineDefaultValue2007XLSX)
+{
+ loadFromFile(u"xlsx/trendline2007.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<chart2::XRegressionCurveContainer> xRegressionCurveContainer(xDataSeries, UNO_QUERY_THROW);
+ Sequence< Reference<chart2::XRegressionCurve> > xRegressionCurveSequence = xRegressionCurveContainer->getRegressionCurves();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xRegressionCurveSequence.getLength());
+
+ Reference<chart2::XRegressionCurve> xCurve = xRegressionCurveSequence[0];
+
+ Reference<beans::XPropertySet> xPropSet(xCurve->getEquationProperties(), uno::UNO_SET_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("ShowEquation");
+ bool bShowEquation = true;
+ CPPUNIT_ASSERT(aAny >>= bShowEquation);
+ CPPUNIT_ASSERT(!bShowEquation);
+
+ aAny = xPropSet->getPropertyValue("ShowCorrelationCoefficient");
+ bool bShowCorrelation = true;
+ CPPUNIT_ASSERT(aAny >>= bShowCorrelation);
+ CPPUNIT_ASSERT(!bShowCorrelation);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTrendlineDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/trendline.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<chart2::XRegressionCurveContainer> xRegressionCurveContainer(xDataSeries, UNO_QUERY_THROW);
+ Sequence< Reference<chart2::XRegressionCurve> > xRegressionCurveSequence = xRegressionCurveContainer->getRegressionCurves();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xRegressionCurveSequence.getLength());
+
+ Reference<chart2::XRegressionCurve> xCurve = xRegressionCurveSequence[0];
+
+ Reference<beans::XPropertySet> xPropSet(xCurve->getEquationProperties(), uno::UNO_SET_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("ShowEquation");
+ bool bShowEquation = false;
+ CPPUNIT_ASSERT(aAny >>= bShowEquation);
+ CPPUNIT_ASSERT(bShowEquation);
+
+ aAny = xPropSet->getPropertyValue("ShowCorrelationCoefficient");
+ bool bShowCorrelation = false;
+ CPPUNIT_ASSERT(aAny >>= bShowCorrelation);
+ CPPUNIT_ASSERT(bShowCorrelation);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testVaryColorDefaultValues2007XLSX)
+{
+ loadFromFile(u"xlsx/vary_color2007.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("VaryColorsByPoint");
+ bool bVaryColor = true;
+ CPPUNIT_ASSERT(aAny >>= bVaryColor);
+ CPPUNIT_ASSERT(!bVaryColor);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testVaryColorDefaultValues2013XLSX)
+{
+ loadFromFile(u"xlsx/vary_color.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("VaryColorsByPoint");
+ bool bVaryColor = false;
+ CPPUNIT_ASSERT(aAny >>= bVaryColor);
+ CPPUNIT_ASSERT(!bVaryColor);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPlotVisOnlyDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/plotVisOnly.xlsx");
+ uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ Reference<beans::XPropertySet> xPropSet(xChart1Doc->getDiagram(), uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("IncludeHiddenCells");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ bool bShowHiddenValues = true;
+ CPPUNIT_ASSERT(aAny >>= bShowHiddenValues);
+ CPPUNIT_ASSERT(!bShowHiddenValues);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testRAngAxDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/rAngAx.xlsx");
+ uno::Reference< chart::XChartDocument > xChart1Doc ( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW);
+ Reference<beans::XPropertySet> xPropSet(xChart1Doc->getDiagram(), uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("RightAngledAxes");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ bool bRightAngleAxes = false;
+ CPPUNIT_ASSERT(aAny >>= bRightAngleAxes);
+ CPPUNIT_ASSERT(bRightAngleAxes);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testMajorTickMarksDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/majorTickMark.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xXAxis.is());
+ Reference<beans::XPropertySet> xPropSet(xXAxis, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("MajorTickmarks");
+ sal_Int32 nMajorTickmarks = chart2::TickmarkStyle::NONE;
+ CPPUNIT_ASSERT(aAny.hasValue());
+ CPPUNIT_ASSERT(aAny >>= nMajorTickmarks);
+ CPPUNIT_ASSERT_EQUAL(chart2::TickmarkStyle::INNER | chart2::TickmarkStyle::OUTER, nMajorTickmarks);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testMinorTickMarksDefaultValue2013XLSX)
+{
+ loadFromFile(u"xlsx/minorTickMark.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xXAxis.is());
+ Reference<beans::XPropertySet> xPropSet(xXAxis, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("MinorTickmarks");
+ sal_Int32 nMajorTickmarks = chart2::TickmarkStyle::NONE;
+ CPPUNIT_ASSERT(aAny.hasValue());
+ CPPUNIT_ASSERT(aAny >>= nMajorTickmarks);
+ CPPUNIT_ASSERT_EQUAL(chart2::TickmarkStyle::INNER | chart2::TickmarkStyle::OUTER, nMajorTickmarks);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTitleDefaultRotationXLSX)
+{
+ loadFromFile(u"xlsx/axis_title_default_rotation.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(90.0, nRotation);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSecondaryAxisTitleDefaultRotationXLSX)
+{
+ loadFromFile(u"xlsx/secondary_axis_title_default_rotation.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 1);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(90.0, nRotation);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTitleRotationXLSX)
+{
+ loadFromFile(u"xlsx/axis_title_rotated.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ {
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(340.0, nRotation);
+ }
+ {
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 1);
+ CPPUNIT_ASSERT(xYAxis.is());
+ Reference<chart2::XTitled> xTitled(xYAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xPropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("TextRotation");
+ double nRotation = 0;
+ CPPUNIT_ASSERT(aAny >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(270.0, nRotation);
+ }
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAxisTitlePositionDOCX)
+{
+ loadFromFile(u"docx/testAxisTitlePosition.docx");
+ uno::Reference< chart::XDiagram > mxDiagram;
+ uno::Reference< drawing::XShape > xAxisTitle;
+ uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromWriter(0);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ mxDiagram.set(xChartDoc->getDiagram());
+ CPPUNIT_ASSERT(mxDiagram.is());
+ // test X Axis title position
+ uno::Reference< chart::XAxisXSupplier > xAxisXSupp(mxDiagram, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xAxisXSupp.is());
+
+ xAxisTitle = xAxisXSupp->getXAxisTitle();
+ CPPUNIT_ASSERT(xAxisTitle.is());
+
+ awt::Point aPos = xAxisTitle->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(10640, aPos.X, 2);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(7157, aPos.Y, 2);
+
+ // test Y Axis title position
+ uno::Reference< chart::XAxisYSupplier > xAxisYSupp(mxDiagram, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xAxisYSupp.is());
+
+ xAxisTitle = xAxisYSupp->getYAxisTitle();
+ CPPUNIT_ASSERT(xAxisTitle.is());
+
+ aPos = xAxisTitle->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(387, aPos.X, 2);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(6378, aPos.Y, 300);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testCombinedChartAttachedAxisXLSX)
+{
+ loadFromFile(u"xlsx/testCombinedChartAxis.xlsx");
+ Reference< chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ // First series
+ Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ Reference<beans::XPropertySet> xPropSet(xSeries, uno::UNO_QUERY_THROW);
+ sal_Int32 nAxisIndex = -1;
+ // First series (column chart) should be attached to secondary axis!
+ uno::Any aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nAxisIndex);
+
+ // Second series
+ xSeries = getDataSeriesFromDoc(xChartDoc, 0, 1);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ xPropSet.set(xSeries, uno::UNO_QUERY_THROW);
+ // Second series (line chart) should be attached to primary axis!
+ aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nAxisIndex);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf140489MultiSeriesChartAxisXLSX)
+{
+ loadFromFile(u"xlsx/tdf140489.xlsx");
+ Reference< chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ // First series
+ Reference<chart2::XDataSeries> xSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ Reference<beans::XPropertySet> xPropSet(xSeries, uno::UNO_QUERY_THROW);
+ sal_Int32 nAxisIndex = -1;
+ uno::Any aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nAxisIndex);
+
+ // Second series
+ xSeries = getDataSeriesFromDoc(xChartDoc, 0, 1);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ xPropSet.set(xSeries, uno::UNO_QUERY_THROW);
+ aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nAxisIndex);
+
+ // Third series
+ xSeries = getDataSeriesFromDoc(xChartDoc, 0, 2);
+ CPPUNIT_ASSERT(xSeries.is());
+
+ xPropSet.set(xSeries, uno::UNO_QUERY_THROW);
+ aAny = xPropSet->getPropertyValue("AttachedAxisIndex");
+ CPPUNIT_ASSERT(aAny >>= nAxisIndex);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nAxisIndex);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testInternalDataProvider)
+{
+ loadFromFile(u"odp/chart.odp");
+ uno::Reference< chart2::XChartDocument > xChartDoc(getChartDocFromDrawImpress(0,0), uno::UNO_QUERY_THROW);
+ const uno::Reference< chart2::data::XDataProvider >& rxDataProvider = xChartDoc->getDataProvider();
+
+ // Parse 42 array
+ Reference<chart2::data::XDataSequence> xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;42;42;42}", "");
+ Sequence<Any> xSequence = xDataSeq->getData();
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[1]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[2]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[3]);
+
+ // Parse empty first and last
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{\"\";42;42;\"\"}", "");
+ xSequence = xDataSeq->getData();
+ CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[0].getValue())));
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[1]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[2]);
+ CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[3].getValue())));
+
+ // Parse empty middle
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"\";\"\";42}", "");
+ xSequence = xDataSeq->getData();
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
+ CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[1].getValue())) );
+ CPPUNIT_ASSERT( std::isnan( *static_cast<const double*>(xSequence[2].getValue())) );
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[3]);
+
+ // Parse mixed types, numeric only role
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("values-y", "{42;\"hello\";0;\"world\"}", "");
+ xSequence = xDataSeq->getData();
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(42)), xSequence[0]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[1]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[2]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(sal_Int32(0)), xSequence[3]);
+
+ // Parse mixed types, mixed role
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray("categories", "{42;\"hello\";0;\"world\"}", "");
+ xSequence = xDataSeq->getData();
+ CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 1 42")), xSequence[0]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 2 hello")), xSequence[1]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 3 0")), xSequence[2]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(OUString("Row 4 world")), xSequence[3]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf90510)
+{
+ // Pie chart label placement settings(XLS)
+ loadFromFile(u"xls/piechart_outside.xls");
+ uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW );
+ Reference<beans::XPropertySet> xPropSet( xChart1Doc->getDiagram()->getDataPointProperties( 0, 0 ), uno::UNO_SET_THROW );
+ uno::Any aAny = xPropSet->getPropertyValue( "LabelPlacement" );
+ CPPUNIT_ASSERT( aAny.hasValue() );
+ sal_Int32 nLabelPlacement = 0;
+ CPPUNIT_ASSERT( aAny >>= nLabelPlacement );
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data labels should be placed outside", chart::DataLabelPlacement::OUTSIDE, nLabelPlacement );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf109858)
+{
+ // Pie chart label placement settings(XLSX)
+ loadFromFile(u"xlsx/piechart_outside.xlsx");
+ uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW );
+
+ // test data point labels position
+ Reference<beans::XPropertySet> xDataPointPropSet( xChart1Doc->getDiagram()->getDataPointProperties( 0, 0 ), uno::UNO_SET_THROW );
+ uno::Any aAny = xDataPointPropSet->getPropertyValue( "LabelPlacement" );
+ CPPUNIT_ASSERT( aAny.hasValue() );
+ sal_Int32 nLabelPlacement = 0;
+ CPPUNIT_ASSERT( aAny >>= nLabelPlacement );
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data point label should be placed bestfit", chart::DataLabelPlacement::CUSTOM, nLabelPlacement );
+
+ // test data series label position
+ Reference<beans::XPropertySet> xSeriesPropSet(xChart1Doc->getDiagram()->getDataRowProperties(0), uno::UNO_SET_THROW);
+ aAny = xSeriesPropSet->getPropertyValue( "LabelPlacement" );
+ CPPUNIT_ASSERT( aAny >>= nLabelPlacement );
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data series labels should be placed outside", chart::DataLabelPlacement::OUTSIDE, nLabelPlacement );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf130105)
+{
+ loadFromFile(u"xlsx/barchart_outend.xlsx");
+ uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ uno::Any aAny = xPropertySet->getPropertyValue("LabelPlacement");
+ CPPUNIT_ASSERT(aAny.hasValue());
+ sal_Int32 nLabelPlacement = 0;
+ CPPUNIT_ASSERT(aAny >>= nLabelPlacement);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Data label should be placed outend", chart::DataLabelPlacement::OUTSIDE, nLabelPlacement);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf111173)
+{
+ loadFromFile(u"xlsx/tdf111173.xlsx");
+ uno::Reference< chart::XChartDocument > xChart1Doc( getChartCompFromSheet( 0, 0, mxComponent ), UNO_QUERY_THROW );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf122226)
+{
+ loadFromFile(u"docx/testTdf122226.docx" );
+ uno::Reference< chart2::XChartDocument > xChartDoc ( getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT( xChartDoc.is() );
+
+ css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+
+ uno::Any aAny = xPropertySet->getPropertyValue( "LabelSeparator" );
+ CPPUNIT_ASSERT( aAny.hasValue() );
+ OUString nLabelSeparator;
+ CPPUNIT_ASSERT( aAny >>= nLabelSeparator );
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Data labels should be separated into new lines", OUString("\n"), nLabelSeparator );
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf115107)
+{
+ // import complex data point labels
+ loadFromFile(u"pptx/tdf115107.pptx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ float nFontSize;
+ sal_Int64 nFontColor;
+ sal_Int32 nCharUnderline;
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+
+ // 1
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("90.0 = "), aFields[0]->getString());
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[0]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(18), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xed7d31), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE, aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("90"), aFields[1]->getString());
+
+ // 2
+ xPropertySet.set(xDataSeries->getDataPointByIndex(1), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(8), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), aFields[0]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" : "), aFields[1]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CATEGORYNAME, aFields[2]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("B"), aFields[2]->getString());
+ aFields[2]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[2]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(16), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xed7d31), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_NEWLINE, aFields[3]->getFieldType());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[4]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Multi"), aFields[4]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[5]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("line"), aFields[5]->getString());
+ aFields[5]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[5]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(11.97), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xbf9000), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_NEWLINE, aFields[6]->getFieldType());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[7]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Abc"), aFields[7]->getString());
+ aFields[7]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[7]->getPropertyValue("CharColor") >>= nFontColor;
+ aFields[7]->getPropertyValue("CharUnderline") >>= nCharUnderline;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(12), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xa9d18e), nFontColor);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), nCharUnderline);
+
+ // 3
+ xPropertySet.set(xDataSeries->getDataPointByIndex(2), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME, aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("DATA"), aFields[0]->getString());
+
+ // 4
+ xPropertySet.set(xDataSeries->getDataPointByIndex(3), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLREF, aFields[0]->getFieldType());
+ //CPPUNIT_ASSERT_EQUAL(OUString("70"), aFields[0]->getString()); TODO: Not implemented yet
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" <CELLREF"), aFields[1]->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf115107_2)
+{
+ // import complex data point labels in cobo charts with multiple data series
+ loadFromFile(u"pptx/tdf115107-2.pptx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ float nFontSize;
+ sal_Int64 nFontColor;
+ uno::Reference<beans::XPropertySet> xPropertySet;
+ uno::Sequence<uno::Reference<chart2::XDataPointCustomLabelField>> aFields;
+
+ // First series
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE, aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("4.3"), aFields[0]->getString());
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[0]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(18), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xc00000), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), aFields[1]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME, aFields[2]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Bars"), aFields[2]->getString());
+
+ // Second series
+ xDataSeries = getDataSeriesFromDoc(xChartDoc, 0, 1);
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ xPropertySet.set(xDataSeries->getDataPointByIndex(0), uno::UNO_SET_THROW);
+ xPropertySet->getPropertyValue("CustomLabelFields") >>= aFields;
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aFields.getLength());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE, aFields[0]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("2"), aFields[0]->getString());
+ aFields[0]->getPropertyValue("CharHeight") >>= nFontSize;
+ aFields[0]->getPropertyValue("CharColor") >>= nFontColor;
+ CPPUNIT_ASSERT_EQUAL(static_cast<float>(18), nFontSize);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int64>(0xffd966), nFontColor);
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT, aFields[1]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), aFields[1]->getString());
+
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME, aFields[2]->getFieldType());
+ CPPUNIT_ASSERT_EQUAL(OUString("Line"), aFields[2]->getString());
+
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf116163)
+{
+ loadFromFile(u"pptx/tdf116163.pptx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xHAxis.is());
+
+ chart2::ScaleData aScaleData = xHAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+
+ Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories;
+ CPPUNIT_ASSERT(xLabeledDataSequence.is());
+
+ Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues();
+ CPPUNIT_ASSERT(xDataSequence.is());
+
+ Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextualDataSequence.is());
+
+ std::vector<OUString> aCategories;
+ const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
+ ::std::copy(aTextData.begin(), aTextData.end(),
+ ::std::back_inserter(aCategories));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Aaaa"), aCategories[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Bbbbbbb"), aCategories[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Ccc"), aCategories[2]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Ddddddddddddd"), aCategories[3]);
+
+ // Check visible text
+
+ 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> xXAxis = getShapeByName(xShapes, "CID/D=0:CS=0:Axis=0,0",
+ // 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());
+
+ uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW);
+
+ // Check text
+ uno::Reference<text::XTextRange> xLabel0(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Aaaa"), xLabel0->getString());
+ uno::Reference<text::XTextRange> xLabel1(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
+ // If there is space for 3 chars only then don't show "..."
+ CPPUNIT_ASSERT_EQUAL(OUString("Bbb"), xLabel1->getString());
+ uno::Reference<text::XTextRange> xLabel2(xIndexAccess->getByIndex(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Ccc"), xLabel2->getString());
+ uno::Reference<text::XTextRange> xLabel3(xIndexAccess->getByIndex(3), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Dddd..."), xLabel3->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf48041)
+{
+ loadFromFile(u"pptx/tdf48041.pptx");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xYAxis = getAxisFromDoc(xChartDoc, 0, 1, 0);
+ CPPUNIT_ASSERT(xYAxis.is());
+
+ chart2::ScaleData aScaleData = xYAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Scaling.is());
+
+ // Check visible text
+ 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> xYAxisShape = getShapeByName(xShapes, "CID/D=0:CS=0:Axis=1,0", // Y Axis
+ // 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(xYAxisShape.is());
+
+ // Check label count
+ uno::Reference<container::XIndexAccess> xIndexAccess(xYAxisShape, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6), xIndexAccess->getCount());
+
+ // Check text
+ uno::Reference<text::XTextRange> xLabel0(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("0"), xLabel0->getString());
+ uno::Reference<text::XTextRange> xLabel1(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("1"), xLabel1->getString());
+ uno::Reference<text::XTextRange> xLabel2(xIndexAccess->getByIndex(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("2"), xLabel2->getString());
+ uno::Reference<text::XTextRange> xLabel3(xIndexAccess->getByIndex(3), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("3"), xLabel3->getString());
+ uno::Reference<text::XTextRange> xLabel4(xIndexAccess->getByIndex(4), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("4"), xLabel4->getString());
+ uno::Reference<text::XTextRange> xLabel5(xIndexAccess->getByIndex(5), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("5"), xLabel5->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf121205)
+{
+ loadFromFile(u"pptx/tdf121205.pptx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+
+ uno::Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_MESSAGE("chart doc does not have title", xTitled.is());
+ OUString aTitle = getTitleString(xTitled);
+
+ // We expect title split in 3 lines
+ CPPUNIT_ASSERT_EQUAL(OUString("Firstline\nSecondline\nThirdline"), aTitle);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testFixedSizeBarChartVeryLongLabel)
+{
+ // Bar chart area size is fixed (not automatic) so we can't resize
+ // the chart area to let the label break into multiple lines. In this
+ // case the best course of action is to just crop the label text. This
+ // test checks that the rendered text is actually cropped.
+
+ loadFromFile(u"odp/BarChartVeryLongLabel.odp");
+
+ // Select shape 0 which has fixed size chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xHAxis.is());
+
+ chart2::ScaleData aScaleData = xHAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+
+ Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories;
+ CPPUNIT_ASSERT(xLabeledDataSequence.is());
+
+ Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues();
+ CPPUNIT_ASSERT(xDataSequence.is());
+
+ Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextualDataSequence.is());
+
+ std::vector<OUString> aCategories;
+ const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
+ ::std::copy(aTextData.begin(), aTextData.end(),
+ ::std::back_inserter(aCategories));
+
+ // Check that we have a very very long label text
+ CPPUNIT_ASSERT_EQUAL(OUString("Very very very very very very very very very very very loooooooooooong label"), aCategories[0]);
+
+ // Check visible text
+ 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> xXAxis = getShapeByName(xShapes, "CID/D=0:CS=0:Axis=0,0",
+ // 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());
+
+ uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW);
+
+ // Check text is actually cropped. Depending on DPI,
+ // it may be "Very very very very very very..." or "Very very very very very ver..."
+ uno::Reference<text::XTextRange> xLabel(xIndexAccess->getByIndex(0), uno::UNO_QUERY_THROW);
+ const OUString aLabelString = xLabel->getString();
+ CPPUNIT_ASSERT_LESSEQUAL(sal_Int32(32), aLabelString.getLength());
+ CPPUNIT_ASSERT(aLabelString.endsWith(u"..."));
+
+ uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall=");
+ CPPUNIT_ASSERT(xChartWall.is());
+
+ // The text shape width should be smaller than the chart wall
+ CPPUNIT_ASSERT_LESS(xChartWall->getSize().Width, xXAxis->getSize().Width);
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(7113, xChartWall->getSize().Height, 100);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(398, xXAxis->getSize().Height, 100);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testAutomaticSizeBarChartVeryLongLabel)
+{
+ // Bar chart area size is automatic so we expect the label to be broken
+ // into multiple lines.
+
+ loadFromFile(u"odp/BarChartVeryLongLabel.odp");
+
+ // Select shape 1, which has an automatic sized chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xHAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xHAxis.is());
+
+ chart2::ScaleData aScaleData = xHAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+
+ Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence = aScaleData.Categories;
+ CPPUNIT_ASSERT(xLabeledDataSequence.is());
+
+ Reference<chart2::data::XDataSequence> xDataSequence = xLabeledDataSequence->getValues();
+ CPPUNIT_ASSERT(xDataSequence.is());
+
+ Reference<chart2::data::XTextualDataSequence> xTextualDataSequence(xDataSequence, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextualDataSequence.is());
+
+ std::vector<OUString> aCategories;
+ const Sequence<OUString> aTextData(xTextualDataSequence->getTextualData());
+ ::std::copy(aTextData.begin(), aTextData.end(),
+ ::std::back_inserter(aCategories));
+
+ // Check that we have a very very long label text
+ CPPUNIT_ASSERT_EQUAL(OUString("Very very very very very very very very very very very loooooooooooong label"), aCategories[0]);
+
+ // Check visible text
+ 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> xXAxis = getShapeByName(xShapes, "CID/D=0:CS=0:Axis=0,0",
+ // 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());
+
+ uno::Reference<container::XIndexAccess> xIndexAccess(xXAxis, UNO_QUERY_THROW);
+
+ // Check text is unmodified
+ uno::Reference<text::XTextRange> xLabel(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Very very very very very very very very very very very loooooooooooong label"), xLabel->getString());
+
+ uno::Reference<drawing::XShape> xChartWall = getShapeByName(xShapes, "CID/DiagramWall=");
+ CPPUNIT_ASSERT(xChartWall.is());
+
+ // The text shape width should be smaller than the chart wall
+ CPPUNIT_ASSERT_LESS(xChartWall->getSize().Width, xXAxis->getSize().Width);
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(7200, xChartWall->getSize().Height, 100);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1192, xXAxis->getSize().Height, 100);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTotalsRowIgnored)
+{
+ loadFromFile(u"xlsx/barchart_totalsrow.xlsx");
+ {
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::data::XDataSequence> xDataSeq =
+ getDataSequenceFromDocByRole(xChartDoc, u"values-y");
+ CPPUNIT_ASSERT(xDataSeq.is());
+
+ // Table data range is D2:D9 (8 rows) but because last row is totals row it is ignored
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(7u), xDataSeq->getData().size());
+ }
+ {
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(1, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::data::XDataSequence> xDataSeq =
+ getDataSequenceFromDocByRole(xChartDoc, u"values-y");
+ CPPUNIT_ASSERT(xDataSeq.is());
+
+ // Table data range is D2:D10 (9 rows) and totals row isn't the last row so it's not ignored
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(9u), xDataSeq->getData().size());
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testPieChartPlotAreaMarginWithAutomaticLayout)
+{
+ // tdf#91265
+ // Checks the margin and calculation of the plot area for the pie chart inside the chart area.
+
+ loadFromFile(u"pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx");
+
+ OUString aCheckShapeName = "CID/D=0:CS=0:CT=0:Series=0";
+ // Chart Wuse case Width == Height
+ {
+ // Load chart Chart_2_2 - 2cm x 2cm -
+ auto xDocument = getChartDocFromDrawImpressNamed(0, u"Chart_2_2");
+ CPPUNIT_ASSERT(xDocument.is());
+
+ uno::Reference<chart2::XChartDocument>xChartDocument(xDocument, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDocument.is());
+
+ // Get the shape of the diagram / chart
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDocument, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDrawPageSupplier.is());
+ 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> xChartDiagramShape = getShapeByName(xShapes, aCheckShapeName);
+ CPPUNIT_ASSERT(xChartDiagramShape.is());
+
+ // Size
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Width, 5); // calculated chart area size - 2 * margin
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Height, 5); // calculated chart area size - 2 * margin
+ // Position
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().X, 5); // margin
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().Y, 5); // margin
+ }
+
+ // Chart use case - Width < Height
+ {
+ // Load chart Chart_3_4 - 3cm x 4cm
+ auto xDocument = getChartDocFromDrawImpressNamed(0, u"Chart_3_4");
+ CPPUNIT_ASSERT(xDocument.is());
+
+ uno::Reference<chart2::XChartDocument>xChartDocument(xDocument, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDocument.is());
+
+ // Get the shape of the diagram / chart
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDocument, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDrawPageSupplier.is());
+ 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> xChartDiagramShape = getShapeByName(xShapes, aCheckShapeName);
+ CPPUNIT_ASSERT(xChartDiagramShape.is());
+
+ // Size
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(2300, xChartDiagramShape->getSize().Width, 5); // calculated chart area size - 2 * margin
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(2300, xChartDiagramShape->getSize().Height, 5); // calculated chart area size - 2 * margin
+ // Position
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().X, 5); // margin
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(850, xChartDiagramShape->getPosition().Y, 5); // margin + calculated centering
+ }
+
+ // Chart use case - Width > Height
+ {
+ // Load chart Chart_3_2 - 3cm x 2cm
+ auto xDocument = getChartDocFromDrawImpressNamed(0, u"Chart_3_2");
+ CPPUNIT_ASSERT(xDocument.is());
+
+ uno::Reference<chart2::XChartDocument>xChartDocument(xDocument, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDocument.is());
+
+ // Get the shape of the diagram / chart
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDocument, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDrawPageSupplier.is());
+ 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> xChartDiagramShape = getShapeByName(xShapes, aCheckShapeName);
+ CPPUNIT_ASSERT(xChartDiagramShape.is());
+
+ // Size
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Width, 5); // calculated chart area size - 2 * margin
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1300, xChartDiagramShape->getSize().Height, 5); // calculated chart area size - 2 * margin
+ // Position
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(850, xChartDiagramShape->getPosition().X, 5); // margin + calculated centering
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(350, xChartDiagramShape->getPosition().Y, 5); // margin
+ }
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/chart2import2.cxx b/chart2/qa/extras/chart2import2.cxx
new file mode 100644
index 0000000000..863d425ae9
--- /dev/null
+++ b/chart2/qa/extras/chart2import2.cxx
@@ -0,0 +1,892 @@
+/* -*- 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/DataPointLabel.hpp>
+#include <com/sun/star/chart2/XDataPointCustomLabelField.hpp>
+#include <com/sun/star/chart2/DataPointCustomLabelFieldType.hpp>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/chart2/XInternalDataProvider.hpp>
+#include <com/sun/star/chart/XAxisXSupplier.hpp>
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+#include <com/sun/star/text/XText.hpp>
+
+class Chart2ImportTest2 : public ChartTest
+{
+public:
+ Chart2ImportTest2()
+ : ChartTest("/chart2/qa/extras/data/")
+ {
+ }
+};
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf114179)
+{
+ loadFromFile(u"docx/testTdf114179.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ css::uno::Reference<chart2::XDiagram> xDiagram;
+ xDiagram.set(xChartDoc->getFirstDiagram());
+ CPPUNIT_ASSERT_MESSAGE("There is a Diagram.", xDiagram.is());
+ awt::Size aPage = getPageSize(xChartDoc);
+ awt::Size aSize = getSize(xDiagram, aPage);
+ CPPUNIT_ASSERT(aSize.Width > 0);
+ CPPUNIT_ASSERT(aSize.Height > 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf124243)
+{
+ loadFromFile(u"docx/tdf124243.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ Reference<beans::XPropertySet> xPS(xAxis, uno::UNO_QUERY_THROW);
+ bool bShow = true;
+ // test X Axis is not visible.
+ bool bSuccess = xPS->getPropertyValue("Show") >>= bShow;
+ CPPUNIT_ASSERT(bSuccess);
+ CPPUNIT_ASSERT(!bShow);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf127393)
+{
+ loadFromFile(u"pptx/tdf127393.pptx");
+
+ // 1st chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData1 = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData1.Categories.is());
+ CPPUNIT_ASSERT(aScaleData1.ShiftedCategoryPosition);
+
+ // 2nd chart
+ xChartDoc.set(getChartDocFromDrawImpress(1, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ xAxis.set(getAxisFromDoc(xChartDoc, 0, 0, 0));
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData2 = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData2.Categories.is());
+ CPPUNIT_ASSERT(!aScaleData2.ShiftedCategoryPosition);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf128733)
+{
+ loadFromFile(u"odt/tdf128733.odt");
+
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ // test secondary X axis ShiftedCategoryPosition value
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 1);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+ CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf128432)
+{
+ loadFromFile(u"ods/tdf128432.ods");
+
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+ CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf128627)
+{
+ loadFromFile(u"xlsx/tdf128627.xlsx");
+ // Test ShiftedCategoryPosition for Radar Chart
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+ CPPUNIT_ASSERT(!aScaleData.ShiftedCategoryPosition);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf128634)
+{
+ loadFromFile(u"xlsx/tdf128634.xlsx");
+ // Test ShiftedCategoryPosition for 3D Charts
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+ CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf130657)
+{
+ loadFromFile(u"xlsx/tdf130657.xlsx");
+ // Test ShiftedCategoryPosition for charts which is not contain a "crossbetween" OOXML tag.
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+ CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
+}
+
+namespace
+{
+void checkDataLabelProperties(const Reference<chart2::XDataSeries>& xDataSeries,
+ sal_Int32 nDataPointIndex, bool bValueVisible)
+{
+ uno::Reference<beans::XPropertySet> xPropertySet(
+ xDataSeries->getDataPointByIndex(nDataPointIndex), uno::UNO_SET_THROW);
+ chart2::DataPointLabel aLabel;
+ xPropertySet->getPropertyValue("Label") >>= aLabel;
+ CPPUNIT_ASSERT_EQUAL(bValueVisible, static_cast<bool>(aLabel.ShowNumber));
+ CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(aLabel.ShowNumberInPercent));
+}
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testDeletedDataLabel)
+{
+ loadFromFile(u"xlsx/deleted_data_labels.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ UNO_QUERY_THROW);
+ Reference<chart2::XDataSeries> xDataSeries0 = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries0.is());
+ checkDataLabelProperties(xDataSeries0, 0, true);
+ checkDataLabelProperties(xDataSeries0, 1, false);
+ checkDataLabelProperties(xDataSeries0, 2, true);
+ Reference<chart2::XDataSeries> xDataSeries1 = getDataSeriesFromDoc(xChartDoc, 1);
+ CPPUNIT_ASSERT(xDataSeries1.is());
+ checkDataLabelProperties(xDataSeries1, 0, false);
+ checkDataLabelProperties(xDataSeries1, 1, false);
+ checkDataLabelProperties(xDataSeries1, 2, false);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testDataPointInheritedColorDOCX)
+{
+ loadFromFile(u"docx/data_point_inherited_color.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ css::uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram(), UNO_SET_THROW);
+
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0),
+ uno::UNO_SET_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+ sal_Int32 nColor = xPropertySet->getPropertyValue("FillColor").get<sal_Int32>();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(16776960), nColor);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testExternalStrRefsXLSX)
+{
+ loadFromFile(u"xlsx/external_str_ref.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ css::uno::Sequence<css::uno::Any> aValues = aScaleData.Categories->getValues()->getData();
+ CPPUNIT_ASSERT_EQUAL(OUString("test1"), aValues[0].get<OUString>());
+ CPPUNIT_ASSERT_EQUAL(OUString("test2"), aValues[1].get<OUString>());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testSourceNumberFormatComplexCategoriesXLS)
+{
+ loadFromFile(u"xls/source_number_format_axis.xls");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ sal_Int32 nNumberFormat = aScaleData.Categories->getValues()->getNumberFormatKeyByIndex(-1);
+ CPPUNIT_ASSERT(nNumberFormat != 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testSimpleCategoryAxis)
+{
+ loadFromFile(u"docx/testSimpleCategoryAxis.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // Test the internal data.
+ CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+
+ Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xInternalProvider.is());
+
+ Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDescAccess.is());
+
+ // Get the category labels.
+ Sequence<Sequence<OUString>> aCategories = xDescAccess->getComplexRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[0].getLength());
+ CPPUNIT_ASSERT(aCategories[0][0].endsWith("ria 1"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[1].getLength());
+ CPPUNIT_ASSERT(aCategories[1][0].endsWith("ria 2"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[2].getLength());
+ CPPUNIT_ASSERT(aCategories[2][0].endsWith("ria 3"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aCategories[3].getLength());
+ CPPUNIT_ASSERT(aCategories[3][0].endsWith("ria 4"));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testMultilevelCategoryAxis)
+{
+ loadFromFile(u"docx/testMultilevelCategoryAxis.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ // Test the internal data.
+ CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+
+ Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xInternalProvider.is());
+
+ Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDescAccess.is());
+
+ // Get the complex category labels.
+ Sequence<Sequence<OUString>> aCategories = xDescAccess->getComplexRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aCategories.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("2011"), aCategories[0][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), aCategories[1][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("2012"), aCategories[2][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), aCategories[3][0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Categoria 1"), aCategories[0][1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Categoria 2"), aCategories[1][1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Categoria 3"), aCategories[2][1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("Categoria 4"), aCategories[3][1]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testXaxisValues)
+{
+ loadFromFile(u"docx/tdf124083.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ const uno::Reference<chart2::data::XDataSequence> xDataSeq
+ = getDataSequenceFromDocByRole(xChartDoc, u"values-x");
+ Sequence<uno::Any> xSequence = xDataSeq->getData();
+ // test X values
+ CPPUNIT_ASSERT_EQUAL(uno::Any(0.04), xSequence[0]);
+ CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[1].getValue())));
+ CPPUNIT_ASSERT_EQUAL(uno::Any(0.16), xSequence[2]);
+ CPPUNIT_ASSERT_EQUAL(uno::Any(0.11), xSequence[3]);
+ CPPUNIT_ASSERT(std::isnan(*static_cast<const double*>(xSequence[4].getValue())));
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf123504)
+{
+ loadFromFile(u"ods/pie_chart_100_and_0.ods");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<chart2::XChartDocument> xChartDoc2(xChartDoc, UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType(getChartTypeFromDoc(xChartDoc2, 0), UNO_SET_THROW);
+ std::vector aDataSeriesYValues = getDataSeriesYValuesFromChartType(xChartType);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), aDataSeriesYValues.size());
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xSeriesSlices(getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=0"),
+ UNO_SET_THROW);
+
+ Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
+
+ // Check size and position of the only slice in the chart (100%)
+ // In the regressed state, it used to be 0-sized at position 0,0
+ awt::Point aSlicePosition = xSlice->getPosition();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(3000), aSlicePosition.X);
+ CPPUNIT_ASSERT_GREATER(sal_Int32(150), aSlicePosition.Y);
+ awt::Size aSliceSize = xSlice->getSize();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(8300.0, aSliceSize.Height, 10);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(8300.0, aSliceSize.Width, 10);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf122765)
+{
+ // The horizontal position of the slices was wrong.
+ loadFromFile(u"pptx/tdf122765.pptx");
+ Reference<chart::XChartDocument> xChartDoc = getChartDocFromDrawImpress(0, 0);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xSeriesSlices(getShapeByName(xShapes, "CID/D=0:CS=0:CT=0:Series=0"),
+ UNO_SET_THROW);
+
+ Reference<container::XIndexAccess> xIndexAccess(xSeriesSlices, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(9), xIndexAccess->getCount());
+ Reference<drawing::XShape> xSlice(xIndexAccess->getByIndex(0), UNO_QUERY_THROW);
+
+ // Check position of the first slice, all slices move together, so enough to check only one.
+ // Wrong position was around 5856.
+ awt::Point aSlicePosition = xSlice->getPosition();
+ CPPUNIT_ASSERT_GREATER(sal_Int32(7000), aSlicePosition.X);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf123206CustomLabelField)
+{
+ // File contains the deprecated "custom-label-field" attribute of the
+ // "data-point" element. It should be interpreted and stored as a data point
+ // property.
+ loadFromFile(u"odp/tdf123206.odp");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0),
+ uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xDp = xDataSeries->getDataPointByIndex(1);
+ Sequence<Reference<chart2::XDataPointCustomLabelField>> aLabelFields;
+ CPPUNIT_ASSERT(xDp->getPropertyValue("CustomLabelFields") >>= aLabelFields);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aLabelFields.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("Kiskacsa"), aLabelFields[0]->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf125444PercentageCustomLabel)
+{
+ loadFromFile(u"pptx/tdf125444.pptx");
+
+ // 1st chart
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromDrawImpress(0, 0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xDp = xDataSeries->getDataPointByIndex(1);
+ Sequence<Reference<chart2::XDataPointCustomLabelField>> aLabelFields;
+ CPPUNIT_ASSERT(xDp->getPropertyValue("CustomLabelFields") >>= aLabelFields);
+ // There are three label field: a value label, a newline and a percentage label. We want
+ // to assert the latter.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aLabelFields.getLength());
+ CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType_PERCENTAGE,
+ aLabelFields[2]->getFieldType());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testDataPointLabelCustomPos)
+{
+ // test CustomLabelPosition on Bar chart
+ loadFromFile(u"xlsx/testDataPointLabelCustomPos.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(0),
+ uno::UNO_SET_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+
+ chart2::RelativePosition aCustomLabelPosition;
+ xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.14621409921671025, aCustomLabelPosition.Primary, 1e-7);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-5.2887961029923464E-2, aCustomLabelPosition.Secondary, 1e-7);
+
+ sal_Int32 aPlacement;
+ xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
+ CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::OUTSIDE, aPlacement);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf130032)
+{
+ // test CustomLabelPosition on Line chart
+ loadFromFile(u"xlsx/testTdf130032.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(1),
+ uno::UNO_SET_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+
+ chart2::RelativePosition aCustomLabelPosition;
+ xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.0438333333333334, aCustomLabelPosition.Primary, 1e-7);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(0.086794050743657, aCustomLabelPosition.Secondary, 1e-7);
+
+ sal_Int32 aPlacement;
+ xPropertySet->getPropertyValue("LabelPlacement") >>= aPlacement;
+ CPPUNIT_ASSERT_EQUAL(chart::DataLabelPlacement::RIGHT, aPlacement);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf134978)
+{
+ // test CustomLabelPosition on Pie chart
+ loadFromFile(u"xlsx/tdf134978.xlsx");
+ uno::Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart2::XDataSeries> xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+ CPPUNIT_ASSERT(xDataSeries.is());
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xDataSeries->getDataPointByIndex(2),
+ uno::UNO_SET_THROW);
+ CPPUNIT_ASSERT(xPropertySet.is());
+
+ chart2::RelativePosition aCustomLabelPosition;
+ xPropertySet->getPropertyValue("CustomLabelPosition") >>= aCustomLabelPosition;
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.040273622047244093, aCustomLabelPosition.Primary, 1e-7);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.25635352872557599, aCustomLabelPosition.Secondary, 1e-7);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf119138MissingAutoTitleDeleted)
+{
+ loadFromFile(u"xlsx/tdf119138-missing-autotitledeleted.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+
+ Reference<chart2::XTitled> xTitled(xChartDoc, uno::UNO_QUERY_THROW);
+ uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT_MESSAGE(
+ "Missing autoTitleDeleted is implied to be True if title text is present", xTitle.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testStockChartShiftedCategoryPosition)
+{
+ loadFromFile(u"odt/stock_chart_LO_6_2.odt");
+
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+
+ Reference<chart2::XAxis> xAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ chart2::ScaleData aScaleData = xAxis->getScaleData();
+ CPPUNIT_ASSERT(aScaleData.Categories.is());
+ CPPUNIT_ASSERT(aScaleData.ShiftedCategoryPosition);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf133376)
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ loadFromFile(u"xlsx/tdf133376.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataPointLabel(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2"),
+ UNO_SET_THROW);
+
+ CPPUNIT_ASSERT(xDataPointLabel.is());
+ // Check the position of the 3rd data point label, which is out from the pie slice
+ awt::Point aLabelPosition = xDataPointLabel->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1208, aLabelPosition.X, 30);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(5370, aLabelPosition.Y, 30);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf134225)
+{
+ loadFromFile(u"xlsx/tdf134225.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataPointLabel1(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
+ UNO_SET_THROW);
+ CPPUNIT_ASSERT(xDataPointLabel1.is());
+
+ Reference<drawing::XShape> xDataPointLabel2(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1"),
+ UNO_SET_THROW);
+ CPPUNIT_ASSERT(xDataPointLabel2.is());
+
+#if defined(_WIN32)
+ // font is MS Comic Sans which we can only assume is available under windows
+ awt::Point aLabelPosition1 = xDataPointLabel1->getPosition();
+ awt::Point aLabelPosition2 = xDataPointLabel2->getPosition();
+
+ // Check the distance between the position of the 1st data point label and the second one
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1493, sal_Int32(aLabelPosition2.X - aLabelPosition1.X), 30);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(2015, sal_Int32(aLabelPosition2.Y - aLabelPosition1.Y), 30);
+#endif
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf136105)
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ loadFromFile(u"xlsx/tdf136105.xlsx");
+ // 1st chart with fix inner position and size
+ {
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataPointLabel(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
+ UNO_SET_THROW);
+
+ CPPUNIT_ASSERT(xDataPointLabel.is());
+ // Check the position of the 1st data point label, which is out from the pie slice
+ awt::Point aLabelPosition = xDataPointLabel->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(8797, aLabelPosition.X, 500);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1374, aLabelPosition.Y, 500);
+ }
+ // 2nd chart with auto inner position and size
+ {
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(1, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataPointLabel(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
+ UNO_SET_THROW);
+
+ CPPUNIT_ASSERT(xDataPointLabel.is());
+ // Check the position of the 1st data point label, which is out from the pie slice
+ awt::Point aLabelPosition = xDataPointLabel->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(7978, aLabelPosition.X, 500);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1550, aLabelPosition.Y, 500);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf91250)
+{
+ loadFromFile(u"docx/tdf91250.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xInternalProvider.is());
+
+ Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDescAccess.is());
+
+ // Get the category labels.
+ Sequence<OUString> aCategories = xDescAccess->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aCategories.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("12.3254"), aCategories[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("11.62315"), aCategories[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("9.26"), aCategories[2]);
+ CPPUNIT_ASSERT_EQUAL(OUString("8.657"), aCategories[3]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf134111)
+{
+ // tdf134111 : To check TextBreak value is true
+ loadFromFile(u"docx/tdf134111.docx");
+ uno::Reference<chart::XChartDocument> xChartDoc = getChartDocFromWriter(0);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ uno::Reference<chart::XDiagram> mxDiagram(xChartDoc->getDiagram());
+ CPPUNIT_ASSERT(mxDiagram.is());
+ uno::Reference<chart::XAxisXSupplier> xAxisXSupp(mxDiagram, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xAxisXSupp.is());
+ uno::Reference<beans::XPropertySet> xAxisProp(xAxisXSupp->getXAxis());
+ bool bTextBreak = false;
+ xAxisProp->getPropertyValue("TextBreak") >>= bTextBreak;
+ // Expected value of 'TextBreak' is true
+ CPPUNIT_ASSERT(bTextBreak);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf136752)
+{
+ loadFromFile(u"xlsx/tdf136752.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataPointLabel(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
+ UNO_SET_THROW);
+
+ CPPUNIT_ASSERT(xDataPointLabel.is());
+ // Check the position of the 1st data point label, which is out from the pie slice
+ awt::Point aLabelPosition = xDataPointLabel->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(8675, aLabelPosition.X, 500);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1458, aLabelPosition.Y, 500);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf137505)
+{
+ loadFromFile(u"xlsx/tdf137505.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xCustomShape.is());
+
+ float nFontSize;
+ Reference<text::XText> xRange(xCustomShape, uno::UNO_QUERY_THROW);
+ Reference<text::XTextCursor> xAt = xRange->createTextCursor();
+ Reference<beans::XPropertySet> xProps(xAt, UNO_QUERY);
+ // check the text size of custom shape, inside the chart.
+ CPPUNIT_ASSERT(xProps->getPropertyValue("CharHeight") >>= nFontSize);
+ CPPUNIT_ASSERT_EQUAL(float(12), nFontSize);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf137734)
+{
+ loadFromFile(u"xlsx/tdf137734.xlsx");
+ Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT_MESSAGE("failed to load chart", xChartDoc.is());
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XDataSeries> xDataSeries = getDataSeriesFromDoc(xChartDoc, 0);
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference<beans::XPropertySet> xPropSet(xDataSeries, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("VaryColorsByPoint");
+ bool bVaryColor = true;
+ CPPUNIT_ASSERT(aAny >>= bVaryColor);
+ CPPUNIT_ASSERT(!bVaryColor);
+
+ // tdf#126133 Test primary X axis Rotation value
+ Reference<chart2::XAxis> xXAxis = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ CPPUNIT_ASSERT(xXAxis.is());
+ Reference<chart2::XTitled> xTitled(xXAxis, uno::UNO_QUERY_THROW);
+ Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ Reference<beans::XPropertySet> xTitlePropSet(xTitle, uno::UNO_QUERY_THROW);
+ uno::Any aAny2 = xTitlePropSet->getPropertyValue("TextRotation");
+ double nRotation = -1;
+ CPPUNIT_ASSERT(aAny2 >>= nRotation);
+ CPPUNIT_ASSERT_EQUAL(0.0, nRotation);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf137874)
+{
+ loadFromFile(u"xlsx/piechart_legend.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xLegendEntry;
+ xLegendEntry
+ = getShapeByName(xShapes, "CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0:LegendEntry=0");
+ CPPUNIT_ASSERT(xLegendEntry.is());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf146463)
+{
+ loadFromFile(u"ods/tdf146463.ods");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent));
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc, 0);
+ std::vector<std::vector<double>> aDataSeriesYValues
+ = getDataSeriesYValuesFromChartType(xChartType);
+ size_t nLegendEntryCount = aDataSeriesYValues.size();
+ CPPUNIT_ASSERT_EQUAL(size_t(14), nLegendEntryCount);
+
+ 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");
+ if (nSeriesIndex == 0)
+ CPPUNIT_ASSERT_MESSAGE("Legend 0 is not visible", xLegendEntry.is());
+ else
+ CPPUNIT_ASSERT_MESSAGE(
+ OString("Legend " + OString::number(nSeriesIndex) + " is visible").getStr(),
+ !xLegendEntry.is());
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdfCustomShapePos)
+{
+ loadFromFile(u"docx/testcustomshapepos.docx");
+ Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), UNO_QUERY_THROW);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ // test position and size of a custom shape within a chart, rotated by 0 degree.
+ {
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ awt::Point aPosition = xCustomShape->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(8845, aPosition.X, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(855, aPosition.Y, 300);
+ awt::Size aSize = xCustomShape->getSize();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(4831, aSize.Width, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1550, aSize.Height, 300);
+ }
+ // test position and size of a custom shape within a chart, rotated by 90 degree.
+ {
+ Reference<drawing::XShape> xCustomShape(xDrawPage->getByIndex(1), UNO_QUERY_THROW);
+ awt::Point aPosition = xCustomShape->getPosition();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1658, aPosition.X, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(6119, aPosition.Y, 300);
+ awt::Size aSize = xCustomShape->getSize();
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(4165, aSize.Width, 300);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1334, aSize.Height, 300);
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf121281)
+{
+ loadFromFile(u"xlsx/incorrect_label_position.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataPointLabel(
+ getShapeByName(xShapes,
+ "CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0"),
+ UNO_SET_THROW);
+
+ CPPUNIT_ASSERT(xDataPointLabel.is());
+ awt::Point aLabelPosition = xDataPointLabel->getPosition();
+ // This failed, if the data label flowed out of the chart area.
+ CPPUNIT_ASSERT_GREATEREQUAL(static_cast<sal_Int32>(0), aLabelPosition.Y);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf139658)
+{
+ loadFromFile(u"docx/tdf139658.docx");
+ uno::Reference<chart2::XChartDocument> xChartDoc(getChartDocFromWriter(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ Reference<chart2::XInternalDataProvider> xInternalProvider(xChartDoc->getDataProvider(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xInternalProvider.is());
+
+ Reference<chart::XComplexDescriptionAccess> xDescAccess(xInternalProvider, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDescAccess.is());
+
+ // Get the category labels.
+ Sequence<OUString> aCategories = xDescAccess->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), aCategories.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("category1"), aCategories[0]);
+ CPPUNIT_ASSERT_EQUAL(OUString("\"category2\""), aCategories[1]);
+ CPPUNIT_ASSERT_EQUAL(OUString("category\"3"), aCategories[2]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf146066)
+{
+ loadFromFile(u"ods/tdf146066.ods");
+ 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<drawing::XShape> xYAxisShape = getShapeByName(
+ xShapes, "CID/D=0:CS=0:Axis=1,0", // Y Axis
+ // 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(xYAxisShape.is());
+
+ // Check label count
+ uno::Reference<container::XIndexAccess> xIndexAccess(xYAxisShape, UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(8), xIndexAccess->getCount());
+
+ // Check text
+ uno::Reference<text::XTextRange> xLabel0(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("0"), xLabel0->getString());
+ uno::Reference<text::XTextRange> xLabel1(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("5"), xLabel1->getString());
+ uno::Reference<text::XTextRange> xLabel2(xIndexAccess->getByIndex(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("10"), xLabel2->getString());
+ uno::Reference<text::XTextRange> xLabel3(xIndexAccess->getByIndex(3), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("15"), xLabel3->getString());
+ uno::Reference<text::XTextRange> xLabel4(xIndexAccess->getByIndex(4), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("20"), xLabel4->getString());
+ uno::Reference<text::XTextRange> xLabel5(xIndexAccess->getByIndex(5), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("25"), xLabel5->getString());
+ uno::Reference<text::XTextRange> xLabel6(xIndexAccess->getByIndex(6), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("30"), xLabel6->getString());
+ uno::Reference<text::XTextRange> xLabel7(xIndexAccess->getByIndex(7), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("35"), xLabel7->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf150434)
+{
+ loadFromFile(u"xlsx/tdf150434.xlsx");
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xLegend = getShapeByName(xShapes, "CID/D=0:Legend=");
+ CPPUNIT_ASSERT(xLegend.is());
+ awt::Point aPosition = xLegend->getPosition();
+
+ // This failed, if the legend flowed out of the chart area.
+ CPPUNIT_ASSERT_GREATEREQUAL(static_cast<sal_Int32>(0), aPosition.Y);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testChartDataTableWithMultipleLegendEntriesForOneDataSeries)
+{
+ loadFromFile(u"xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx");
+ // Loading this file caused a crash in the data table code
+
+ Reference<chart::XChartDocument> xChartDoc(getChartDocFromSheet(0, mxComponent),
+ UNO_QUERY_THROW);
+ Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xChartDoc, UNO_QUERY_THROW);
+ Reference<drawing::XDrawPage> xDrawPage(xDrawPageSupplier->getDrawPage(), UNO_SET_THROW);
+ Reference<drawing::XShapes> xShapes(xDrawPage->getByIndex(0), UNO_QUERY_THROW);
+ Reference<drawing::XShape> xDataTableShape = getShapeByName(xShapes, "CID/D=0:DataTable=");
+ CPPUNIT_ASSERT(xDataTableShape.is());
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/charttest.hxx b/chart2/qa/extras/charttest.hxx
new file mode 100644
index 0000000000..db416affaa
--- /dev/null
+++ b/chart2/qa/extras/charttest.hxx
@@ -0,0 +1,605 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include <test/unoapixml_test.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/propertysequence.hxx>
+
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
+
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/table/XTableChartsSupplier.hpp>
+#include <com/sun/star/table/XTableChart.hpp>
+#include <com/sun/star/table/XTablePivotChartsSupplier.hpp>
+#include <com/sun/star/table/XTablePivotChart.hpp>
+#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+
+#include <o3tl/string_view.hxx>
+#include <unotools/tempfile.hxx>
+#include <rtl/math.hxx>
+#include <svx/charthelper.hxx>
+
+#include <com/sun/star/chart2/AxisType.hpp>
+#include <com/sun/star/chart2/XAnyDescriptionAccess.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/XChartTypeContainer.hpp>
+#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
+#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
+#include <com/sun/star/chart2/XFormattedString.hpp>
+#include <com/sun/star/chart2/XTitle.hpp>
+#include <com/sun/star/chart2/XTitled.hpp>
+#include <com/sun/star/chart2/data/XLabeledDataSequence.hpp>
+#include <com/sun/star/chart2/data/XDataSource.hpp>
+#include <com/sun/star/chart/XChartDataArray.hpp>
+#include <com/sun/star/chart2/XInternalDataProvider.hpp>
+#include <com/sun/star/chart/XDateCategories.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/util/NumberFormat.hpp>
+#include <com/sun/star/util/NumberFormatter.hpp>
+
+#include <unonames.hxx>
+
+#include <iostream>
+#include <memory>
+#include <string_view>
+
+#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/embed/XVisualObject.hpp>
+#include <com/sun/star/chart2/RelativeSize.hpp>
+
+using namespace css;
+using namespace css::uno;
+
+namespace com::sun::star::chart2 { class XDataSeries; }
+namespace com::sun::star::chart2 { class XDiagram; }
+namespace com::sun::star::table { class XTableCharts; }
+namespace com::sun::star::table { class XTablePivotCharts; }
+
+class ChartTest : public UnoApiXmlTest
+{
+public:
+ ChartTest(OUString path)
+ : UnoApiXmlTest(path)
+ {
+ }
+
+ uno::Sequence < OUString > getImpressChartColumnDescriptions(sal_Int32 nPage, sal_Int32 nShape);
+
+ uno::Reference<chart::XChartDocument> getChartDocFromDrawImpress( sal_Int32 nPage, sal_Int32 nShape );
+ uno::Reference<chart::XChartDocument> getChartDocFromDrawImpressNamed( sal_Int32 nPage, std::u16string_view rName);
+
+
+ uno::Reference<chart::XChartDocument> getChartDocFromWriter( sal_Int32 nShape );
+ Sequence< OUString > getFormattedDateCategories( const Reference<chart2::XChartDocument>& xChartDoc );
+ awt::Size getPageSize( const Reference< chart2::XChartDocument > & xChartDoc );
+ awt::Size getSize(css::uno::Reference<chart2::XDiagram> xDiagram, const awt::Size& rPageSize);
+};
+
+Reference< lang::XComponent > getChartCompFromSheet( sal_Int32 nSheet, sal_Int32 nChart, uno::Reference< lang::XComponent > const & xComponent )
+{
+ // let us assume that we only have one chart per sheet
+
+ uno::Reference< sheet::XSpreadsheetDocument > xDoc(xComponent, UNO_QUERY_THROW);
+
+ uno::Reference< container::XIndexAccess > xIA(xDoc->getSheets(), UNO_QUERY_THROW);
+
+ uno::Reference< table::XTableChartsSupplier > xChartSupplier( xIA->getByIndex(nSheet), UNO_QUERY_THROW);
+
+ uno::Reference< table::XTableCharts > xCharts = xChartSupplier->getCharts();
+ CPPUNIT_ASSERT(xCharts.is());
+
+ uno::Reference< container::XIndexAccess > xIACharts(xCharts, UNO_QUERY_THROW);
+ uno::Reference< table::XTableChart > xChart( xIACharts->getByIndex(nChart), UNO_QUERY_THROW);
+
+ uno::Reference< document::XEmbeddedObjectSupplier > xEmbObjectSupplier(xChart, UNO_QUERY_THROW);
+
+ uno::Reference< lang::XComponent > xChartComp( xEmbObjectSupplier->getEmbeddedObject(), UNO_SET_THROW );
+
+ return xChartComp;
+
+}
+
+Reference< chart2::XChartDocument > getChartDocFromSheet( sal_Int32 nSheet, uno::Reference< lang::XComponent > const & xComponent )
+{
+ uno::Reference< chart2::XChartDocument > xChartDoc ( getChartCompFromSheet(nSheet, 0, xComponent), UNO_QUERY_THROW );
+
+ // Update the chart view, so that its draw page is updated and ready for the test
+ css::uno::Reference<css::frame::XModel> xModel(xChartDoc, css::uno::UNO_QUERY_THROW);
+ ChartHelper::updateChart(xModel);
+
+ return xChartDoc;
+}
+
+uno::Reference<table::XTablePivotCharts> getTablePivotChartsFromSheet(sal_Int32 nSheet, uno::Reference<lang::XComponent> const & xComponent)
+{
+ uno::Reference<sheet::XSpreadsheetDocument> xDoc(xComponent, UNO_QUERY_THROW);
+
+ uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW);
+
+ uno::Reference<table::XTablePivotChartsSupplier> xChartSupplier(xIA->getByIndex(nSheet), UNO_QUERY_THROW);
+
+ uno::Reference<table::XTablePivotCharts> xTablePivotCharts = xChartSupplier->getPivotCharts();
+ CPPUNIT_ASSERT(xTablePivotCharts.is());
+
+ return xTablePivotCharts;
+}
+
+Reference<lang::XComponent> getPivotChartCompFromSheet(sal_Int32 nSheet, uno::Reference<lang::XComponent> const & xComponent)
+{
+ uno::Reference<table::XTablePivotCharts> xTablePivotCharts = getTablePivotChartsFromSheet(nSheet, xComponent);
+
+ uno::Reference<container::XIndexAccess> xIACharts(xTablePivotCharts, UNO_QUERY_THROW);
+ uno::Reference<table::XTablePivotChart> xTablePivotChart(xIACharts->getByIndex(0), UNO_QUERY_THROW);
+
+ uno::Reference<document::XEmbeddedObjectSupplier> xEmbObjectSupplier(xTablePivotChart, UNO_QUERY_THROW);
+
+ uno::Reference<lang::XComponent> xChartComp(xEmbObjectSupplier->getEmbeddedObject(), UNO_SET_THROW);
+
+ return xChartComp;
+}
+
+Reference<chart2::XChartDocument> getPivotChartDocFromSheet(sal_Int32 nSheet, uno::Reference<lang::XComponent> const & xComponent)
+{
+ uno::Reference<chart2::XChartDocument> xChartDoc(getPivotChartCompFromSheet(nSheet, xComponent), UNO_QUERY_THROW);
+ return xChartDoc;
+}
+
+Reference<chart2::XChartDocument> getPivotChartDocFromSheet(uno::Reference<table::XTablePivotCharts> const & xTablePivotCharts, sal_Int32 nIndex)
+{
+ uno::Reference<container::XIndexAccess> xIACharts(xTablePivotCharts, UNO_QUERY_THROW);
+ uno::Reference<table::XTablePivotChart> xTablePivotChart(xIACharts->getByIndex(nIndex), UNO_QUERY_THROW);
+
+ uno::Reference<document::XEmbeddedObjectSupplier> xEmbObjectSupplier(xTablePivotChart, UNO_QUERY_THROW);
+
+ uno::Reference<lang::XComponent> xChartComp(xEmbObjectSupplier->getEmbeddedObject(), UNO_SET_THROW);
+
+ uno::Reference<chart2::XChartDocument> xChartDoc(xChartComp, UNO_QUERY_THROW);
+ return xChartDoc;
+}
+
+Reference< chart2::XChartType > getChartTypeFromDoc( Reference< chart2::XChartDocument > const & xChartDoc,
+ sal_Int32 nChartType, sal_Int32 nCooSys = 0 )
+{
+ CPPUNIT_ASSERT( xChartDoc.is() );
+
+ Reference <chart2::XDiagram > xDiagram = xChartDoc->getFirstDiagram();
+ CPPUNIT_ASSERT( xDiagram.is() );
+
+ Reference< chart2::XCoordinateSystemContainer > xCooSysContainer( xDiagram, UNO_QUERY_THROW );
+
+ Sequence< Reference< chart2::XCoordinateSystem > > xCooSysSequence( xCooSysContainer->getCoordinateSystems());
+ CPPUNIT_ASSERT( xCooSysSequence.getLength() > nCooSys );
+
+ Reference< chart2::XChartTypeContainer > xChartTypeContainer( xCooSysSequence[nCooSys], UNO_QUERY_THROW );
+
+ Sequence< Reference< chart2::XChartType > > xChartTypeSequence( xChartTypeContainer->getChartTypes() );
+ CPPUNIT_ASSERT( xChartTypeSequence.getLength() > nChartType );
+
+ return xChartTypeSequence[nChartType];
+}
+
+Reference<chart2::XAxis> getAxisFromDoc(
+ const Reference<chart2::XChartDocument>& xChartDoc, sal_Int32 nCooSys, sal_Int32 nAxisDim, sal_Int32 nAxisIndex )
+{
+ Reference<chart2::XDiagram> xDiagram = xChartDoc->getFirstDiagram();
+ CPPUNIT_ASSERT(xDiagram.is());
+
+ Reference<chart2::XCoordinateSystemContainer> xCooSysContainer(xDiagram, UNO_QUERY_THROW);
+
+ Sequence<Reference<chart2::XCoordinateSystem> > xCooSysSequence = xCooSysContainer->getCoordinateSystems();
+ CPPUNIT_ASSERT(xCooSysSequence.getLength() > nCooSys);
+
+ Reference<chart2::XCoordinateSystem> xCoord = xCooSysSequence[nCooSys];
+ CPPUNIT_ASSERT(xCoord.is());
+
+ Reference<chart2::XAxis> xAxis = xCoord->getAxisByDimension(nAxisDim, nAxisIndex);
+ CPPUNIT_ASSERT(xAxis.is());
+
+ return xAxis;
+}
+
+sal_Int32 getNumberOfDataSeries(uno::Reference<chart2::XChartDocument> const & xChartDoc,
+ sal_Int32 nChartType = 0, sal_Int32 nCooSys = 0)
+{
+ Reference<chart2::XChartType> xChartType = getChartTypeFromDoc(xChartDoc, nChartType, nCooSys);
+ Reference<chart2::XDataSeriesContainer> xDataSeriesContainer(xChartType, UNO_QUERY_THROW);
+
+ uno::Sequence<uno::Reference<chart2::XDataSeries>> xSeriesSequence(xDataSeriesContainer->getDataSeries());
+ return xSeriesSequence.getLength();
+}
+
+Reference< chart2::XDataSeries > getDataSeriesFromDoc(uno::Reference<chart2::XChartDocument> const & xChartDoc,
+ sal_Int32 nDataSeries, sal_Int32 nChartType = 0,
+ sal_Int32 nCooSys = 0)
+{
+ Reference< chart2::XChartType > xChartType = getChartTypeFromDoc( xChartDoc, nChartType, nCooSys );
+ Reference< chart2::XDataSeriesContainer > xDataSeriesContainer( xChartType, UNO_QUERY_THROW );
+
+ Sequence< Reference< chart2::XDataSeries > > xSeriesSequence( xDataSeriesContainer->getDataSeries() );
+ CPPUNIT_ASSERT( xSeriesSequence.getLength() > nDataSeries );
+
+ Reference< chart2::XDataSeries > xSeries = xSeriesSequence[nDataSeries];
+
+ return xSeries;
+}
+
+Reference< chart2::data::XDataSequence > getLabelDataSequenceFromDoc(
+ Reference< chart2::XChartDocument > const & xChartDoc,
+ sal_Int32 nDataSeries = 0, sal_Int32 nChartType = 0 )
+{
+ Reference< chart2::XDataSeries > xDataSeries =
+ getDataSeriesFromDoc( xChartDoc, nDataSeries, nChartType );
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference< chart2::data::XDataSource > xDataSource( xDataSeries, uno::UNO_QUERY_THROW );
+ const Sequence< Reference< chart2::data::XLabeledDataSequence > > xDataSequences =
+ xDataSource->getDataSequences();
+ for(auto const & lds : xDataSequences)
+ {
+ Reference< chart2::data::XDataSequence> xLabelSeq = lds->getLabel();
+ if(!xLabelSeq.is())
+ continue;
+
+ return xLabelSeq;
+ }
+
+ CPPUNIT_FAIL("no Label sequence found");
+}
+
+Reference< chart2::data::XDataSequence > getDataSequenceFromDocByRole(
+ Reference< chart2::XChartDocument > const & xChartDoc, std::u16string_view rRole,
+ sal_Int32 nDataSeries = 0, sal_Int32 nChartType = 0 )
+{
+ Reference< chart2::XDataSeries > xDataSeries =
+ getDataSeriesFromDoc( xChartDoc, nDataSeries, nChartType );
+ CPPUNIT_ASSERT(xDataSeries.is());
+ Reference< chart2::data::XDataSource > xDataSource( xDataSeries, uno::UNO_QUERY_THROW );
+ const Sequence< Reference< chart2::data::XLabeledDataSequence > > xDataSequences =
+ xDataSource->getDataSequences();
+ for(auto const & lds : xDataSequences)
+ {
+ Reference< chart2::data::XDataSequence> xLabelSeq = lds->getValues();
+ uno::Reference< beans::XPropertySet > xProps(xLabelSeq, uno::UNO_QUERY);
+ if(!xProps.is())
+ continue;
+
+ OUString aRoleName = xProps->getPropertyValue("Role").get<OUString>();
+
+ if(aRoleName == rRole)
+ return xLabelSeq;
+ }
+
+ return Reference< chart2::data::XDataSequence > ();
+}
+
+uno::Sequence < OUString > getWriterChartColumnDescriptions( Reference< lang::XComponent > const & mxComponent )
+{
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ uno::Reference<drawing::XShape> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT( xShape.is() );
+ uno::Reference<beans::XPropertySet> xPropertySet(xShape, uno::UNO_QUERY);
+ uno::Reference< chart2::XChartDocument > xChartDoc;
+ xChartDoc.set( xPropertySet->getPropertyValue( "Model" ), uno::UNO_QUERY );
+ CPPUNIT_ASSERT( xChartDoc.is() );
+ CPPUNIT_ASSERT( xChartDoc->getDataProvider().is() );
+ uno::Reference< chart2::XAnyDescriptionAccess > xAnyDescriptionAccess ( xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW );
+ uno::Sequence< OUString > seriesList = xAnyDescriptionAccess->getColumnDescriptions();
+ return seriesList;
+}
+
+std::vector<std::vector<double> > getDataSeriesYValuesFromChartType( const Reference<chart2::XChartType>& xCT )
+{
+ Reference<chart2::XDataSeriesContainer> xDSCont(xCT, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDSCont.is());
+ const Sequence<uno::Reference<chart2::XDataSeries> > aDataSeriesSeq = xDSCont->getDataSeries();
+
+ std::vector<std::vector<double> > aRet;
+ for (uno::Reference<chart2::XDataSeries> const & ds : aDataSeriesSeq)
+ {
+ uno::Reference<chart2::data::XDataSource> xDSrc(ds, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDSrc.is());
+ const uno::Sequence<Reference<chart2::data::XLabeledDataSequence> > aDataSeqs = xDSrc->getDataSequences();
+ for (auto const & lds : aDataSeqs)
+ {
+ Reference<chart2::data::XDataSequence> xValues = lds->getValues();
+ CPPUNIT_ASSERT(xValues.is());
+ Reference<beans::XPropertySet> xPropSet(xValues, uno::UNO_QUERY);
+ if (!xPropSet.is())
+ continue;
+
+ OUString aRoleName;
+ xPropSet->getPropertyValue("Role") >>= aRoleName;
+ if (aRoleName == "values-y")
+ {
+ const uno::Sequence<uno::Any> aData = xValues->getData();
+ std::vector<double> aValues;
+ aValues.reserve(aData.getLength());
+ for (uno::Any const & any : aData)
+ {
+ double fVal;
+ if (any >>= fVal)
+ aValues.push_back(fVal);
+ else
+ aValues.push_back(std::numeric_limits<double>::quiet_NaN());
+ }
+ aRet.push_back(aValues);
+ }
+ }
+ }
+
+ return aRet;
+}
+
+std::vector<uno::Sequence<uno::Any> > getDataSeriesLabelsFromChartType( const Reference<chart2::XChartType>& xCT )
+{
+ OUString aLabelRole = xCT->getRoleOfSequenceForSeriesLabel();
+
+ Reference<chart2::XDataSeriesContainer> xDSCont(xCT, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDSCont.is());
+ const Sequence<uno::Reference<chart2::XDataSeries> > aDataSeriesSeq = xDSCont->getDataSeries();
+
+ std::vector<uno::Sequence<uno::Any> > aRet;
+ for (auto const & ds : aDataSeriesSeq)
+ {
+ uno::Reference<chart2::data::XDataSource> xDSrc(ds, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xDSrc.is());
+ const uno::Sequence<Reference<chart2::data::XLabeledDataSequence> > aDataSeqs = xDSrc->getDataSequences();
+ for (auto const & lds : aDataSeqs)
+ {
+ Reference<chart2::data::XDataSequence> xValues = lds->getValues();
+ CPPUNIT_ASSERT(xValues.is());
+ Reference<beans::XPropertySet> xPropSet(xValues, uno::UNO_QUERY);
+ if (!xPropSet.is())
+ continue;
+
+ OUString aRoleName;
+ xPropSet->getPropertyValue("Role") >>= aRoleName;
+ if (aRoleName == aLabelRole)
+ {
+ Reference<chart2::data::XLabeledDataSequence> xLabel = lds;
+ CPPUNIT_ASSERT(xLabel.is());
+ Reference<chart2::data::XDataSequence> xDS2 = xLabel->getLabel();
+ CPPUNIT_ASSERT(xDS2.is());
+ uno::Sequence<uno::Any> aData = xDS2->getData();
+ aRet.push_back(aData);
+ }
+ }
+ }
+
+ return aRet;
+}
+
+uno::Reference<chart::XChartDocument> ChartTest::getChartDocFromDrawImpress(
+ sal_Int32 nPage, sal_Int32 nShape )
+{
+ uno::Reference<chart::XChartDocument> xEmpty;
+
+ uno::Reference<drawing::XDrawPagesSupplier> xPages(mxComponent, uno::UNO_QUERY);
+ if (!xPages.is())
+ return xEmpty;
+
+ uno::Reference<drawing::XDrawPage> xPage(
+ xPages->getDrawPages()->getByIndex(nPage), uno::UNO_QUERY_THROW);
+
+ uno::Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(nShape), uno::UNO_QUERY);
+ if (!xShapeProps.is())
+ return xEmpty;
+
+ uno::Reference<frame::XModel> xDocModel;
+ xShapeProps->getPropertyValue("Model") >>= xDocModel;
+ if (!xDocModel.is())
+ return xEmpty;
+
+ uno::Reference<chart::XChartDocument> xChartDoc(xDocModel, uno::UNO_QUERY);
+ return xChartDoc;
+}
+
+uno::Reference<chart::XChartDocument> ChartTest::getChartDocFromDrawImpressNamed(sal_Int32 nPage, std::u16string_view rName)
+{
+ uno::Reference<chart::XChartDocument> xChart;
+
+ uno::Reference<drawing::XDrawPagesSupplier> xPages(mxComponent, uno::UNO_QUERY);
+ if (!xPages.is())
+ return xChart;
+
+ uno::Reference<drawing::XDrawPage> xPage(xPages->getDrawPages()->getByIndex(nPage), uno::UNO_QUERY);
+ if (!xPage.is())
+ return xChart;
+
+ for (sal_Int32 i=0; i < xPage->getCount(); ++i)
+ {
+ uno::Reference<container::XNamed> xNamedShape(xPage->getByIndex(i), uno::UNO_QUERY);
+ if (!xNamedShape.is())
+ continue;
+
+ if (xNamedShape->getName() != rName)
+ continue;
+
+ uno::Reference<beans::XPropertySet> xShapeProps(xNamedShape, uno::UNO_QUERY);
+ if (!xShapeProps.is())
+ continue;
+
+ uno::Reference<frame::XModel> xDocModel;
+ xShapeProps->getPropertyValue("Model") >>= xDocModel;
+ if (!xDocModel.is())
+ continue;
+
+ return uno::Reference<chart::XChartDocument>(xDocModel, uno::UNO_QUERY);
+ }
+
+ return xChart;
+}
+
+uno::Reference<chart::XChartDocument> ChartTest::getChartDocFromWriter( sal_Int32 nShape )
+{
+ // DO NOT use XDrawPageSupplier since SwVirtFlyDrawObj are not created
+ // during import, only in layout!
+ Reference<text::XTextEmbeddedObjectsSupplier> xEOS(mxComponent, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xEOS.is());
+ Reference<container::XIndexAccess> xEmbeddeds(xEOS->getEmbeddedObjects(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xEmbeddeds.is());
+
+ Reference<beans::XPropertySet> xShapeProps(xEmbeddeds->getByIndex(nShape), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xShapeProps.is());
+
+ Reference<frame::XModel> xDocModel;
+ xShapeProps->getPropertyValue("Model") >>= xDocModel;
+ CPPUNIT_ASSERT(xDocModel.is());
+
+ uno::Reference<chart::XChartDocument> xChartDoc(xDocModel, uno::UNO_QUERY);
+ return xChartDoc;
+}
+
+uno::Sequence < OUString > ChartTest::getImpressChartColumnDescriptions(sal_Int32 nPage, sal_Int32 nShape)
+{
+ uno::Reference< chart::XChartDocument > xChartDoc = getChartDocFromDrawImpress( nPage, nShape );
+ uno::Reference< chart::XChartDataArray > xChartData ( xChartDoc->getData(), uno::UNO_QUERY_THROW);
+ uno::Sequence < OUString > seriesList = xChartData->getColumnDescriptions();
+ return seriesList;
+}
+
+OUString getTitleString( const Reference<chart2::XTitled>& xTitled )
+{
+ uno::Reference<chart2::XTitle> xTitle = xTitled->getTitleObject();
+ CPPUNIT_ASSERT(xTitle.is());
+ const uno::Sequence<uno::Reference<chart2::XFormattedString> > aFSSeq = xTitle->getText();
+ OUString aText;
+ for (auto const & fs : aFSSeq)
+ aText += fs->getString();
+
+ return aText;
+}
+
+sal_Int32 getNumberFormat( const Reference<chart2::XChartDocument>& xChartDoc, const OUString& sFormat )
+{
+ Reference<util::XNumberFormatsSupplier> xNFS(xChartDoc, uno::UNO_QUERY_THROW);
+ Reference<util::XNumberFormats> xNumberFormats = xNFS->getNumberFormats();
+ CPPUNIT_ASSERT(xNumberFormats.is());
+
+ return xNumberFormats->queryKey(sFormat, css::lang::Locale(), false);
+}
+
+sal_Int32 getNumberFormatFromAxis( const Reference<chart2::XAxis>& xAxis )
+{
+ Reference<beans::XPropertySet> xPS(xAxis, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xPS.is());
+ sal_Int32 nNumberFormat = -1;
+ bool bSuccess = xPS->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormat;
+ CPPUNIT_ASSERT(bSuccess);
+
+ return nNumberFormat;
+}
+
+sal_Int16 getNumberFormatType( const Reference<chart2::XChartDocument>& xChartDoc, sal_Int32 nNumberFormat )
+{
+ Reference<util::XNumberFormatsSupplier> xNFS(xChartDoc, uno::UNO_QUERY_THROW);
+ Reference<util::XNumberFormats> xNumberFormats = xNFS->getNumberFormats();
+ CPPUNIT_ASSERT(xNumberFormats.is());
+
+ Reference<beans::XPropertySet> xNumPS = xNumberFormats->getByKey(nNumberFormat);
+ CPPUNIT_ASSERT(xNumPS.is());
+
+ sal_Int16 nType = util::NumberFormat::UNDEFINED;
+ xNumPS->getPropertyValue("Type") >>= nType;
+
+ return nType;
+}
+
+Sequence< double > getDateCategories(const Reference<chart2::XChartDocument>& xChartDoc)
+{
+ CPPUNIT_ASSERT(xChartDoc->hasInternalDataProvider());
+ uno::Reference< chart2::XInternalDataProvider > xDataProvider( xChartDoc->getDataProvider(), uno::UNO_QUERY_THROW );
+ uno::Reference< chart::XDateCategories > xDateCategories( xDataProvider, uno::UNO_QUERY_THROW );
+ CPPUNIT_ASSERT(xDateCategories.is());
+ return xDateCategories->getDateCategories();
+}
+
+Sequence< OUString > ChartTest::getFormattedDateCategories( const Reference<chart2::XChartDocument>& xChartDoc )
+{
+ Reference<util::XNumberFormatsSupplier> xNFS(xChartDoc, uno::UNO_QUERY_THROW);
+ Reference< util::XNumberFormatter > xNumFormatter(
+ util::NumberFormatter::create(comphelper::getComponentContext(m_xSFactory)), uno::UNO_QUERY_THROW );
+ xNumFormatter->attachNumberFormatsSupplier(xNFS);
+
+ Reference<chart2::XAxis> xAxisX = getAxisFromDoc(xChartDoc, 0, 0, 0);
+ chart2::ScaleData aScaleData = xAxisX->getScaleData();
+ CPPUNIT_ASSERT_EQUAL(chart2::AxisType::DATE, aScaleData.AxisType);
+
+ sal_Int32 nNumFmt = getNumberFormatFromAxis(xAxisX);
+
+ Sequence<double> aDateSeq = getDateCategories(xChartDoc);
+ const sal_Int32 nNumCategories = aDateSeq.getLength();
+ Sequence<OUString> aFormattedDates(nNumCategories);
+ auto aFormattedDatesRange = asNonConstRange(aFormattedDates);
+
+ for (sal_Int32 nIdx = 0; nIdx < nNumCategories; ++nIdx)
+ aFormattedDatesRange[nIdx] = xNumFormatter->convertNumberToString(nNumFmt, aDateSeq[nIdx]);
+
+ return aFormattedDates;
+}
+
+awt::Size ChartTest::getPageSize( const Reference< chart2::XChartDocument > & xChartDoc )
+{
+ awt::Size aSize( 0, 0 );
+ uno::Reference< com::sun::star::embed::XVisualObject > xVisualObject( xChartDoc, uno::UNO_QUERY );
+ CPPUNIT_ASSERT( xVisualObject.is() );
+ aSize = xVisualObject->getVisualAreaSize( com::sun::star::embed::Aspects::MSOLE_CONTENT );
+ return aSize;
+}
+
+awt::Size ChartTest::getSize(css::uno::Reference<chart2::XDiagram> xDiagram, const awt::Size& rPageSize)
+{
+ Reference< beans::XPropertySet > xProp(xDiagram, uno::UNO_QUERY);
+ chart2::RelativeSize aRelativeSize;
+ xProp->getPropertyValue( "RelativeSize" ) >>= aRelativeSize;
+ double fX = aRelativeSize.Primary * rPageSize.Width;
+ double fY = aRelativeSize.Secondary * rPageSize.Height;
+ awt::Size aSize;
+ aSize.Width = static_cast< sal_Int32 >( ::rtl::math::round( fX ) );
+ aSize.Height = static_cast< sal_Int32 >( ::rtl::math::round( fY ) );
+ return aSize;
+}
+
+uno::Reference<drawing::XShape>
+getShapeByName(const uno::Reference<drawing::XShapes>& rShapes, const OUString& rName,
+ const std::function<bool(const uno::Reference<drawing::XShape>&)>& pCondition
+ = nullptr)
+{
+ for (sal_Int32 i = 0; i < rShapes->getCount(); ++i)
+ {
+ uno::Reference<drawing::XShapes> xShapes(rShapes->getByIndex(i), uno::UNO_QUERY);
+ if (xShapes.is())
+ {
+ uno::Reference<drawing::XShape> xRet = getShapeByName(xShapes, rName, pCondition);
+ if (xRet.is())
+ return xRet;
+ }
+ uno::Reference<container::XNamed> xNamedShape(rShapes->getByIndex(i), uno::UNO_QUERY);
+ if (xNamedShape->getName() == rName)
+ {
+ uno::Reference<drawing::XShape> xShape(xNamedShape, uno::UNO_QUERY);
+ if (pCondition == nullptr || pCondition(xShape))
+ return xShape;
+ }
+ }
+ return uno::Reference<drawing::XShape>();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/data/doc/chart.doc b/chart2/qa/extras/data/doc/chart.doc
new file mode 100644
index 0000000000..2bfa5aed2c
--- /dev/null
+++ b/chart2/qa/extras/data/doc/chart.doc
Binary files differ
diff --git a/chart2/qa/extras/data/docx/3d-bar-label.docx b/chart2/qa/extras/data/docx/3d-bar-label.docx
new file mode 100644
index 0000000000..69cab8e719
--- /dev/null
+++ b/chart2/qa/extras/data/docx/3d-bar-label.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/Bar_horizontal_cone.docx b/chart2/qa/extras/data/docx/Bar_horizontal_cone.docx
new file mode 100644
index 0000000000..2280d89fc1
--- /dev/null
+++ b/chart2/qa/extras/data/docx/Bar_horizontal_cone.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/DisplayUnits.docx b/chart2/qa/extras/data/docx/DisplayUnits.docx
new file mode 100644
index 0000000000..97092a3ed6
--- /dev/null
+++ b/chart2/qa/extras/data/docx/DisplayUnits.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/FDO74430.docx b/chart2/qa/extras/data/docx/FDO74430.docx
new file mode 100644
index 0000000000..f4a68b519d
--- /dev/null
+++ b/chart2/qa/extras/data/docx/FDO74430.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/FDO75975.docx b/chart2/qa/extras/data/docx/FDO75975.docx
new file mode 100644
index 0000000000..30f251014b
--- /dev/null
+++ b/chart2/qa/extras/data/docx/FDO75975.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docx b/chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docx
new file mode 100644
index 0000000000..c158a0d765
--- /dev/null
+++ b/chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/MSO_axis_position.docx b/chart2/qa/extras/data/docx/MSO_axis_position.docx
new file mode 100644
index 0000000000..a9955b7b1a
--- /dev/null
+++ b/chart2/qa/extras/data/docx/MSO_axis_position.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/PieChartDataLabels.docx b/chart2/qa/extras/data/docx/PieChartDataLabels.docx
new file mode 100644
index 0000000000..99a72c0f29
--- /dev/null
+++ b/chart2/qa/extras/data/docx/PieChartDataLabels.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/TableOnPage3.docx b/chart2/qa/extras/data/docx/TableOnPage3.docx
new file mode 100644
index 0000000000..79763bd352
--- /dev/null
+++ b/chart2/qa/extras/data/docx/TableOnPage3.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/UpDownBars.docx b/chart2/qa/extras/data/docx/UpDownBars.docx
new file mode 100644
index 0000000000..755f814996
--- /dev/null
+++ b/chart2/qa/extras/data/docx/UpDownBars.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/area-chart-labels.docx b/chart2/qa/extras/data/docx/area-chart-labels.docx
new file mode 100644
index 0000000000..4db844112d
--- /dev/null
+++ b/chart2/qa/extras/data/docx/area-chart-labels.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/bar-chart-labels.docx b/chart2/qa/extras/data/docx/bar-chart-labels.docx
new file mode 100644
index 0000000000..9ff8b4fd17
--- /dev/null
+++ b/chart2/qa/extras/data/docx/bar-chart-labels.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/barChartRotation.docx b/chart2/qa/extras/data/docx/barChartRotation.docx
new file mode 100644
index 0000000000..bf4be47b34
--- /dev/null
+++ b/chart2/qa/extras/data/docx/barChartRotation.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/bubblechart.docx b/chart2/qa/extras/data/docx/bubblechart.docx
new file mode 100644
index 0000000000..c2040730cf
--- /dev/null
+++ b/chart2/qa/extras/data/docx/bubblechart.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/chart.docx b/chart2/qa/extras/data/docx/chart.docx
new file mode 100644
index 0000000000..f9cddd4949
--- /dev/null
+++ b/chart2/qa/extras/data/docx/chart.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/clustered-bar-chart-labels.docx b/chart2/qa/extras/data/docx/clustered-bar-chart-labels.docx
new file mode 100644
index 0000000000..3b9941cc1e
--- /dev/null
+++ b/chart2/qa/extras/data/docx/clustered-bar-chart-labels.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/data-label-borders.docx b/chart2/qa/extras/data/docx/data-label-borders.docx
new file mode 100644
index 0000000000..6f2b94d98e
--- /dev/null
+++ b/chart2/qa/extras/data/docx/data-label-borders.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/data_point_inherited_color.docx b/chart2/qa/extras/data/docx/data_point_inherited_color.docx
new file mode 100644
index 0000000000..70de8b2188
--- /dev/null
+++ b/chart2/qa/extras/data/docx/data_point_inherited_color.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/doughnut-chart-labels.docx b/chart2/qa/extras/data/docx/doughnut-chart-labels.docx
new file mode 100644
index 0000000000..559208578f
--- /dev/null
+++ b/chart2/qa/extras/data/docx/doughnut-chart-labels.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/doughnutChart.docx b/chart2/qa/extras/data/docx/doughnutChart.docx
new file mode 100644
index 0000000000..f0642d4d5c
--- /dev/null
+++ b/chart2/qa/extras/data/docx/doughnutChart.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docx b/chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docx
new file mode 100644
index 0000000000..15f42b0cf3
--- /dev/null
+++ b/chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docx b/chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docx
new file mode 100644
index 0000000000..e10334bd9a
--- /dev/null
+++ b/chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/fdo78290_Combination_Chart_Marker_x.docx b/chart2/qa/extras/data/docx/fdo78290_Combination_Chart_Marker_x.docx
new file mode 100644
index 0000000000..ee2489d21a
--- /dev/null
+++ b/chart2/qa/extras/data/docx/fdo78290_Combination_Chart_Marker_x.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/fdo78290_Line_Chart_Marker_x.docx b/chart2/qa/extras/data/docx/fdo78290_Line_Chart_Marker_x.docx
new file mode 100644
index 0000000000..7e4b096b83
--- /dev/null
+++ b/chart2/qa/extras/data/docx/fdo78290_Line_Chart_Marker_x.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/fdo78290_Scatter_Chart_Marker_x.docx b/chart2/qa/extras/data/docx/fdo78290_Scatter_Chart_Marker_x.docx
new file mode 100644
index 0000000000..2edc8f0862
--- /dev/null
+++ b/chart2/qa/extras/data/docx/fdo78290_Scatter_Chart_Marker_x.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/fdo83058_dlblPos.docx b/chart2/qa/extras/data/docx/fdo83058_dlblPos.docx
new file mode 100644
index 0000000000..721a717897
--- /dev/null
+++ b/chart2/qa/extras/data/docx/fdo83058_dlblPos.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/line-chart-label-default-placement.docx b/chart2/qa/extras/data/docx/line-chart-label-default-placement.docx
new file mode 100644
index 0000000000..ab9548d59c
--- /dev/null
+++ b/chart2/qa/extras/data/docx/line-chart-label-default-placement.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/pieChartRotation.docx b/chart2/qa/extras/data/docx/pieChartRotation.docx
new file mode 100644
index 0000000000..f76f602374
--- /dev/null
+++ b/chart2/qa/extras/data/docx/pieChartRotation.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docx b/chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docx
new file mode 100644
index 0000000000..da6b2fa19a
--- /dev/null
+++ b/chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/radar-chart-labels.docx b/chart2/qa/extras/data/docx/radar-chart-labels.docx
new file mode 100644
index 0000000000..2cb876dd26
--- /dev/null
+++ b/chart2/qa/extras/data/docx/radar-chart-labels.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/scatter-chart-text-x-values.docx b/chart2/qa/extras/data/docx/scatter-chart-text-x-values.docx
new file mode 100644
index 0000000000..b741bbce21
--- /dev/null
+++ b/chart2/qa/extras/data/docx/scatter-chart-text-x-values.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf121744.docx b/chart2/qa/extras/data/docx/tdf121744.docx
new file mode 100644
index 0000000000..b5ff10098c
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf121744.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf123206.docx b/chart2/qa/extras/data/docx/tdf123206.docx
new file mode 100644
index 0000000000..f47089fe3b
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf123206.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf124083.docx b/chart2/qa/extras/data/docx/tdf124083.docx
new file mode 100644
index 0000000000..b8030ca9a8
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf124083.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf124243.docx b/chart2/qa/extras/data/docx/tdf124243.docx
new file mode 100644
index 0000000000..e58ef6a02e
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf124243.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf125337.docx b/chart2/qa/extras/data/docx/tdf125337.docx
new file mode 100644
index 0000000000..811f12d898
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf125337.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf128794.docx b/chart2/qa/extras/data/docx/tdf128794.docx
new file mode 100644
index 0000000000..098c0a00e3
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf128794.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf132174.docx b/chart2/qa/extras/data/docx/tdf132174.docx
new file mode 100644
index 0000000000..4f43695784
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf132174.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf133632.docx b/chart2/qa/extras/data/docx/tdf133632.docx
new file mode 100644
index 0000000000..b970e73f4c
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf133632.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf134111.docx b/chart2/qa/extras/data/docx/tdf134111.docx
new file mode 100644
index 0000000000..26e3a03e0b
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf134111.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf134255.docx b/chart2/qa/extras/data/docx/tdf134255.docx
new file mode 100644
index 0000000000..ff3cd8b67b
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf134255.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf136650.docx b/chart2/qa/extras/data/docx/tdf136650.docx
new file mode 100644
index 0000000000..cd095ec631
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf136650.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf139658.docx b/chart2/qa/extras/data/docx/tdf139658.docx
new file mode 100644
index 0000000000..59deda9f83
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf139658.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf143130.docx b/chart2/qa/extras/data/docx/tdf143130.docx
new file mode 100644
index 0000000000..a364f4811a
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf143130.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/tdf91250.docx b/chart2/qa/extras/data/docx/tdf91250.docx
new file mode 100644
index 0000000000..4cb199b457
--- /dev/null
+++ b/chart2/qa/extras/data/docx/tdf91250.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testAreaChartLoad.docx b/chart2/qa/extras/data/docx/testAreaChartLoad.docx
new file mode 100644
index 0000000000..9383f75cde
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testAreaChartLoad.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testAxisTitlePosition.docx b/chart2/qa/extras/data/docx/testAxisTitlePosition.docx
new file mode 100644
index 0000000000..6abd37eec5
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testAxisTitlePosition.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testBarChart.docx b/chart2/qa/extras/data/docx/testBarChart.docx
new file mode 100644
index 0000000000..b92260f718
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testBarChart.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docx b/chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docx
new file mode 100644
index 0000000000..66df9153d3
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testChartDataTable.docx b/chart2/qa/extras/data/docx/testChartDataTable.docx
new file mode 100644
index 0000000000..8663e8937e
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testChartDataTable.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docx b/chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docx
new file mode 100644
index 0000000000..462c15976a
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docx b/chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docx
new file mode 100644
index 0000000000..d86928d615
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docx b/chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docx
new file mode 100644
index 0000000000..a72600d09e
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testColorGradientWithTransparency.docx b/chart2/qa/extras/data/docx/testColorGradientWithTransparency.docx
new file mode 100644
index 0000000000..adc2aff042
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testColorGradientWithTransparency.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testCustomlabeltext.docx b/chart2/qa/extras/data/docx/testCustomlabeltext.docx
new file mode 100644
index 0000000000..db28209c9c
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testCustomlabeltext.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testLabelSeparator.docx b/chart2/qa/extras/data/docx/testLabelSeparator.docx
new file mode 100644
index 0000000000..452fdccc94
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testLabelSeparator.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docx b/chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docx
new file mode 100644
index 0000000000..75605de72f
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testMultipleChart.docx b/chart2/qa/extras/data/docx/testMultipleChart.docx
new file mode 100644
index 0000000000..28d8bbcfe1
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testMultipleChart.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testMultiplechartembeddings.docx b/chart2/qa/extras/data/docx/testMultiplechartembeddings.docx
new file mode 100644
index 0000000000..28d8bbcfe1
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testMultiplechartembeddings.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testSeriesIdxOrder.docx b/chart2/qa/extras/data/docx/testSeriesIdxOrder.docx
new file mode 100644
index 0000000000..9274e2c2c2
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testSeriesIdxOrder.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testSimpleCategoryAxis.docx b/chart2/qa/extras/data/docx/testSimpleCategoryAxis.docx
new file mode 100644
index 0000000000..de511664a5
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testSimpleCategoryAxis.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testStockChart.docx b/chart2/qa/extras/data/docx/testStockChart.docx
new file mode 100644
index 0000000000..a804e7df2d
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testStockChart.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testTdf108110.docx b/chart2/qa/extras/data/docx/testTdf108110.docx
new file mode 100644
index 0000000000..769360c152
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testTdf108110.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testTdf114179.docx b/chart2/qa/extras/data/docx/testTdf114179.docx
new file mode 100644
index 0000000000..36fb11e170
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testTdf114179.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testTdf122226.docx b/chart2/qa/extras/data/docx/testTdf122226.docx
new file mode 100644
index 0000000000..7205525a76
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testTdf122226.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testchartoleobjectembeddings.docx b/chart2/qa/extras/data/docx/testchartoleobjectembeddings.docx
new file mode 100644
index 0000000000..8167de7a35
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testchartoleobjectembeddings.docx
Binary files differ
diff --git a/chart2/qa/extras/data/docx/testcustomshapepos.docx b/chart2/qa/extras/data/docx/testcustomshapepos.docx
new file mode 100644
index 0000000000..640c48ea46
--- /dev/null
+++ b/chart2/qa/extras/data/docx/testcustomshapepos.docx
Binary files differ
diff --git a/chart2/qa/extras/data/fods/stacked-column-chart.fods b/chart2/qa/extras/data/fods/stacked-column-chart.fods
new file mode 100644
index 0000000000..8a142120ba
--- /dev/null
+++ b/chart2/qa/extras/data/fods/stacked-column-chart.fods
@@ -0,0 +1,861 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
+ <office:meta><meta:initial-creator>Michael Meeks</meta:initial-creator><meta:creation-date>2014-06-05T11:25:47.346574464</meta:creation-date><dc:date>2014-06-05T11:32:25.317381922</dc:date><dc:creator>Michael Meeks</dc:creator><meta:editing-duration>PT3M51S</meta:editing-duration><meta:editing-cycles>6</meta:editing-cycles><meta:generator>LibreOffice/3.5$Linux_X86_64 LibreOffice_project/f647884-246edd6</meta:generator><meta:document-statistic meta:table-count="2" meta:cell-count="27" meta:object-count="1"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="VisibleAreaTop" config:type="int">0</config:config-item>
+ <config:config-item config:name="VisibleAreaLeft" config:type="int">0</config:config-item>
+ <config:config-item config:name="VisibleAreaWidth" config:type="int">27093</config:config-item>
+ <config:config-item config:name="VisibleAreaHeight" config:type="int">9934</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view1</config:config-item>
+ <config:config-item-map-named config:name="Tables">
+ <config:config-item-map-entry config:name="Data">
+ <config:config-item config:name="CursorPositionX" config:type="int">1</config:config-item>
+ <config:config-item config:name="CursorPositionY" config:type="int">0</config:config-item>
+ <config:config-item config:name="HorizontalSplitMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="VerticalSplitMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="HorizontalSplitPosition" config:type="int">0</config:config-item>
+ <config:config-item config:name="VerticalSplitPosition" config:type="int">0</config:config-item>
+ <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
+ <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionBottom" config:type="int">0</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ZoomValue" config:type="int">130</config:config-item>
+ <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ </config:config-item-map-entry>
+ <config:config-item-map-entry config:name="Summary">
+ <config:config-item config:name="CursorPositionX" config:type="int">1</config:config-item>
+ <config:config-item config:name="CursorPositionY" config:type="int">16</config:config-item>
+ <config:config-item config:name="HorizontalSplitMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="VerticalSplitMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="HorizontalSplitPosition" config:type="int">0</config:config-item>
+ <config:config-item config:name="VerticalSplitPosition" config:type="int">0</config:config-item>
+ <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
+ <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
+ <config:config-item config:name="PositionBottom" config:type="int">0</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ZoomValue" config:type="int">130</config:config-item>
+ <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-named>
+ <config:config-item config:name="ActiveTable" config:type="string">Summary</config:config-item>
+ <config:config-item config:name="HorizontalScrollbarWidth" config:type="int">270</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ZoomValue" config:type="int">130</config:config-item>
+ <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
+ <config:config-item config:name="ShowPageBreakPreview" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GridColor" config:type="long">12632256</config:config-item>
+ <config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterResolutionX" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterResolutionY" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterSubdivisionX" config:type="int">1</config:config-item>
+ <config:config-item config:name="RasterSubdivisionY" config:type="int">1</config:config-item>
+ <config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="GridColor" config:type="long">12632256</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterSubdivisionX" config:type="int">1</config:config-item>
+ <config:config-item config:name="RasterSubdivisionY" config:type="int">1</config:config-item>
+ <config:config-item-map-indexed config:name="ForbiddenCharacters">
+ <config:config-item-map-entry>
+ <config:config-item config:name="Language" config:type="string">en</config:config-item>
+ <config:config-item config:name="Country" config:type="string">GB</config:config-item>
+ <config:config-item config:name="Variant" config:type="string"/>
+ <config:config-item config:name="BeginLine" config:type="string"/>
+ <config:config-item config:name="EndLine" config:type="string"/>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ <config:config-item config:name="AutoCalculate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary">fwH+/0Nhbm9uLTg2MGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzpDYW5vbi04NjBpAAAAAAAAAAAAAAAAAAAAAAAWAAMApQAAAAAAAAAIAFZUAAAkbQAASm9iRGF0YSAxCnByaW50ZXI9Q2Fub24tODYwaQpvcmllbnRhdGlvbj1Qb3J0cmFpdApjb3BpZXM9MQptYXJnaW5kYWp1c3RtZW50PTAsMCwwLDAKY29sb3JkZXB0aD0yNApwc2xldmVsPTAKcGRmZGV2aWNlPTEKY29sb3JkZXZpY2U9MApQUERDb250ZXhEYXRhClBhZ2VTaXplOkxldHRlcgAAEgBDT01QQVRfRFVQTEVYX01PREUKAERVUExFWF9PRkY=</config:config-item>
+ <config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IsDocumentShared" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string">Canon-860i</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">3</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RasterResolutionX" config:type="int">1000</config:config-item>
+ <config:config-item config:name="RasterResolutionY" config:type="int">1000</config:config-item>
+ <config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="DejaVu Sans" svg:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Droid Sans Devanagari" svg:font-family="&apos;Droid Sans Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="table-cell">
+ <style:paragraph-properties style:tab-stop-distance="0.4921in"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:language="en" fo:country="GB" style:font-name-asian="Arial" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Tahoma" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:punctuation-wrap="simple" style:line-break="strict" style:writing-mode="page" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" fo:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="12pt" fo:language="en" fo:country="GB" style:letter-kerning="true" style:font-size-asian="24pt" style:language-asian="zh" style:country-asian="CN" style:font-size-complex="24pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <number:number-style style:name="N0">
+ <number:number number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N121P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N121">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N121P0"/>
+ </number:currency-style>
+ <number:currency-style style:name="N123P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N123">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N123P0"/>
+ </number:currency-style>
+ <style:style style:name="Default" style:family="table-cell">
+ <style:text-properties style:font-name-complex="Droid Sans Devanagari"/>
+ </style:style>
+ <style:style style:name="Result" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-style="italic" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Result2" style:family="table-cell" style:parent-style-name="Result" style:data-style-name="N121"/>
+ <style:style style:name="Heading" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center"/>
+ <style:text-properties fo:font-size="16pt" fo:font-style="italic" fo:font-weight="bold"/>
+ </style:style>
+ <style:style style:name="Heading1" style:family="table-cell" style:parent-style-name="Heading">
+ <style:table-cell-properties style:rotation-angle="90"/>
+ </style:style>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="co1" style:family="table-column">
+ <style:table-column-properties fo:break-before="auto" style:column-width="0.889in"/>
+ </style:style>
+ <style:style style:name="ro1" style:family="table-row">
+ <style:table-row-properties style:row-height="0.178in" fo:break-before="auto" style:use-optimal-row-height="true"/>
+ </style:style>
+ <style:style style:name="ta1" style:family="table" style:master-page-name="Default">
+ <style:table-properties table:display="true" style:writing-mode="lr-tb"/>
+ </style:style>
+ <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default">
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce2" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N123"/>
+ <style:style style:name="gr1" style:family="graphic">
+ <style:graphic-properties draw:ole-draw-aspect="1"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties style:writing-mode="lr-tb"/>
+ <style:header-style>
+ <style:header-footer-properties fo:min-height="0.2953in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-bottom="0.0984in"/>
+ </style:header-style>
+ <style:footer-style>
+ <style:header-footer-properties fo:min-height="0.2953in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.0984in"/>
+ </style:footer-style>
+ </style:page-layout>
+ <style:page-layout style:name="pm2">
+ <style:page-layout-properties style:writing-mode="lr-tb"/>
+ <style:header-style>
+ <style:header-footer-properties fo:min-height="0.2953in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-bottom="0.0984in" fo:border="2.49pt solid #000000" fo:padding="0.0071in" fo:background-color="#c0c0c0">
+ <style:background-image/>
+ </style:header-footer-properties>
+ </style:header-style>
+ <style:footer-style>
+ <style:header-footer-properties fo:min-height="0.2953in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.0984in" fo:border="2.49pt solid #000000" fo:padding="0.0071in" fo:background-color="#c0c0c0">
+ <style:background-image/>
+ </style:header-footer-properties>
+ </style:footer-style>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Default" style:page-layout-name="pm1">
+ <style:header>
+ <text:p><text:sheet-name>???</text:sheet-name></text:p>
+ </style:header>
+ <style:header-left style:display="false"/>
+ <style:footer>
+ <text:p>Page <text:page-number>1</text:page-number></text:p>
+ </style:footer>
+ <style:footer-left style:display="false"/>
+ </style:master-page>
+ <style:master-page style:name="Report" style:page-layout-name="pm2">
+ <style:header>
+ <style:region-left>
+ <text:p><text:sheet-name>???</text:sheet-name> (<text:title>???</text:title>)</text:p>
+ </style:region-left>
+ <style:region-right>
+ <text:p><text:date style:data-style-name="N2" text:date-value="2014-06-06">00/00/0000</text:date>, <text:time>00:00:00</text:time></text:p>
+ </style:region-right>
+ </style:header>
+ <style:header-left style:display="false"/>
+ <style:footer>
+ <text:p>Page <text:page-number>1</text:page-number> / <text:page-count>99</text:page-count></text:p>
+ </style:footer>
+ <style:footer-left style:display="false"/>
+ </style:master-page>
+ </office:master-styles>
+ <office:body>
+ <office:spreadsheet>
+ <table:table table:name="Summary" table:style-name="ta1">
+ <table:shapes>
+ <draw:frame draw:z-index="0" draw:style-name="gr1" svg:width="6.2988in" svg:height="3.5429in" svg:x="3.5118in" svg:y="0.25in">
+ <draw:object draw:notify-on-update-of-ranges="Summary.B1:Summary.B1 Summary.A2:Summary.A2 Summary.B2:Summary.B2 Summary.A3:Summary.A3 Summary.B3:Summary.B3 Summary.A4:Summary.A4 Summary.B4:Summary.B4 Summary.A5:Summary.A5 Summary.B5:Summary.B5 Summary.A6:Summary.A6 Summary.B6:Summary.B6">
+ <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:chartooo="http://openoffice.org/2010/chart" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.chart">
+ <office:meta><meta:generator>LibreOffice/3.5$Linux_X86_64 LibreOffice_project/f647884-246edd6</meta:generator></office:meta>
+ <office:styles/>
+ <office:automatic-styles>
+ <number:number-style style:name="N0">
+ <number:number number:min-integer-digits="1"/>
+ </number:number-style>
+ <number:currency-style style:name="N123P0" style:volatile="true">
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ </number:currency-style>
+ <number:currency-style style:name="N123">
+ <style:text-properties fo:color="#ff0000"/>
+ <number:text>-</number:text>
+ <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol>
+ <number:number number:decimal-places="0" number:min-integer-digits="1" number:grouping="true"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N123P0"/>
+ </number:currency-style>
+ <style:style style:name="ch1" style:family="chart">
+ <style:graphic-properties draw:stroke="none"/>
+ </style:style>
+ <style:style style:name="ch2" style:family="chart">
+ <style:chart-properties chart:auto-position="true"/>
+ <style:graphic-properties draw:stroke="none" svg:stroke-color="#b3b3b3" draw:fill="none" draw:fill-color="#e6e6e6"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch3" style:family="chart">
+ <style:chart-properties chart:stacked="true" chart:include-hidden-cells="false" chart:auto-position="true" chart:auto-size="true" chart:treat-empty-cells="leave-gap" chart:series-source="rows" chart:right-angled-axes="true"/>
+ </style:style>
+ <style:style style:name="ch4" style:family="chart" style:data-style-name="N0">
+ <style:chart-properties chart:display-label="true" chart:logarithmic="false" chart:reverse-direction="false" text:line-break="false" chart:axis-position="0"/>
+ <style:graphic-properties svg:stroke-color="#b3b3b3"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch5" style:family="chart" style:data-style-name="N123">
+ <style:chart-properties chart:display-label="true" chart:logarithmic="false" chart:reverse-direction="false" text:line-break="false" chart:axis-position="0"/>
+ <style:graphic-properties svg:stroke-color="#b3b3b3"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch6" style:family="chart">
+ <style:graphic-properties svg:stroke-color="#b3b3b3"/>
+ </style:style>
+ <style:style style:name="ch7" style:family="chart" style:data-style-name="N123">
+ <style:graphic-properties draw:stroke="none" draw:fill-color="#004586" dr3d:edge-rounding="5%"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch8" style:family="chart" style:data-style-name="N123">
+ <style:graphic-properties draw:stroke="none" draw:fill-color="#ff420e" dr3d:edge-rounding="5%"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch9" style:family="chart" style:data-style-name="N123">
+ <style:graphic-properties draw:stroke="none" draw:fill-color="#ffd320" dr3d:edge-rounding="5%"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch10" style:family="chart" style:data-style-name="N123">
+ <style:graphic-properties draw:stroke="none" draw:fill-color="#579d1c" dr3d:edge-rounding="5%"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch11" style:family="chart" style:data-style-name="N123">
+ <style:graphic-properties draw:stroke="none" draw:fill-color="#7e0021" dr3d:edge-rounding="5%"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="ch12" style:family="chart">
+ <style:graphic-properties draw:stroke="solid" svg:stroke-color="#b3b3b3" draw:fill="none" draw:fill-color="#e6e6e6"/>
+ </style:style>
+ <style:style style:name="ch13" style:family="chart">
+ <style:graphic-properties svg:stroke-color="#b3b3b3" draw:fill-color="#cccccc"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:body>
+ <office:chart>
+ <chart:chart svg:width="16cm" svg:height="9cm" xlink:href=".." xlink:type="simple" chart:class="chart:bar" chart:style-name="ch1">
+ <chart:legend chart:legend-position="end" svg:x="14.372cm" svg:y="3.205cm" style:legend-expansion="high" chart:style-name="ch2"/>
+ <chart:plot-area chart:style-name="ch3" table:cell-range-address="Summary.B1:Summary.B6 Summary.A2:Summary.A6" chart:data-source-has-labels="both" svg:x="0.77cm" svg:y="0.855cm" svg:width="12.962cm" svg:height="7.545cm">
+ <chartooo:coordinate-region svg:x="2.053cm" svg:y="1.054cm" svg:width="11.679cm" svg:height="6.699cm"/>
+ <chart:axis chart:dimension="x" chart:name="primary-x" chart:style-name="ch4" chartooo:axis-type="auto">
+ <chartooo:date-scale/>
+ <chart:categories table:cell-range-address="Summary.B1:Summary.B1"/>
+ </chart:axis>
+ <chart:axis chart:dimension="y" chart:name="primary-y" chart:style-name="ch5">
+ <chart:grid chart:style-name="ch6" chart:class="major"/>
+ </chart:axis>
+ <chart:series chart:style-name="ch7" chart:values-cell-range-address="Summary.B2:Summary.B2" chart:label-cell-address="Summary.A2:Summary.A2" chart:class="chart:bar">
+ <chart:data-point/>
+ </chart:series>
+ <chart:series chart:style-name="ch8" chart:values-cell-range-address="Summary.B3:Summary.B3" chart:label-cell-address="Summary.A3:Summary.A3" chart:class="chart:bar">
+ <chart:data-point/>
+ </chart:series>
+ <chart:series chart:style-name="ch9" chart:values-cell-range-address="Summary.B4:Summary.B4" chart:label-cell-address="Summary.A4:Summary.A4" chart:class="chart:bar">
+ <chart:data-point/>
+ </chart:series>
+ <chart:series chart:style-name="ch10" chart:values-cell-range-address="Summary.B5:Summary.B5" chart:label-cell-address="Summary.A5:Summary.A5" chart:class="chart:bar">
+ <chart:data-point/>
+ </chart:series>
+ <chart:series chart:style-name="ch11" chart:values-cell-range-address="Summary.B6:Summary.B6" chart:label-cell-address="Summary.A6:Summary.A6" chart:class="chart:bar">
+ <chart:data-point/>
+ </chart:series>
+ <chart:wall chart:style-name="ch12"/>
+ <chart:floor chart:style-name="ch13"/>
+ </chart:plot-area>
+ <table:table table:name="local-table">
+ <table:table-header-columns>
+ <table:table-column/>
+ </table:table-header-columns>
+ <table:table-columns>
+ <table:table-column/>
+ </table:table-columns>
+ <table:table-header-rows>
+ <table:table-row>
+ <table:table-cell>
+ <text:p/>
+ </table:table-cell>
+ <table:table-cell office:value-type="string">
+ <text:p>Some</text:p>
+ <draw:g>
+ <svg:desc>Summary.B1:Summary.B1</svg:desc></draw:g>
+ </table:table-cell>
+ </table:table-row>
+ </table:table-header-rows>
+ <table:table-rows>
+ <table:table-row>
+ <table:table-cell office:value-type="string">
+ <text:p>One</text:p>
+ <draw:g>
+ <svg:desc>Summary.A2:Summary.A2</svg:desc></draw:g>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="956.594173563644">
+ <text:p>956.594173563644</text:p>
+ <draw:g>
+ <svg:desc>Summary.B2:Summary.B2</svg:desc></draw:g>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row>
+ <table:table-cell office:value-type="string">
+ <text:p>Two</text:p>
+ <draw:g>
+ <svg:desc>Summary.A3:Summary.A3</svg:desc></draw:g>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="207.425649510697">
+ <text:p>207.425649510697</text:p>
+ <draw:g>
+ <svg:desc>Summary.B3:Summary.B3</svg:desc></draw:g>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row>
+ <table:table-cell office:value-type="string">
+ <text:p>Three</text:p>
+ <draw:g>
+ <svg:desc>Summary.A4:Summary.A4</svg:desc></draw:g>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="689.508363604546">
+ <text:p>689.508363604546</text:p>
+ <draw:g>
+ <svg:desc>Summary.B4:Summary.B4</svg:desc></draw:g>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row>
+ <table:table-cell office:value-type="string">
+ <text:p>Four</text:p>
+ <draw:g>
+ <svg:desc>Summary.A5:Summary.A5</svg:desc></draw:g>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="346.062566153705">
+ <text:p>346.062566153705</text:p>
+ <draw:g>
+ <svg:desc>Summary.B5:Summary.B5</svg:desc></draw:g>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row>
+ <table:table-cell office:value-type="string">
+ <text:p>Five</text:p>
+ <draw:g>
+ <svg:desc>Summary.A6:Summary.A6</svg:desc></draw:g>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="893.98120646365">
+ <text:p>893.98120646365</text:p>
+ <draw:g>
+ <svg:desc>Summary.B6:Summary.B6</svg:desc></draw:g>
+ </table:table-cell>
+ </table:table-row>
+ </table:table-rows>
+ </table:table>
+ </chart:chart>
+ </office:chart>
+ </office:body>
+ </office:document>
+ </draw:object><draw:image>
+ <office:binary-data>VkNMTVRGAQAxAAAAAAAAAAEAGwAAAAAAAAAAAAAAAAA7EwAAoA8AAPsIAAAIBwAAAIA+AAAo
+ IwAArQEAAIsAAQACAAAA//+BAAEAEAAAAAAAAAAAAAAAfz4AACcjAACLAAEAAgAAACAAggAB
+ ACEAAAACABsAAAACAAIAAAAAAAAAJyMAAAEAAAAAAH8+AAACAACVAAEABAAAAAAAAACWAAEA
+ AgAAAAkAhQABAAUAAAD///8AAYQAAQAFAAAAAAAAAABvAAIANgAAAAEABgBAHwAAKCMAAAAA
+ AAAoIwAAAAAAAAAAAACAPgAAAAAAAIA+AAAoIwAAQB8AACgjAAAAAIQAAQAFAAAAs7OzAAEA
+ AgEAjgAAABUAWFBBVEhTVFJPS0VfU0VRX0JFR0lOAAAAAG8AAAABAGkAAAABADMAAAAGAOEe
+ AABNHgAA+gcAAE0eAAD6BwAAHAQAAMc1AAAcBAAAxzUAAE0eAADhHgAATR4AAAABAAIAAAAA
+ AAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACEAAEABQAAALOzswAB
+ hQABAAUAAAAAAAAAAG0AAwBTAAAABgDhHgAATR4AAPoHAABNHgAA+gcAABwEAADHNQAAHAQA
+ AMc1AABNHgAA4R4AAE0eAAAEABoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgEA
+ HQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAABAAUAAACzs7MAAQACAQBuAAAA
+ FQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAAAAEAEwAAAAIAxzUAAEweAAD6
+ BwAATB4AAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA
+ AACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAAAgDHNQAATB4AAPoHAABMHgAA
+ BAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIBAB0AAAATAFhQQVRIU1RST0tF
+ X1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAAABUAWFBBVEhTVFJPS0VfU0VR
+ X0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAMc1AACOGgAA+gcAAI4aAAAAAQACAAAAAAAB
+ AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAhAABAAUAAACzs7MAAYUA
+ AQAFAAAAAAAAAABtAAMAMwAAAAIAxzUAAI4aAAD6BwAAjhoAAAQAGgAAAAEAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9LRV9TRVFfRU5EAAAAAAAAAACE
+ AAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NFUV9CRUdJTgAAAABPAAAAAQBJ
+ AAAAAQATAAAAAgDHNQAA0BYAAPoHAADQFgAAAAEAAgAAAAAAAQACAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGFAAEABQAAAAAAAAAAbQADADMA
+ AAACAMc1AADQFgAA+gcAANAWAAAEABoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAA
+ AgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAABAAUAAACzs7MAAQACAQBu
+ AAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAAAAEAEwAAAAIAxzUAABIT
+ AAD6BwAAEhMAAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA
+ AAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAAAgDHNQAAEhMAAPoHAAAS
+ EwAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIBAB0AAAATAFhQQVRIU1RS
+ T0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAAABUAWFBBVEhTVFJPS0Vf
+ U0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAMc1AABUDwAA+gcAAFQPAAAAAQACAAAA
+ AAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAhAABAAUAAACzs7MA
+ AYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAxzUAAFQPAAD6BwAAVA8AAAQAGgAAAAEAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9LRV9TRVFfRU5EAAAAAAAA
+ AACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NFUV9CRUdJTgAAAABPAAAA
+ AQBJAAAAAQATAAAAAgDHNQAAlgsAAPoHAACWCwAAAAEAAgAAAAAAAQACAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGFAAEABQAAAAAAAAAAbQAD
+ ADMAAAACAMc1AACWCwAA+gcAAJYLAAAEABoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA
+ AAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAABAAUAAACzs7MAAQAC
+ AQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAAAAEAEwAAAAIAxzUA
+ ANgHAAD6BwAA2AcAAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA
+ AAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAAAgDHNQAA2AcAAPoH
+ AADYBwAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIBAB0AAAATAFhQQVRI
+ U1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAAABUAWFBBVEhTVFJP
+ S0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAMc1AAAbBAAA+gcAABsEAAAAAQAC
+ AAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAhAABAAUAAACz
+ s7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAxzUAABsEAAD6BwAAGwQAAAQAGgAAAAEAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9LRV9TRVFfRU5EAAAA
+ AAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NFUV9CRUdJTgAAAABP
+ AAAAAQBJAAAAAQATAAAAAgD6BwAA4h4AAPoHAABMHgAAAAEAAgAAAAAAAQACAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGFAAEABQAAAAAAAAAA
+ bQADADMAAAACAPoHAADiHgAA+gcAAEweAAAEABoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ BAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAABAAUAAACzs7MA
+ AQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAAAAEAEwAAAAIA
+ +gcAAOIeAAD6BwAATB4AAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
+ AAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAAAgD6BwAA4h4A
+ APoHAABMHgAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIBAB0AAAATAFhQ
+ QVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAAABUAWFBBVEhT
+ VFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAMc1AADiHgAAxzUAAEweAAAA
+ AQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAhAABAAUA
+ AACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAxzUAAOIeAADHNQAATB4AAAQAGgAAAAEA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9LRV9TRVFfRU5E
+ AAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NFUV9CRUdJTgAA
+ AABPAAAAAQBJAAAAAQATAAAAAgDHNQAA4h4AAMc1AABMHgAAAAEAAgAAAAAAAQACAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGFAAEABQAAAAAA
+ AAAAbQADADMAAAACAMc1AADiHgAAxzUAAEweAAAEABoAAAABAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAABAAUAAACz
+ s7MAAQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAAAAEAEwAA
+ AAIA+gcAAEweAADHNQAATB4AAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AQAAAAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAAAgD6BwAA
+ TB4AAMc1AABMHgAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIBAB0AAAAT
+ AFhQQVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAAABUAWFBB
+ VEhTVFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAGQHAABMHgAA+gcAAEwe
+ AAAAAQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAhAAB
+ AAUAAACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAZAcAAEweAAD6BwAATB4AAAQAGgAA
+ AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9LRV9TRVFf
+ RU5EAAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NFUV9CRUdJ
+ TgAAAABPAAAAAQBJAAAAAQATAAAAAgBkBwAATB4AAPoHAABMHgAAAAEAAgAAAAAAAQACAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGFAAEABQAA
+ AAAAAAAAbQADADMAAAACAGQHAABMHgAA+gcAAEweAAAEABoAAAABAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAABAAUA
+ AACzs7MAAQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAAAAEA
+ EwAAAAIAZAcAAI4aAAD6BwAAjhoAAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAQAAAAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAAAgBk
+ BwAAjhoAAPoHAACOGgAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIBAB0A
+ AAATAFhQQVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAAABUA
+ WFBBVEhTVFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAGQHAACOGgAA+gcA
+ AI4aAAAAAQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA
+ hAABAAUAAACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAZAcAAI4aAAD6BwAAjhoAAAQA
+ GgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9LRV9T
+ RVFfRU5EAAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NFUV9C
+ RUdJTgAAAABPAAAAAQBJAAAAAQATAAAAAgBkBwAA0BYAAPoHAADQFgAAAAEAAgAAAAAAAQAC
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGFAAEA
+ BQAAAAAAAAAAbQADADMAAAACAGQHAADQFgAA+gcAANAWAAAEABoAAAABAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAAhAAB
+ AAUAAACzs7MAAQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEASQAA
+ AAEAEwAAAAIAZAcAANAWAAD6BwAA0BYAAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAQAAAAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAzAAAA
+ AgBkBwAA0BYAAPoHAADQFgAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIB
+ AB0AAAATAFhQQVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEAbgAA
+ ABUAWFBBVEhTVFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAGQHAAASEwAA
+ +gcAABITAAAAAQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA
+ AAAAhAABAAUAAACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAZAcAABITAAD6BwAAEhMA
+ AAQAGgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNUUk9L
+ RV9TRVFfRU5EAAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tFX1NF
+ UV9CRUdJTgAAAABPAAAAAQBJAAAAAQATAAAAAgBkBwAAEhMAAPoHAAASEwAAAAEAAgAAAAAA
+ AQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7OzAAGF
+ AAEABQAAAAAAAAAAbQADADMAAAACAGQHAAASEwAA+gcAABITAAAEABoAAAABAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAAAAAA
+ hAABAAUAAACzs7MAAQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAAAAEA
+ SQAAAAEAEwAAAAIAZAcAAFQPAAD6BwAAVA8AAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAQAAAAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0AAwAz
+ AAAAAgBkBwAAVA8AAPoHAABUDwAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAA
+ AAIBAB0AAAATAFhQQVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEAAgEA
+ bgAAABUAWFBBVEhTVFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAGQHAABU
+ DwAA+gcAAFQPAAAAAQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA
+ AAAAAAAAhAABAAUAAACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAZAcAAFQPAAD6BwAA
+ VA8AAAQAGgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFUSFNU
+ Uk9LRV9TRVFfRU5EAAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RST0tF
+ X1NFUV9CRUdJTgAAAABPAAAAAQBJAAAAAQATAAAAAgBkBwAAlgsAAPoHAACWCwAAAAEAAgAA
+ AAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAAs7Oz
+ AAGFAAEABQAAAAAAAAAAbQADADMAAAACAGQHAACWCwAA+gcAAJYLAAAEABoAAAABAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAAAAAA
+ AAAAhAABAAUAAACzs7MAAQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAATwAA
+ AAEASQAAAAEAEwAAAAIAZAcAAJYLAAD6BwAAlgsAAAABAAIAAAAAAAEAAgAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAAAG0A
+ AwAzAAAAAgBkBwAAlgsAAPoHAACWCwAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQA
+ AAAAAAIBAB0AAAATAFhQQVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7OzAAEA
+ AgEAbgAAABUAWFBBVEhTVFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAACAGQH
+ AADYBwAA+gcAANgHAAAAAQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA
+ AAAAAAAAAAAAhAABAAUAAACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAZAcAANgHAAD6
+ BwAA2AcAAAQAGgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBYUEFU
+ SFNUUk9LRV9TRVFfRU5EAAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRIU1RS
+ T0tFX1NFUV9CRUdJTgAAAABPAAAAAQBJAAAAAQATAAAAAgBkBwAA2AcAAPoHAADYBwAAAAEA
+ AgAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAFAAAA
+ s7OzAAGFAAEABQAAAAAAAAAAbQADADMAAAACAGQHAADYBwAA+gcAANgHAAAEABoAAAABAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VORAAA
+ AAAAAAAAhAABAAUAAACzs7MAAQACAQBuAAAAFQBYUEFUSFNUUk9LRV9TRVFfQkVHSU4AAAAA
+ TwAAAAEASQAAAAEAEwAAAAIAZAcAABsEAAD6BwAAGwQAAAABAAIAAAAAAAEAAgAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACEAAEABQAAALOzswABhQABAAUAAAAAAAAA
+ AG0AAwAzAAAAAgBkBwAAGwQAAPoHAAAbBAAABAAaAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAQAAAAAAAIBAB0AAAATAFhQQVRIU1RST0tFX1NFUV9FTkQAAAAAAAAAAIQAAQAFAAAAs7Oz
+ AAEAAgEAbgAAABUAWFBBVEhTVFJPS0VfU0VRX0JFR0lOAAAAAE8AAAABAEkAAAABABMAAAAC
+ AGQHAAAbBAAA+gcAABsEAAAAAQACAAAAAAABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
+ AAAAAAAAAAAAAAAAhAABAAUAAACzs7MAAYUAAQAFAAAAAAAAAABtAAMAMwAAAAIAZAcAABsE
+ AAD6BwAAGwQAAAQAGgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACAQAdAAAAEwBY
+ UEFUSFNUUk9LRV9TRVFfRU5EAAAAAAAAAACEAAEABQAAALOzswABAAIBAG4AAAAVAFhQQVRI
+ U1RST0tFX1NFUV9CRUdJTgAAAABPAAAAAQBJAAAAAQATAAAAAgD6BwAATB4AAPoHAAAbBAAA
+ AAEAAgAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIQAAQAF
+ AAAAs7OzAAGFAAEABQAAAAAAAAAAbQADADMAAAACAPoHAABMHgAA+gcAABsEAAAEABoAAAAB
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgEAHQAAABMAWFBBVEhTVFJPS0VfU0VRX0VO
+ RAAAAAAAAAAAhQABAAUAAACGRQAAAYQAAQAFAAAAAAAAAABvAAIALgAAAAEABQBtEwAATB4A
+ AFMqAABMHgAAUyoAACMXAABtEwAAIxcAAG0TAABMHgAAAACFAAEABQAAAA5C/wABhAABAAUA
+ AAAAAAAAAG8AAgAuAAAAAQAFAG0TAAAjFwAAUyoAACMXAABTKgAAlhUAAG0TAACWFQAAbRMA
+ ACMXAAAAAIUAAQAFAAAAINP/AAGEAAEABQAAAAAAAAAAbwACAC4AAAABAAUAbRMAAJYVAABT
+ KgAAlhUAAFMqAABtEAAAbRMAAG0QAABtEwAAlhUAAAAAhQABAAUAAAAcnVcAAYQAAQAFAAAA
+ AAAAAABvAAIALgAAAAEABQBtEwAAbRAAAFMqAABtEAAAUyoAANYNAABtEwAA1g0AAG0TAABt
+ EAAAAACFAAEABQAAACEAfgABhAABAAUAAAAAAAAAAG8AAgAuAAAAAQAFAG0TAADWDQAAUyoA
+ ANYNAABTKgAAJQcAAG0TAAAlBwAAbRMAANYNAAAAAAACAQAgAAAAFgBYVEVYVF9QQUlOVFNI
+ QVBFX0JFR0lOAAAAAAAAAACKAAEAQQAAAAMAOwAAAA8ATGliZXJhdGlvbiBTYW5zAAAAAAAA
+ YQEAAP//AAACAAUAAAAAAAAACQgAAAAAAAAAAAD/AwAAAAAAiAABAAIAAAABAIcAAQAFAAAA
+ /////wCGAAEABAAAAAAAAABxAAIANgAAACQdAACAIAAABAAAAFMAbwBtAGUAAAAEAAQAAADs
+ AAAAowEAAMMCAAB6AwAABABTAG8AbQBlAAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAAC
+ AQATAAAACQBYVEVYVF9FT0MBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAAAAAC
+ AQATAAAACQBYVEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAAAAAC
+ AQATAAAACQBYVEVYVF9FT1AAAAAAAAAAAAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBFX0VO
+ RAAAAAAAAAAAAAIBACAAAAAWAFhURVhUX1BBSU5UU0hBUEVfQkVHSU4AAAAAAAAAAIoAAQBB
+ AAAAAwA7AAAADwBMaWJlcmF0aW9uIFNhbnMAAAAAAABhAQAA//8AAAIABQAAAAAAAAAJCAAA
+ AAAAAAAAAP8DAAAAAACIAAEAAgAAAAEAhwABAAUAAAD/////AIYAAQAEAAAAAAAAAHEAAgAm
+ AAAAkQUAAMMeAAACAAAAowAwAAAAAgACAAAAtwAAAG8BAAACAKMAMAAAAgEAEwAAAAkAWFRF
+ WFRfRU9DAAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9DAQAAAAAAAAAAAgEAEwAAAAkAWFRF
+ WFRfRU9XAQAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9MAAAAAAAAAAAAAgEAEwAAAAkAWFRF
+ WFRfRU9QAAAAAAAAAAAAAgEAHgAAABQAWFRFWFRfUEFJTlRTSEFQRV9FTkQAAAAAAAAAAAAC
+ AQAgAAAAFgBYVEVYVF9QQUlOVFNIQVBFX0JFR0lOAAAAAAAAAACKAAEAQQAAAAMAOwAAAA8A
+ TGliZXJhdGlvbiBTYW5zAAAAAAAAYQEAAP//AAACAAUAAAAAAAAACQgAAAAAAAAAAAD/AwAA
+ AAAAiAABAAIAAAABAIcAAQAFAAAA/////wCGAAEABAAAAAAAAABxAAIANgAAACMEAAAFGwAA
+ BAAAAKMANQAwADAAAAAEAAQAAAC3AAAAbwEAACYCAADdAgAABACjADUAMAAwAAACAQATAAAA
+ CQBYVEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MBAAAAAAAAAAACAQATAAAA
+ CQBYVEVYVF9FT1cBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAAAAACAQATAAAA
+ CQBYVEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAAAAACAQATAAAA
+ CQBYVEVYVF9FT1AAAAAAAAAAAAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBFX0VORAAAAAAA
+ AAAAAAIBACAAAAAWAFhURVhUX1BBSU5UU0hBUEVfQkVHSU4AAAAAAAAAAIoAAQBBAAAAAwA7
+ AAAADwBMaWJlcmF0aW9uIFNhbnMAAAAAAABhAQAA//8AAAIABQAAAAAAAAAJCAAAAAAAAAAA
+ AP8DAAAAAACIAAEAAgAAAAEAhwABAAUAAAD/////AIYAAQAEAAAAAAAAAHEAAgBGAAAAAwMA
+ AEcXAAAGAAAAowAxACwAMAAwADAAAAAGAAYAAAC3AAAAbwEAANcBAACPAgAARgMAAP0DAAAG
+ AKMAMQAsADAAMAAwAAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVY
+ VF9FT0MBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1cBAAAAAAAAAAACAQATAAAACQBYVEVY
+ VF9FT0MCAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVY
+ VF9FT0MEAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MFAAAAAAAAAAACAQATAAAACQBYVEVY
+ VF9FT0wAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAAAAACAQAeAAAAFABYVEVY
+ VF9QQUlOVFNIQVBFX0VORAAAAAAAAAAAAAIBACAAAAAWAFhURVhUX1BBSU5UU0hBUEVfQkVH
+ SU4AAAAAAAAAAIoAAQBBAAAAAwA7AAAADwBMaWJlcmF0aW9uIFNhbnMAAAAAAABhAQAA//8A
+ AAIABQAAAAAAAAAJCAAAAAAAAAAAAP8DAAAAAACIAAEAAgAAAAEAhwABAAUAAAD/////AIYA
+ AQAEAAAAAAAAAHEAAgBGAAAAAwMAAIkTAAAGAAAAowAxACwANQAwADAAAAAGAAYAAAC3AAAA
+ bwEAANcBAACPAgAARgMAAP0DAAAGAKMAMQAsADUAMAAwAAACAQATAAAACQBYVEVYVF9FT0MA
+ AAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1cB
+ AAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MD
+ AAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MEAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MF
+ AAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1AA
+ AAAAAAAAAAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBFX0VORAAAAAAAAAAAAAIBACAAAAAW
+ AFhURVhUX1BBSU5UU0hBUEVfQkVHSU4AAAAAAAAAAIoAAQBBAAAAAwA7AAAADwBMaWJlcmF0
+ aW9uIFNhbnMAAAAAAABhAQAA//8AAAIABQAAAAAAAAAJCAAAAAAAAAAAAP8DAAAAAACIAAEA
+ AgAAAAEAhwABAAUAAAD/////AIYAAQAEAAAAAAAAAHEAAgBGAAAAAwMAAMsPAAAGAAAAowAy
+ ACwAMAAwADAAAAAGAAYAAAC3AAAAbwEAANcBAACPAgAARgMAAP0DAAAGAKMAMgAsADAAMAAw
+ AAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MBAAAAAAAA
+ AAACAQATAAAACQBYVEVYVF9FT1cBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAA
+ AAACAQATAAAACQBYVEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MEAAAAAAAA
+ AAACAQATAAAACQBYVEVYVF9FT0MFAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAA
+ AAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAAAAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBF
+ X0VORAAAAAAAAAAAAAIBACAAAAAWAFhURVhUX1BBSU5UU0hBUEVfQkVHSU4AAAAAAAAAAIoA
+ AQBBAAAAAwA7AAAADwBMaWJlcmF0aW9uIFNhbnMAAAAAAABhAQAA//8AAAIABQAAAAAAAAAJ
+ CAAAAAAAAAAAAP8DAAAAAACIAAEAAgAAAAEAhwABAAUAAAD/////AIYAAQAEAAAAAAAAAHEA
+ AgBGAAAAAwMAAA0MAAAGAAAAowAyACwANQAwADAAAAAGAAYAAAC3AAAAbwEAANcBAACPAgAA
+ RgMAAP0DAAAGAKMAMgAsADUAMAAwAAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAACAQAT
+ AAAACQBYVEVYVF9FT0MBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1cBAAAAAAAAAAACAQAT
+ AAAACQBYVEVYVF9FT0MCAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MDAAAAAAAAAAACAQAT
+ AAAACQBYVEVYVF9FT0MEAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MFAAAAAAAAAAACAQAT
+ AAAACQBYVEVYVF9FT0wAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAAAAACAQAe
+ AAAAFABYVEVYVF9QQUlOVFNIQVBFX0VORAAAAAAAAAAAAAIBACAAAAAWAFhURVhUX1BBSU5U
+ U0hBUEVfQkVHSU4AAAAAAAAAAIoAAQBBAAAAAwA7AAAADwBMaWJlcmF0aW9uIFNhbnMAAAAA
+ AABhAQAA//8AAAIABQAAAAAAAAAJCAAAAAAAAAAAAP8DAAAAAACIAAEAAgAAAAEAhwABAAUA
+ AAD/////AIYAAQAEAAAAAAAAAHEAAgBGAAAAAwMAAE8IAAAGAAAAowAzACwAMAAwADAAAAAG
+ AAYAAAC3AAAAbwEAANcBAACPAgAARgMAAP0DAAAGAKMAMwAsADAAMAAwAAACAQATAAAACQBY
+ VEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MBAAAAAAAAAAACAQATAAAACQBY
+ VEVYVF9FT1cBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAAAAACAQATAAAACQBY
+ VEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MEAAAAAAAAAAACAQATAAAACQBY
+ VEVYVF9FT0MFAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAAAAACAQATAAAACQBY
+ VEVYVF9FT1AAAAAAAAAAAAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBFX0VORAAAAAAAAAAA
+ AAIBACAAAAAWAFhURVhUX1BBSU5UU0hBUEVfQkVHSU4AAAAAAAAAAIoAAQBBAAAAAwA7AAAA
+ DwBMaWJlcmF0aW9uIFNhbnMAAAAAAABhAQAA//8AAAIABQAAAAAAAAAJCAAAAAAAAAAAAP8D
+ AAAAAACIAAEAAgAAAAEAhwABAAUAAAD/////AIYAAQAEAAAAAAAAAHEAAgBGAAAAAwMAAJIE
+ AAAGAAAAowAzACwANQAwADAAAAAGAAYAAAC3AAAAbwEAANcBAACPAgAARgMAAP0DAAAGAKMA
+ MwAsADUAMAAwAAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVYVF9F
+ T0MBAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1cBAAAAAAAAAAACAQATAAAACQBYVEVYVF9F
+ T0MCAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MDAAAAAAAAAAACAQATAAAACQBYVEVYVF9F
+ T0MEAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MFAAAAAAAAAAACAQATAAAACQBYVEVYVF9F
+ T0wAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAAAAACAQAeAAAAFABYVEVYVF9Q
+ QUlOVFNIQVBFX0VORAAAAAAAAAAAhQABAAUAAACGRQAAAYQAAQAFAAAAAAAAAABvAAIANgAA
+ AAEABgAlOQAA2RUAALs4AADZFQAAuzgAAAYVAACOOQAABhUAAI45AADZFQAAJTkAANkVAAAA
+ AIUAAQAFAAAADkL/AAGEAAEABQAAAAAAAAAAbwACADYAAAABAAYAJTkAAOsTAAC7OAAA6xMA
+ ALs4AAAYEwAAjjkAABgTAACOOQAA6xMAACU5AADrEwAAAACFAAEABQAAACDT/wABhAABAAUA
+ AAAAAAAAAG8AAgA2AAAAAQAGACU5AAD9EQAAuzgAAP0RAAC7OAAAKhEAAI45AAAqEQAAjjkA
+ AP0RAAAlOQAA/REAAAAAhQABAAUAAAAcnVcAAYQAAQAFAAAAAAAAAABvAAIANgAAAAEABgAl
+ OQAADxAAALs4AAAPEAAAuzgAADwPAACOOQAAPA8AAI45AAAPEAAAJTkAAA8QAAAAAIUAAQAF
+ AAAAIQB+AAGEAAEABQAAAAAAAAAAbwACADYAAAABAAYAJTkAACEOAAC7OAAAIQ4AALs4AABO
+ DQAAjjkAAE4NAACOOQAAIQ4AACU5AAAhDgAAAAAAAgEAIAAAABYAWFRFWFRfUEFJTlRTSEFQ
+ RV9CRUdJTgAAAAAAAAAAigABAEEAAAADADsAAAAPAExpYmVyYXRpb24gU2FucwAAAAAAAGEB
+ AAD//wAAAgAFAAAAAAAAAAkIAAAAAAAAAAAA/wMAAAAAAIgAAQACAAAAAQCHAAEABQAAAP//
+ //8AhgABAAQAAAAAAAAAcQACADYAAADyOQAALQ4AAAQAAABGAGkAdgBlAAAABAAEAAAA0QAA
+ ACABAACjAQAAWgIAAAQARgBpAHYAZQAAAgEAEwAAAAkAWFRFWFRfRU9DAAAAAAAAAAAAAgEA
+ EwAAAAkAWFRFWFRfRU9DAQAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9DAgAAAAAAAAAAAgEA
+ EwAAAAkAWFRFWFRfRU9DAwAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9MAAAAAAAAAAAAAgEA
+ EwAAAAkAWFRFWFRfRU9QAAAAAAAAAAAAAgEAHgAAABQAWFRFWFRfUEFJTlRTSEFQRV9FTkQA
+ AAAAAAAAAAACAQAgAAAAFgBYVEVYVF9QQUlOVFNIQVBFX0JFR0lOAAAAAAAAAACKAAEAQQAA
+ AAMAOwAAAA8ATGliZXJhdGlvbiBTYW5zAAAAAAAAYQEAAP//AAACAAUAAAAAAAAACQgAAAAA
+ AAAAAAD/AwAAAAAAiAABAAIAAAABAIcAAQAFAAAA/////wCGAAEABAAAAAAAAABxAAIANgAA
+ API5AAAbEAAABAAAAEYAbwB1AHIAAAAEAAQAAADRAAAAiQEAAEACAACpAgAABABGAG8AdQBy
+ AAACAQATAAAACQBYVEVYVF9FT0MAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MBAAAAAAAA
+ AAACAQATAAAACQBYVEVYVF9FT0MCAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT0MDAAAAAAAA
+ AAACAQATAAAACQBYVEVYVF9FT0wAAAAAAAAAAAACAQATAAAACQBYVEVYVF9FT1AAAAAAAAAA
+ AAACAQAeAAAAFABYVEVYVF9QQUlOVFNIQVBFX0VORAAAAAAAAAAAAAIBACAAAAAWAFhURVhU
+ X1BBSU5UU0hBUEVfQkVHSU4AAAAAAAAAAIoAAQBBAAAAAwA7AAAADwBMaWJlcmF0aW9uIFNh
+ bnMAAAAAAABhAQAA//8AAAIABQAAAAAAAAAJCAAAAAAAAAAAAP8DAAAAAACIAAEAAgAAAAEA
+ hwABAAUAAAD/////AIYAAQAEAAAAAAAAAHEAAgA+AAAA8jkAAAkSAAAFAAAAVABoAHIAZQBl
+ AAAABQAFAAAAtwAAAG8BAADXAQAAjwIAAEYDAAAFAFQAaAByAGUAZQAAAgEAEwAAAAkAWFRF
+ WFRfRU9DAAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9DAQAAAAAAAAAAAgEAEwAAAAkAWFRF
+ WFRfRU9DAgAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9DAwAAAAAAAAAAAgEAEwAAAAkAWFRF
+ WFRfRU9DBAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9MAAAAAAAAAAAAAgEAEwAAAAkAWFRF
+ WFRfRU9QAAAAAAAAAAAAAgEAHgAAABQAWFRFWFRfUEFJTlRTSEFQRV9FTkQAAAAAAAAAAAAC
+ AQAgAAAAFgBYVEVYVF9QQUlOVFNIQVBFX0JFR0lOAAAAAAAAAACKAAEAQQAAAAMAOwAAAA8A
+ TGliZXJhdGlvbiBTYW5zAAAAAAAAYQEAAP//AAACAAUAAAAAAAAACQgAAAAAAAAAAAD/AwAA
+ AAAAiAABAAIAAAABAIcAAQAFAAAA/////wCGAAEABAAAAAAAAABxAAIALgAAAPI5AAD3EwAA
+ AwAAAFQAdwBvAAAAAwADAAAAnQAAAIkBAABAAgAAAwBUAHcAbwAAAgEAEwAAAAkAWFRFWFRf
+ RU9DAAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9DAQAAAAAAAAAAAgEAEwAAAAkAWFRFWFRf
+ RU9DAgAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9MAAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRf
+ RU9QAAAAAAAAAAAAAgEAHgAAABQAWFRFWFRfUEFJTlRTSEFQRV9FTkQAAAAAAAAAAAACAQAg
+ AAAAFgBYVEVYVF9QQUlOVFNIQVBFX0JFR0lOAAAAAAAAAACKAAEAQQAAAAMAOwAAAA8ATGli
+ ZXJhdGlvbiBTYW5zAAAAAAAAYQEAAP//AAACAAUAAAAAAAAACQgAAAAAAAAAAAD/AwAAAAAA
+ iAABAAIAAAABAIcAAQAFAAAA/////wCGAAEABAAAAAAAAABxAAIALgAAAPI5AADlFQAAAwAA
+ AE8AbgBlAAAAAwADAAAABgEAAL0BAAB0AgAAAwBPAG4AZQAAAgEAEwAAAAkAWFRFWFRfRU9D
+ AAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9DAQAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9D
+ AgAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9MAAAAAAAAAAAAAgEAEwAAAAkAWFRFWFRfRU9Q
+ AAAAAAAAAAAAAgEAHgAAABQAWFRFWFRfUEFJTlRTSEFQRV9FTkQAAAAAAAAAAIwAAQAAAAAA
+ iwABAAIAAAAgAIIAAQAhAAAAAgAbAAAAAgACAAAAAAAAACcjAAABAAAAAAB/PgAAAgAAjAAB
+ AAAAAACMAAEAAAAAAA==
+ </office:binary-data>
+ </draw:image>
+ </draw:frame></table:shapes>
+ <table:table-column table:style-name="co1" table:default-cell-style-name="Default"/>
+ <table:table-column table:style-name="co1" table:number-columns-repeated="2" table:default-cell-style-name="ce2"/>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell table:style-name="ce1" office:value-type="string">
+ <text:p>Summary</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce1" office:value-type="string">
+ <text:p>Some</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce1"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="string">
+ <text:p>One</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[Data.A1]" office:value-type="currency" office:currency="GBP" office:value="956.594173563644">
+ <text:p>£957</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="string">
+ <text:p>Two</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[Data.A2]" office:value-type="currency" office:currency="GBP" office:value="207.425649510697">
+ <text:p>£207</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="string">
+ <text:p>Three</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[Data.A3]" office:value-type="currency" office:currency="GBP" office:value="689.508363604546">
+ <text:p>£690</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="string">
+ <text:p>Four</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[Data.A4]" office:value-type="currency" office:currency="GBP" office:value="346.062566153705">
+ <text:p>£346</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="string">
+ <text:p>Five</text:p>
+ </table:table-cell>
+ <table:table-cell table:formula="of:=[Data.A5]" office:value-type="currency" office:currency="GBP" office:value="893.98120646365">
+ <text:p>£894</text:p>
+ </table:table-cell>
+ <table:table-cell/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell/>
+ <table:table-cell table:style-name="Default" table:number-columns-repeated="2"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell table:style-name="ce1" office:value-type="string">
+ <text:p>To reproduce bug:</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Default" table:number-columns-repeated="2"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell/>
+ <table:table-cell table:style-name="Default" office:value-type="string">
+ <text:p>Save as Flat ODS: extension &apos;.fods&apos;</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Default"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell/>
+ <table:table-cell table:style-name="Default" office:value-type="string">
+ <text:p>Reload … bingo …</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Default"/>
+ </table:table-row>
+ </table:table>
+ <table:table table:name="Data" table:style-name="ta1">
+ <table:table-column table:style-name="co1" table:number-columns-repeated="2" table:default-cell-style-name="Default"/>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="float" office:value="956.594173563644">
+ <text:p>956.5941735636</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="573.410327779129">
+ <text:p>573.4103277791</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="float" office:value="207.425649510697">
+ <text:p>207.4256495107</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="604.592139367014">
+ <text:p>604.592139367</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="float" office:value="689.508363604546">
+ <text:p>689.5083636045</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="44.302029768005">
+ <text:p>44.302029768</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="float" office:value="346.062566153705">
+ <text:p>346.0625661537</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="835.630784509704">
+ <text:p>835.6307845097</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="float" office:value="893.98120646365">
+ <text:p>893.9812064637</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="220.445565413684">
+ <text:p>220.4455654137</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="ro1">
+ <table:table-cell office:value-type="float" office:value="140.184764517471">
+ <text:p>140.1847645175</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="130.774514051154">
+ <text:p>130.7745140512</text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <table:named-expressions/>
+ </office:spreadsheet>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/chart2/qa/extras/data/odp/BarChartVeryLongLabel.odp b/chart2/qa/extras/data/odp/BarChartVeryLongLabel.odp
new file mode 100644
index 0000000000..c627af79e4
--- /dev/null
+++ b/chart2/qa/extras/data/odp/BarChartVeryLongLabel.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/chart.odp b/chart2/qa/extras/data/odp/chart.odp
new file mode 100644
index 0000000000..81a5f56b27
--- /dev/null
+++ b/chart2/qa/extras/data/odp/chart.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/ellipticalGradientFill.odp b/chart2/qa/extras/data/odp/ellipticalGradientFill.odp
new file mode 100644
index 0000000000..754f439e58
--- /dev/null
+++ b/chart2/qa/extras/data/odp/ellipticalGradientFill.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/tdf119029.odp b/chart2/qa/extras/data/odp/tdf119029.odp
new file mode 100644
index 0000000000..87e4a03c84
--- /dev/null
+++ b/chart2/qa/extras/data/odp/tdf119029.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/tdf121189.odp b/chart2/qa/extras/data/odp/tdf121189.odp
new file mode 100644
index 0000000000..6f99e00549
--- /dev/null
+++ b/chart2/qa/extras/data/odp/tdf121189.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/tdf123206.odp b/chart2/qa/extras/data/odp/tdf123206.odp
new file mode 100644
index 0000000000..1975756bce
--- /dev/null
+++ b/chart2/qa/extras/data/odp/tdf123206.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odp b/chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odp
new file mode 100644
index 0000000000..754e71d512
--- /dev/null
+++ b/chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odp b/chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odp
new file mode 100644
index 0000000000..4c09ebb7bb
--- /dev/null
+++ b/chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odp
Binary files differ
diff --git a/chart2/qa/extras/data/odp/tdf128345_Legend_CS_TG_axial.odp b/chart2/qa/extras/data/odp/tdf128345_Legend_CS_TG_axial.odp
new file mode 100644
index 0000000000..bfcd8a5dd5
--- /dev/null
+++ b/chart2/qa/extras/data/odp/tdf128345_Legend_CS_TG_axial.odp
Binary files differ
diff --git a/chart2/qa/extras/data/ods/ErrorBarRange.ods b/chart2/qa/extras/data/ods/ErrorBarRange.ods
new file mode 100644
index 0000000000..28e6aeeddb
--- /dev/null
+++ b/chart2/qa/extras/data/ods/ErrorBarRange.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/PivotChartRoundTrip.ods b/chart2/qa/extras/data/ods/PivotChartRoundTrip.ods
new file mode 100644
index 0000000000..c34521e0bc
--- /dev/null
+++ b/chart2/qa/extras/data/ods/PivotChartRoundTrip.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/PivotTableExample.ods b/chart2/qa/extras/data/ods/PivotTableExample.ods
new file mode 100644
index 0000000000..bc8df81702
--- /dev/null
+++ b/chart2/qa/extras/data/ods/PivotTableExample.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/axis-numformats-linked.ods b/chart2/qa/extras/data/ods/axis-numformats-linked.ods
new file mode 100644
index 0000000000..ddaa9c9014
--- /dev/null
+++ b/chart2/qa/extras/data/ods/axis-numformats-linked.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/axis_number_format.ods b/chart2/qa/extras/data/ods/axis_number_format.ods
new file mode 100644
index 0000000000..52e979a490
--- /dev/null
+++ b/chart2/qa/extras/data/ods/axis_number_format.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/chart.ods b/chart2/qa/extras/data/ods/chart.ods
new file mode 100644
index 0000000000..2a9916aca0
--- /dev/null
+++ b/chart2/qa/extras/data/ods/chart.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/chartWithDotInSheetName.ods b/chart2/qa/extras/data/ods/chartWithDotInSheetName.ods
new file mode 100644
index 0000000000..873d45f4be
--- /dev/null
+++ b/chart2/qa/extras/data/ods/chartWithDotInSheetName.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/combined_chart_secondary_axis.ods b/chart2/qa/extras/data/ods/combined_chart_secondary_axis.ods
new file mode 100644
index 0000000000..d125bc23d3
--- /dev/null
+++ b/chart2/qa/extras/data/ods/combined_chart_secondary_axis.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/error_bar.ods b/chart2/qa/extras/data/ods/error_bar.ods
new file mode 100644
index 0000000000..9c3adbbca8
--- /dev/null
+++ b/chart2/qa/extras/data/ods/error_bar.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/error_bar_properties.ods b/chart2/qa/extras/data/ods/error_bar_properties.ods
new file mode 100644
index 0000000000..056be88b22
--- /dev/null
+++ b/chart2/qa/extras/data/ods/error_bar_properties.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/error_bar_range.ods b/chart2/qa/extras/data/ods/error_bar_range.ods
new file mode 100644
index 0000000000..27a0103e57
--- /dev/null
+++ b/chart2/qa/extras/data/ods/error_bar_range.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/fdo60083.ods b/chart2/qa/extras/data/ods/fdo60083.ods
new file mode 100644
index 0000000000..74704f6185
--- /dev/null
+++ b/chart2/qa/extras/data/ods/fdo60083.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/labelString.ods b/chart2/qa/extras/data/ods/labelString.ods
new file mode 100644
index 0000000000..2b7e03c8eb
--- /dev/null
+++ b/chart2/qa/extras/data/ods/labelString.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/legend_overlay.ods b/chart2/qa/extras/data/ods/legend_overlay.ods
new file mode 100644
index 0000000000..fade626405
--- /dev/null
+++ b/chart2/qa/extras/data/ods/legend_overlay.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/moving-type.ods b/chart2/qa/extras/data/ods/moving-type.ods
new file mode 100644
index 0000000000..8a8568cfa7
--- /dev/null
+++ b/chart2/qa/extras/data/ods/moving-type.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/multilevelcat.ods b/chart2/qa/extras/data/ods/multilevelcat.ods
new file mode 100644
index 0000000000..76b140a879
--- /dev/null
+++ b/chart2/qa/extras/data/ods/multilevelcat.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/multiple_axis.ods b/chart2/qa/extras/data/ods/multiple_axis.ods
new file mode 100644
index 0000000000..7e2a505ccb
--- /dev/null
+++ b/chart2/qa/extras/data/ods/multiple_axis.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/pie_chart_100_and_0.ods b/chart2/qa/extras/data/ods/pie_chart_100_and_0.ods
new file mode 100644
index 0000000000..a6ff5d6aa0
--- /dev/null
+++ b/chart2/qa/extras/data/ods/pie_chart_100_and_0.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/secondary_axis.ods b/chart2/qa/extras/data/ods/secondary_axis.ods
new file mode 100644
index 0000000000..3f8f269c0f
--- /dev/null
+++ b/chart2/qa/extras/data/ods/secondary_axis.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/ser_labels.ods b/chart2/qa/extras/data/ods/ser_labels.ods
new file mode 100644
index 0000000000..c7bd966382
--- /dev/null
+++ b/chart2/qa/extras/data/ods/ser_labels.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/smoothedLines.ods b/chart2/qa/extras/data/ods/smoothedLines.ods
new file mode 100644
index 0000000000..725827e639
--- /dev/null
+++ b/chart2/qa/extras/data/ods/smoothedLines.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/stepped_lines.ods b/chart2/qa/extras/data/ods/stepped_lines.ods
new file mode 100644
index 0000000000..23d443ab5d
--- /dev/null
+++ b/chart2/qa/extras/data/ods/stepped_lines.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf101894.ods b/chart2/qa/extras/data/ods/tdf101894.ods
new file mode 100644
index 0000000000..70d8b3a0dd
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf101894.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf107097.ods b/chart2/qa/extras/data/ods/tdf107097.ods
new file mode 100644
index 0000000000..efa9f1c013
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf107097.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf108021.ods b/chart2/qa/extras/data/ods/tdf108021.ods
new file mode 100644
index 0000000000..ebbc5e56f2
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf108021.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf120348.ods b/chart2/qa/extras/data/ods/tdf120348.ods
new file mode 100644
index 0000000000..7a593c1bff
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf120348.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf123774.ods b/chart2/qa/extras/data/ods/tdf123774.ods
new file mode 100644
index 0000000000..5c422b58c3
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf123774.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf128432.ods b/chart2/qa/extras/data/ods/tdf128432.ods
new file mode 100644
index 0000000000..a93822fc9b
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf128432.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf131115.ods b/chart2/qa/extras/data/ods/tdf131115.ods
new file mode 100644
index 0000000000..76a87c2c22
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf131115.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf131979.ods b/chart2/qa/extras/data/ods/tdf131979.ods
new file mode 100644
index 0000000000..3dfcf6b699
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf131979.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf132076.ods b/chart2/qa/extras/data/ods/tdf132076.ods
new file mode 100644
index 0000000000..348dd0d71f
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf132076.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf135366_data_label_series.ods b/chart2/qa/extras/data/ods/tdf135366_data_label_series.ods
new file mode 100644
index 0000000000..e7c1f7d89d
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf135366_data_label_series.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf136011.ods b/chart2/qa/extras/data/ods/tdf136011.ods
new file mode 100644
index 0000000000..03a0a7dd63
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf136011.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf136024.ods b/chart2/qa/extras/data/ods/tdf136024.ods
new file mode 100644
index 0000000000..c8d004f544
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf136024.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf146066.ods b/chart2/qa/extras/data/ods/tdf146066.ods
new file mode 100644
index 0000000000..03abe9ae68
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf146066.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf146463.ods b/chart2/qa/extras/data/ods/tdf146463.ods
new file mode 100644
index 0000000000..6214f4a500
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf146463.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf148142.ods b/chart2/qa/extras/data/ods/tdf148142.ods
new file mode 100644
index 0000000000..9b736a06d1
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf148142.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf151091.ods b/chart2/qa/extras/data/ods/tdf151091.ods
new file mode 100644
index 0000000000..b3a43b3cea
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf151091.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf158223.ods b/chart2/qa/extras/data/ods/tdf158223.ods
new file mode 100644
index 0000000000..33a7169744
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf158223.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf59857.ods b/chart2/qa/extras/data/ods/tdf59857.ods
new file mode 100644
index 0000000000..e60e9c4c12
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf59857.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf62057.ods b/chart2/qa/extras/data/ods/tdf62057.ods
new file mode 100644
index 0000000000..3945c41d03
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf62057.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf64224.ods b/chart2/qa/extras/data/ods/tdf64224.ods
new file mode 100644
index 0000000000..e60e9c4c12
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf64224.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf72776.ods b/chart2/qa/extras/data/ods/tdf72776.ods
new file mode 100644
index 0000000000..4ddad64a5e
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf72776.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf86624.ods b/chart2/qa/extras/data/ods/tdf86624.ods
new file mode 100644
index 0000000000..05702371a1
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf86624.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/tdf96161.ods b/chart2/qa/extras/data/ods/tdf96161.ods
new file mode 100644
index 0000000000..797a712a74
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf96161.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/testChartMainWithSubTitle.ods b/chart2/qa/extras/data/ods/testChartMainWithSubTitle.ods
new file mode 100644
index 0000000000..5ae4fa7d99
--- /dev/null
+++ b/chart2/qa/extras/data/ods/testChartMainWithSubTitle.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/testChartSubTitle.ods b/chart2/qa/extras/data/ods/testChartSubTitle.ods
new file mode 100644
index 0000000000..1c7814195d
--- /dev/null
+++ b/chart2/qa/extras/data/ods/testChartSubTitle.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/testColorGradientWithTransparency.ods b/chart2/qa/extras/data/ods/testColorGradientWithTransparency.ods
new file mode 100644
index 0000000000..d8a41c02c1
--- /dev/null
+++ b/chart2/qa/extras/data/ods/testColorGradientWithTransparency.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/test_CrossBetween.ods b/chart2/qa/extras/data/ods/test_CrossBetween.ods
new file mode 100644
index 0000000000..e59546b3d0
--- /dev/null
+++ b/chart2/qa/extras/data/ods/test_CrossBetween.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/trend_calculators.ods b/chart2/qa/extras/data/ods/trend_calculators.ods
new file mode 100644
index 0000000000..fdc5ea42dc
--- /dev/null
+++ b/chart2/qa/extras/data/ods/trend_calculators.ods
Binary files differ
diff --git a/chart2/qa/extras/data/ods/trendline.ods b/chart2/qa/extras/data/ods/trendline.ods
new file mode 100644
index 0000000000..707d510203
--- /dev/null
+++ b/chart2/qa/extras/data/ods/trendline.ods
Binary files differ
diff --git a/chart2/qa/extras/data/odt/axis-position.odt b/chart2/qa/extras/data/odt/axis-position.odt
new file mode 100644
index 0000000000..35ea152aa0
--- /dev/null
+++ b/chart2/qa/extras/data/odt/axis-position.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/chart.odt b/chart2/qa/extras/data/odt/chart.odt
new file mode 100644
index 0000000000..5f2dd34d2a
--- /dev/null
+++ b/chart2/qa/extras/data/odt/chart.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/multilevelcat.odt b/chart2/qa/extras/data/odt/multilevelcat.odt
new file mode 100644
index 0000000000..8148e1be10
--- /dev/null
+++ b/chart2/qa/extras/data/odt/multilevelcat.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/scatter-plot-labels.odt b/chart2/qa/extras/data/odt/scatter-plot-labels.odt
new file mode 100644
index 0000000000..ab8f243242
--- /dev/null
+++ b/chart2/qa/extras/data/odt/scatter-plot-labels.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/stock_chart_LO_6_2.odt b/chart2/qa/extras/data/odt/stock_chart_LO_6_2.odt
new file mode 100644
index 0000000000..06e15a6b0d
--- /dev/null
+++ b/chart2/qa/extras/data/odt/stock_chart_LO_6_2.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/tdf108022.odt b/chart2/qa/extras/data/odt/tdf108022.odt
new file mode 100644
index 0000000000..b8659ec32c
--- /dev/null
+++ b/chart2/qa/extras/data/odt/tdf108022.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/tdf114657.odt b/chart2/qa/extras/data/odt/tdf114657.odt
new file mode 100644
index 0000000000..4c99963b0d
--- /dev/null
+++ b/chart2/qa/extras/data/odt/tdf114657.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/tdf128733.odt b/chart2/qa/extras/data/odt/tdf128733.odt
new file mode 100644
index 0000000000..18aace26c0
--- /dev/null
+++ b/chart2/qa/extras/data/odt/tdf128733.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/tdf131143.odt b/chart2/qa/extras/data/odt/tdf131143.odt
new file mode 100644
index 0000000000..e8ffeaf5a9
--- /dev/null
+++ b/chart2/qa/extras/data/odt/tdf131143.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/tdf135366_data_label_export.odt b/chart2/qa/extras/data/odt/tdf135366_data_label_export.odt
new file mode 100644
index 0000000000..85759f2ade
--- /dev/null
+++ b/chart2/qa/extras/data/odt/tdf135366_data_label_export.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/tdf135366_data_label_point.odt b/chart2/qa/extras/data/odt/tdf135366_data_label_point.odt
new file mode 100644
index 0000000000..3c176a37ad
--- /dev/null
+++ b/chart2/qa/extras/data/odt/tdf135366_data_label_point.odt
Binary files differ
diff --git a/chart2/qa/extras/data/odt/testPieChartWallLineStyle.odt b/chart2/qa/extras/data/odt/testPieChartWallLineStyle.odt
new file mode 100644
index 0000000000..0e1ab533b1
--- /dev/null
+++ b/chart2/qa/extras/data/odt/testPieChartWallLineStyle.odt
Binary files differ
diff --git a/chart2/qa/extras/data/ppt/chart.ppt b/chart2/qa/extras/data/ppt/chart.ppt
new file mode 100644
index 0000000000..0efffaf36a
--- /dev/null
+++ b/chart2/qa/extras/data/ppt/chart.ppt
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx b/chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx
new file mode 100644
index 0000000000..3f95e932b1
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/bnc864396.pptx b/chart2/qa/extras/data/pptx/bnc864396.pptx
new file mode 100644
index 0000000000..e2e05c5161
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/bnc864396.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/bnc882383.pptx b/chart2/qa/extras/data/pptx/bnc882383.pptx
new file mode 100644
index 0000000000..18b44f0c1b
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/bnc882383.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/bnc889755.pptx b/chart2/qa/extras/data/pptx/bnc889755.pptx
new file mode 100644
index 0000000000..f3af677656
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/bnc889755.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/chart.pptx b/chart2/qa/extras/data/pptx/chart.pptx
new file mode 100644
index 0000000000..8f11ea53d0
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/chart.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/percentage-number-formats.pptx b/chart2/qa/extras/data/pptx/percentage-number-formats.pptx
new file mode 100644
index 0000000000..280c7ef291
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/percentage-number-formats.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/sparse-chart.pptx b/chart2/qa/extras/data/pptx/sparse-chart.pptx
new file mode 100644
index 0000000000..d91e8f52f4
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/sparse-chart.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/stacked-bar-chart-hidden-series.pptx b/chart2/qa/extras/data/pptx/stacked-bar-chart-hidden-series.pptx
new file mode 100644
index 0000000000..20ba89a0b7
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/stacked-bar-chart-hidden-series.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/stacked-non-stacked-mix-y-axis.pptx b/chart2/qa/extras/data/pptx/stacked-non-stacked-mix-y-axis.pptx
new file mode 100644
index 0000000000..27d099d40f
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/stacked-non-stacked-mix-y-axis.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf105517.pptx b/chart2/qa/extras/data/pptx/tdf105517.pptx
new file mode 100644
index 0000000000..ff9d747f03
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf105517.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf106217.pptx b/chart2/qa/extras/data/pptx/tdf106217.pptx
new file mode 100644
index 0000000000..64fb968b8a
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf106217.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf115107-2.pptx b/chart2/qa/extras/data/pptx/tdf115107-2.pptx
new file mode 100644
index 0000000000..629056ecc8
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf115107-2.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf115107.pptx b/chart2/qa/extras/data/pptx/tdf115107.pptx
new file mode 100644
index 0000000000..2ec5c2cd22
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf115107.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf115859.pptx b/chart2/qa/extras/data/pptx/tdf115859.pptx
new file mode 100644
index 0000000000..07943041be
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf115859.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf116163.pptx b/chart2/qa/extras/data/pptx/tdf116163.pptx
new file mode 100644
index 0000000000..5fbee8304a
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf116163.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf121205.pptx b/chart2/qa/extras/data/pptx/tdf121205.pptx
new file mode 100644
index 0000000000..e60849ec02
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf121205.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf122765.pptx b/chart2/qa/extras/data/pptx/tdf122765.pptx
new file mode 100644
index 0000000000..948190c30b
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf122765.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf125444.pptx b/chart2/qa/extras/data/pptx/tdf125444.pptx
new file mode 100644
index 0000000000..e78efecd65
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf125444.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf127393.pptx b/chart2/qa/extras/data/pptx/tdf127393.pptx
new file mode 100644
index 0000000000..7c4047817a
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf127393.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf127720.pptx b/chart2/qa/extras/data/pptx/tdf127720.pptx
new file mode 100644
index 0000000000..b10a4c5ab4
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf127720.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf127811.pptx b/chart2/qa/extras/data/pptx/tdf127811.pptx
new file mode 100644
index 0000000000..cf3fdee606
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf127811.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptx b/chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptx
new file mode 100644
index 0000000000..986dbe0dfd
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptx b/chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptx
new file mode 100644
index 0000000000..63d126b78d
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf128345_Legend_CS_TG_axial.pptx b/chart2/qa/extras/data/pptx/tdf128345_Legend_CS_TG_axial.pptx
new file mode 100644
index 0000000000..67e383cfb1
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf128345_Legend_CS_TG_axial.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptx b/chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptx
new file mode 100644
index 0000000000..58d73fcd26
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf137691_dataTable.pptx b/chart2/qa/extras/data/pptx/tdf137691_dataTable.pptx
new file mode 100644
index 0000000000..edb465d729
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf137691_dataTable.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf150176.pptx b/chart2/qa/extras/data/pptx/tdf150176.pptx
new file mode 100644
index 0000000000..fa217f92c8
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf150176.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf48041.pptx b/chart2/qa/extras/data/pptx/tdf48041.pptx
new file mode 100644
index 0000000000..b0872f84f2
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf48041.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/tdf60316.pptx b/chart2/qa/extras/data/pptx/tdf60316.pptx
new file mode 100644
index 0000000000..d1da03e5fa
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/tdf60316.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptx b/chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptx
new file mode 100644
index 0000000000..395546edb4
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptx b/chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptx
new file mode 100644
index 0000000000..361bdd643c
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptx b/chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptx
new file mode 100644
index 0000000000..a77896dcdf
--- /dev/null
+++ b/chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptx
Binary files differ
diff --git a/chart2/qa/extras/data/xls/axis_sourceformatting.xls b/chart2/qa/extras/data/xls/axis_sourceformatting.xls
new file mode 100644
index 0000000000..2ee38b7208
--- /dev/null
+++ b/chart2/qa/extras/data/xls/axis_sourceformatting.xls
Binary files differ
diff --git a/chart2/qa/extras/data/xls/chart.xls b/chart2/qa/extras/data/xls/chart.xls
new file mode 100644
index 0000000000..7c81d7f49e
--- /dev/null
+++ b/chart2/qa/extras/data/xls/chart.xls
Binary files differ
diff --git a/chart2/qa/extras/data/xls/piechart_outside.xls b/chart2/qa/extras/data/xls/piechart_outside.xls
new file mode 100644
index 0000000000..02a4f7b855
--- /dev/null
+++ b/chart2/qa/extras/data/xls/piechart_outside.xls
Binary files differ
diff --git a/chart2/qa/extras/data/xls/source_number_format_axis.xls b/chart2/qa/extras/data/xls/source_number_format_axis.xls
new file mode 100644
index 0000000000..bc54593ac1
--- /dev/null
+++ b/chart2/qa/extras/data/xls/source_number_format_axis.xls
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/ChartDataTable.xlsx b/chart2/qa/extras/data/xlsx/ChartDataTable.xlsx
new file mode 100644
index 0000000000..fff4f00aea
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/ChartDataTable.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx b/chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx
new file mode 100644
index 0000000000..b077fd2e03
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsx b/chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsx
new file mode 100644
index 0000000000..03d7a47f6c
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsx b/chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsx
new file mode 100644
index 0000000000..c157562572
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/autotitledel_2007.xlsx b/chart2/qa/extras/data/xlsx/autotitledel_2007.xlsx
new file mode 100644
index 0000000000..9ce71cf4e0
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/autotitledel_2007.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/autotitledel_2013.xlsx b/chart2/qa/extras/data/xlsx/autotitledel_2013.xlsx
new file mode 100644
index 0000000000..a5070273a8
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/autotitledel_2013.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/axis-label-rotation.xlsx b/chart2/qa/extras/data/xlsx/axis-label-rotation.xlsx
new file mode 100644
index 0000000000..cc3b1df8a4
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/axis-label-rotation.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/axis_character_properties.xlsx b/chart2/qa/extras/data/xlsx/axis_character_properties.xlsx
new file mode 100644
index 0000000000..635aafe81b
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/axis_character_properties.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx b/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx
new file mode 100644
index 0000000000..5cda3af37e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx b/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx
new file mode 100644
index 0000000000..29e42d8a47
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/axis_title_rotation.xlsx b/chart2/qa/extras/data/xlsx/axis_title_rotation.xlsx
new file mode 100644
index 0000000000..fc90e2bf4c
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/axis_title_rotation.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/bar_chart_simple.xlsx b/chart2/qa/extras/data/xlsx/bar_chart_simple.xlsx
new file mode 100644
index 0000000000..52040bf2cd
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/bar_chart_simple.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/barchart_outend.xlsx b/chart2/qa/extras/data/xlsx/barchart_outend.xlsx
new file mode 100644
index 0000000000..621c0c2844
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/barchart_outend.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsx b/chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsx
new file mode 100644
index 0000000000..c87b2b3186
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsx b/chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsx
new file mode 100644
index 0000000000..d13fe5ef48
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart-area-style-background.xlsx b/chart2/qa/extras/data/xlsx/chart-area-style-background.xlsx
new file mode 100644
index 0000000000..2baf1e2063
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart-area-style-background.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart-area-style-border.xlsx b/chart2/qa/extras/data/xlsx/chart-area-style-border.xlsx
new file mode 100644
index 0000000000..81a6a6e606
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart-area-style-border.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart-auto-background.xlsx b/chart2/qa/extras/data/xlsx/chart-auto-background.xlsx
new file mode 100644
index 0000000000..a4594ad4fc
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart-auto-background.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsx b/chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsx
new file mode 100644
index 0000000000..4e3394c8ef
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsx b/chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsx
new file mode 100644
index 0000000000..59f907dffe
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart.xlsx b/chart2/qa/extras/data/xlsx/chart.xlsx
new file mode 100644
index 0000000000..193bfc49d5
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart_label_text_break.xlsx b/chart2/qa/extras/data/xlsx/chart_label_text_break.xlsx
new file mode 100644
index 0000000000..81c4958604
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart_label_text_break.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart_pie2007.xlsx b/chart2/qa/extras/data/xlsx/chart_pie2007.xlsx
new file mode 100644
index 0000000000..583c6720a4
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart_pie2007.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart_title.xlsx b/chart2/qa/extras/data/xlsx/chart_title.xlsx
new file mode 100644
index 0000000000..0b79855462
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart_title.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/chart_with_name_range.xlsx b/chart2/qa/extras/data/xlsx/chart_with_name_range.xlsx
new file mode 100644
index 0000000000..2f2b814011
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/chart_with_name_range.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsx b/chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsx
new file mode 100644
index 0000000000..e922d4df4a
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/custom_data_label.xlsx b/chart2/qa/extras/data/xlsx/custom_data_label.xlsx
new file mode 100644
index 0000000000..cc69aaf0dc
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/custom_data_label.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/data_label.xlsx b/chart2/qa/extras/data/xlsx/data_label.xlsx
new file mode 100644
index 0000000000..1ccf9b6987
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/data_label.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsx b/chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsx
new file mode 100644
index 0000000000..1a55f5b868
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/deleted_data_labels.xlsx b/chart2/qa/extras/data/xlsx/deleted_data_labels.xlsx
new file mode 100644
index 0000000000..587c956082
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/deleted_data_labels.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsx b/chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsx
new file mode 100644
index 0000000000..06a052646f
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx b/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx
new file mode 100644
index 0000000000..ea02464b1c
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsx b/chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsx
new file mode 100644
index 0000000000..64e673e7c7
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsx b/chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsx
new file mode 100644
index 0000000000..86a0a35961
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/empty_chart.xlsx b/chart2/qa/extras/data/xlsx/empty_chart.xlsx
new file mode 100644
index 0000000000..449902146a
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/empty_chart.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/external_str_ref.xlsx b/chart2/qa/extras/data/xlsx/external_str_ref.xlsx
new file mode 100644
index 0000000000..f2dde80e1f
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/external_str_ref.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/fdo54361-1.xlsx b/chart2/qa/extras/data/xlsx/fdo54361-1.xlsx
new file mode 100644
index 0000000000..dba79ef9cf
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/fdo54361-1.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/fdo54361.xlsx b/chart2/qa/extras/data/xlsx/fdo54361.xlsx
new file mode 100644
index 0000000000..2c49802a05
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/fdo54361.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/fdo70609.xlsx b/chart2/qa/extras/data/xlsx/fdo70609.xlsx
new file mode 100644
index 0000000000..261ef88058
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/fdo70609.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/fdo78080.xlsx b/chart2/qa/extras/data/xlsx/fdo78080.xlsx
new file mode 100644
index 0000000000..c4a4e3e003
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/fdo78080.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/gapWidth.xlsx b/chart2/qa/extras/data/xlsx/gapWidth.xlsx
new file mode 100644
index 0000000000..0e9c0eec08
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/gapWidth.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/hidden_cells.xlsx b/chart2/qa/extras/data/xlsx/hidden_cells.xlsx
new file mode 100644
index 0000000000..da3e2da77e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/hidden_cells.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/incorrect_label_position.xlsx b/chart2/qa/extras/data/xlsx/incorrect_label_position.xlsx
new file mode 100644
index 0000000000..4f133b5581
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/incorrect_label_position.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx
new file mode 100644
index 0000000000..16ea01142e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/majorTickMark.xlsx b/chart2/qa/extras/data/xlsx/majorTickMark.xlsx
new file mode 100644
index 0000000000..2b6cdcfb36
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/majorTickMark.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/markerColor.xlsx b/chart2/qa/extras/data/xlsx/markerColor.xlsx
new file mode 100644
index 0000000000..65e87ff38d
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/markerColor.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/minorTickMark.xlsx b/chart2/qa/extras/data/xlsx/minorTickMark.xlsx
new file mode 100644
index 0000000000..2d68792474
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/minorTickMark.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/no_marker.xlsx b/chart2/qa/extras/data/xlsx/no_marker.xlsx
new file mode 100644
index 0000000000..228c4590fa
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/no_marker.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/number-formats.xlsx b/chart2/qa/extras/data/xlsx/number-formats.xlsx
new file mode 100644
index 0000000000..f5250c52ec
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/number-formats.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsx b/chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsx
new file mode 100644
index 0000000000..273ebeb82e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsx b/chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsx
new file mode 100644
index 0000000000..8428686ff6
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/piechart_legend.xlsx b/chart2/qa/extras/data/xlsx/piechart_legend.xlsx
new file mode 100644
index 0000000000..baea1de9b0
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/piechart_legend.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/piechart_outside.xlsx b/chart2/qa/extras/data/xlsx/piechart_outside.xlsx
new file mode 100644
index 0000000000..e90eab1e90
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/piechart_outside.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/plotVisOnly.xlsx b/chart2/qa/extras/data/xlsx/plotVisOnly.xlsx
new file mode 100644
index 0000000000..8e4fcbd5ea
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/plotVisOnly.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx
new file mode 100644
index 0000000000..f0bc588134
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/rAngAx.xlsx b/chart2/qa/extras/data/xlsx/rAngAx.xlsx
new file mode 100644
index 0000000000..f6d521a3ed
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/rAngAx.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx b/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx
new file mode 100644
index 0000000000..de5d0391d2
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/ser_labels.xlsx b/chart2/qa/extras/data/xlsx/ser_labels.xlsx
new file mode 100644
index 0000000000..ba2315666e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/ser_labels.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/smoothed_series.xlsx b/chart2/qa/extras/data/xlsx/smoothed_series.xlsx
new file mode 100644
index 0000000000..bab00ce139
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/smoothed_series.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/smoothed_series2007.xlsx b/chart2/qa/extras/data/xlsx/smoothed_series2007.xlsx
new file mode 100644
index 0000000000..3c8f0cc460
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/smoothed_series2007.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/strict_chart.xlsx b/chart2/qa/extras/data/xlsx/strict_chart.xlsx
new file mode 100644
index 0000000000..43789331a5
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/strict_chart.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf100084.xlsx b/chart2/qa/extras/data/xlsx/tdf100084.xlsx
new file mode 100644
index 0000000000..5f03f39244
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf100084.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf108107.xlsx b/chart2/qa/extras/data/xlsx/tdf108107.xlsx
new file mode 100644
index 0000000000..3f86326fa2
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf108107.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf111173.xlsx b/chart2/qa/extras/data/xlsx/tdf111173.xlsx
new file mode 100644
index 0000000000..e62c6747b5
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf111173.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf111824.xlsx b/chart2/qa/extras/data/xlsx/tdf111824.xlsx
new file mode 100644
index 0000000000..ae86756c47
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf111824.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf114139.xlsx b/chart2/qa/extras/data/xlsx/tdf114139.xlsx
new file mode 100644
index 0000000000..ef09575c1f
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf114139.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf115012.xlsx b/chart2/qa/extras/data/xlsx/tdf115012.xlsx
new file mode 100644
index 0000000000..cf8ac7d81e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf115012.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsx b/chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsx
new file mode 100644
index 0000000000..a20aa0bb1b
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf122031.xlsx b/chart2/qa/extras/data/xlsx/tdf122031.xlsx
new file mode 100644
index 0000000000..ac937a8c7a
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf122031.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf122915.xlsx b/chart2/qa/extras/data/xlsx/tdf122915.xlsx
new file mode 100644
index 0000000000..ff20e04baf
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf122915.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf124817.xlsx b/chart2/qa/extras/data/xlsx/tdf124817.xlsx
new file mode 100644
index 0000000000..d9b09644e4
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf124817.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf126033.xlsx b/chart2/qa/extras/data/xlsx/tdf126033.xlsx
new file mode 100644
index 0000000000..ee60103c98
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf126033.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf126115.xlsx b/chart2/qa/extras/data/xlsx/tdf126115.xlsx
new file mode 100644
index 0000000000..f845c06e31
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf126115.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf127777.xlsx b/chart2/qa/extras/data/xlsx/tdf127777.xlsx
new file mode 100644
index 0000000000..c04de30fc8
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf127777.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf128619.xlsx b/chart2/qa/extras/data/xlsx/tdf128619.xlsx
new file mode 100644
index 0000000000..e6eb142593
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf128619.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf128621.xlsx b/chart2/qa/extras/data/xlsx/tdf128621.xlsx
new file mode 100644
index 0000000000..93a6822da9
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf128621.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf128627.xlsx b/chart2/qa/extras/data/xlsx/tdf128627.xlsx
new file mode 100644
index 0000000000..419c1ad2f9
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf128627.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf128633.xlsx b/chart2/qa/extras/data/xlsx/tdf128633.xlsx
new file mode 100644
index 0000000000..fa186895d6
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf128633.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf128634.xlsx b/chart2/qa/extras/data/xlsx/tdf128634.xlsx
new file mode 100644
index 0000000000..91baa780ce
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf128634.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf128732.xlsx b/chart2/qa/extras/data/xlsx/tdf128732.xlsx
new file mode 100644
index 0000000000..b92afb1ed6
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf128732.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf130657.xlsx b/chart2/qa/extras/data/xlsx/tdf130657.xlsx
new file mode 100644
index 0000000000..036da200ab
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf130657.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf130986.xlsx b/chart2/qa/extras/data/xlsx/tdf130986.xlsx
new file mode 100644
index 0000000000..9674fd1ab1
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf130986.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf132076.xlsx b/chart2/qa/extras/data/xlsx/tdf132076.xlsx
new file mode 100644
index 0000000000..799ef9c855
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf132076.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsx b/chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsx
new file mode 100644
index 0000000000..f8cad0e8cf
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf133376.xlsx b/chart2/qa/extras/data/xlsx/tdf133376.xlsx
new file mode 100644
index 0000000000..2000733ec8
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf133376.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf134118.xlsx b/chart2/qa/extras/data/xlsx/tdf134118.xlsx
new file mode 100644
index 0000000000..ca86fb8cf1
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf134118.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf134225.xlsx b/chart2/qa/extras/data/xlsx/tdf134225.xlsx
new file mode 100644
index 0000000000..ae7bdc66e3
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf134225.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf134978.xlsx b/chart2/qa/extras/data/xlsx/tdf134978.xlsx
new file mode 100644
index 0000000000..ad5522a914
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf134978.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsx b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsx
new file mode 100644
index 0000000000..69cad0d671
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsx b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsx
new file mode 100644
index 0000000000..ced797258a
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf136105.xlsx b/chart2/qa/extras/data/xlsx/tdf136105.xlsx
new file mode 100644
index 0000000000..bc3a909224
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf136105.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf136267.xlsx b/chart2/qa/extras/data/xlsx/tdf136267.xlsx
new file mode 100644
index 0000000000..741a33c429
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf136267.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf136752.xlsx b/chart2/qa/extras/data/xlsx/tdf136752.xlsx
new file mode 100644
index 0000000000..05fad58cff
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf136752.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf137505.xlsx b/chart2/qa/extras/data/xlsx/tdf137505.xlsx
new file mode 100644
index 0000000000..08fa6778bb
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf137505.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf137734.xlsx b/chart2/qa/extras/data/xlsx/tdf137734.xlsx
new file mode 100644
index 0000000000..8c177becc3
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf137734.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf137917.xlsx b/chart2/qa/extras/data/xlsx/tdf137917.xlsx
new file mode 100644
index 0000000000..4d08a23acd
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf137917.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf138204.xlsx b/chart2/qa/extras/data/xlsx/tdf138204.xlsx
new file mode 100644
index 0000000000..04c2e50d79
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf138204.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf140489.xlsx b/chart2/qa/extras/data/xlsx/tdf140489.xlsx
new file mode 100644
index 0000000000..bd24f40be7
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf140489.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf142351.xlsx b/chart2/qa/extras/data/xlsx/tdf142351.xlsx
new file mode 100644
index 0000000000..0414bb3f16
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf142351.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf143127.xlsx b/chart2/qa/extras/data/xlsx/tdf143127.xlsx
new file mode 100644
index 0000000000..116a00b60c
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf143127.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf143942.xlsx b/chart2/qa/extras/data/xlsx/tdf143942.xlsx
new file mode 100644
index 0000000000..33ff6696b7
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf143942.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf150434.xlsx b/chart2/qa/extras/data/xlsx/tdf150434.xlsx
new file mode 100644
index 0000000000..309a0c4c25
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf150434.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf81396.xlsx b/chart2/qa/extras/data/xlsx/tdf81396.xlsx
new file mode 100644
index 0000000000..2a557262a2
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf81396.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf90876.xlsx b/chart2/qa/extras/data/xlsx/tdf90876.xlsx
new file mode 100644
index 0000000000..3cf60e8168
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf90876.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdf98690.xlsx b/chart2/qa/extras/data/xlsx/tdf98690.xlsx
new file mode 100644
index 0000000000..4269afa9ea
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdf98690.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsx b/chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsx
new file mode 100644
index 0000000000..0835cb3332
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsx b/chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsx
new file mode 100644
index 0000000000..01c6fe56f1
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx b/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx
new file mode 100644
index 0000000000..409389e23b
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsx b/chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsx
new file mode 100644
index 0000000000..e73d16bd2d
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsx b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsx
new file mode 100644
index 0000000000..9d2dff9b3e
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsx b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsx
new file mode 100644
index 0000000000..9e9aa0beaf
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsx b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsx
new file mode 100644
index 0000000000..b5b6177543
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsx b/chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsx
new file mode 100644
index 0000000000..47f8246e23
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx b/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx
new file mode 100644
index 0000000000..caa08956cd
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsx b/chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsx
new file mode 100644
index 0000000000..69f89ec0e4
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsx b/chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsx
new file mode 100644
index 0000000000..ba1c526b41
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testErrorBarProp.xlsx b/chart2/qa/extras/data/xlsx/testErrorBarProp.xlsx
new file mode 100644
index 0000000000..ac9dde9b79
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testErrorBarProp.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsx b/chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsx
new file mode 100644
index 0000000000..6faa39b294
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testTdf130032.xlsx b/chart2/qa/extras/data/xlsx/testTdf130032.xlsx
new file mode 100644
index 0000000000..03a3dbf403
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testTdf130032.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/testTdf90749.xlsx b/chart2/qa/extras/data/xlsx/testTdf90749.xlsx
new file mode 100644
index 0000000000..ca3bc806c0
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/testTdf90749.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/title_character_properties.xlsx b/chart2/qa/extras/data/xlsx/title_character_properties.xlsx
new file mode 100644
index 0000000000..2a239936ca
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/title_character_properties.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx
new file mode 100644
index 0000000000..c89b2af4dc
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/trendline.xlsx b/chart2/qa/extras/data/xlsx/trendline.xlsx
new file mode 100644
index 0000000000..701fcfd012
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/trendline.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/trendline2007.xlsx b/chart2/qa/extras/data/xlsx/trendline2007.xlsx
new file mode 100644
index 0000000000..87d4d5a9cf
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/trendline2007.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/vary_color.xlsx b/chart2/qa/extras/data/xlsx/vary_color.xlsx
new file mode 100644
index 0000000000..980cdda341
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/vary_color.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/vary_color2007.xlsx b/chart2/qa/extras/data/xlsx/vary_color2007.xlsx
new file mode 100644
index 0000000000..657c2176d6
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/vary_color2007.xlsx
Binary files differ
diff --git a/chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsx b/chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsx
new file mode 100644
index 0000000000..cf511dfaf2
--- /dev/null
+++ b/chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsx
Binary files differ
diff --git a/chart2/qa/extras/uichart.cxx b/chart2/qa/extras/uichart.cxx
new file mode 100644
index 0000000000..84b8658d29
--- /dev/null
+++ b/chart2/qa/extras/uichart.cxx
@@ -0,0 +1,441 @@
+/* -*- 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 <comphelper/propertyvalue.hxx>
+#include <vcl/scheduler.hxx>
+
+using namespace ::com::sun::star;
+
+class Chart2UiChartTest : public ChartTest
+{
+public:
+ Chart2UiChartTest()
+ : ChartTest("/chart2/qa/extras/data/")
+ {
+ }
+
+ void testCopyPasteToNewSheet(uno::Reference<chart::XChartDocument> xChartDoc,
+ OUString aObjectName, sal_Int32 nColumns, sal_Int32 nRows);
+};
+
+void Chart2UiChartTest::testCopyPasteToNewSheet(uno::Reference<chart::XChartDocument> xChartDoc,
+ OUString aObjectName, sal_Int32 nColumns,
+ sal_Int32 nRows)
+{
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart::XChartDataArray> xChartData(xChartDoc->getData(), uno::UNO_QUERY_THROW);
+
+ uno::Sequence<OUString> aExpectedColumnDescriptions = xChartData->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of columns in origin file", nColumns,
+ aExpectedColumnDescriptions.getLength());
+
+ uno::Sequence<OUString> aExpectedRowDescriptions = xChartData->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of rows in origin file", nRows,
+ aExpectedRowDescriptions.getLength());
+
+ Sequence<Sequence<double>> aExpectedData = xChartData->getData();
+
+ uno::Sequence<beans::PropertyValue> aPropertyValues = {
+ comphelper::makePropertyValue("ToObject", aObjectName),
+ };
+ dispatchCommand(mxComponent, ".uno:GoToObject", aPropertyValues);
+
+ dispatchCommand(mxComponent, ".uno:Copy", {});
+
+ // create a new document
+ load("private:factory/scalc");
+
+ dispatchCommand(mxComponent, ".uno:Paste", {});
+
+ uno::Reference<chart2::XChartDocument> xChartDoc2 = getChartDocFromSheet(0, mxComponent);
+ CPPUNIT_ASSERT(xChartDoc2.is());
+
+ uno::Reference<chart::XChartDataArray> xDataArray(xChartDoc2->getDataProvider(),
+ UNO_QUERY_THROW);
+
+ Sequence<OUString> aColumnDesc = xDataArray->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of columns in destination file", nColumns,
+ aColumnDesc.getLength());
+ for (sal_Int32 i = 0; i < nColumns; ++i)
+ {
+ OString sMessage("Incorrect description in column: " + OString::number(i));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aExpectedColumnDescriptions[i],
+ aColumnDesc[i]);
+ }
+
+ Sequence<OUString> aRowDesc = xDataArray->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of rows in destination file", nRows,
+ aRowDesc.getLength());
+ for (sal_Int32 i = 0; i < nRows; ++i)
+ {
+ OString sMessage("Incorrect description in row: " + OString::number(i));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aExpectedRowDescriptions[i], aRowDesc[i]);
+ }
+
+ Sequence<Sequence<double>> aData = xDataArray->getData();
+
+ for (sal_Int32 nRowIdx = 0; nRowIdx < nRows; ++nRowIdx)
+ {
+ for (sal_Int32 nColIdx = 0; nColIdx < nColumns; ++nColIdx)
+ {
+ double nValue = aData[nRowIdx][nColIdx];
+ double nExpected = aExpectedData[nRowIdx][nColIdx];
+ OString sMessage("Incorrect value in Col: " + OString::number(nColIdx)
+ + " Row: " + OString::number(nRowIdx));
+
+ if (std::isnan(nValue))
+ {
+ // On paste, 0 becomes NaN, check whether it's expected
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(sMessage.getStr(), 0.0, nExpected, 1e-1);
+ }
+ else
+ {
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(sMessage.getStr(), nExpected, nValue, 1e-1);
+ }
+ }
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf120348)
+{
+ loadFromFile(u"ods/tdf120348.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 0
+ // - Actual : 3.33625955201419
+ // - Incorrect value in Col: 2 Row: 51
+ testCopyPasteToNewSheet(xChartDoc, "Object 2", 4, 158);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf151091)
+{
+ std::vector<OUString> aExpected
+ = { u"Ωφέλιμο"_ustr, u"Επικίνδυνο"_ustr, u"Απόσταση"_ustr, u"Μάσκα"_ustr, u"Εμβόλιο"_ustr };
+
+ loadFromFile(u"ods/tdf151091.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart::XChartDataArray> xChartData(xChartDoc->getData(), uno::UNO_QUERY_THROW);
+ uno::Sequence<OUString> aSeriesList = xChartData->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), aSeriesList.getLength());
+
+ for (size_t i = 0; i < 5; ++i)
+ CPPUNIT_ASSERT_EQUAL(aExpected[i], aSeriesList[i]);
+
+ uno::Sequence<beans::PropertyValue> aPropertyValues = {
+ comphelper::makePropertyValue("ToObject", OUString("Object 1")),
+ };
+ dispatchCommand(mxComponent, ".uno:GoToObject", aPropertyValues);
+
+ dispatchCommand(mxComponent, ".uno:Copy", {});
+
+ // create a new writer document
+ load("private:factory/swriter");
+
+ dispatchCommand(mxComponent, ".uno:Paste", {});
+
+ aSeriesList = getWriterChartColumnDescriptions(mxComponent);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 5
+ // - Actual : 1
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), aSeriesList.getLength());
+
+ for (size_t i = 0; i < 5; ++i)
+ CPPUNIT_ASSERT_EQUAL(aExpected[i], aSeriesList[i]);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf107097)
+{
+ loadFromFile(u"ods/tdf107097.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getPivotChartDocFromSheet(1, mxComponent),
+ uno::UNO_QUERY_THROW);
+ testCopyPasteToNewSheet(xChartDoc, "Object 1", 4, 12);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf136011)
+{
+ loadFromFile(u"ods/tdf136011.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+ testCopyPasteToNewSheet(xChartDoc, "Object 1", 3, 9);
+
+ loadFromFile(u"ods/tdf136011.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc2(getChartCompFromSheet(0, 1, mxComponent),
+ uno::UNO_QUERY_THROW);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: Test 1 1
+ // - Actual : Test 1
+ // - Incorrect description in row: 0
+ testCopyPasteToNewSheet(xChartDoc2, "Object 2", 3, 9);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf62057)
+{
+ loadFromFile(u"ods/tdf62057.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 2
+ // - Actual : 7
+ // - Incorrect number of columns in destination file
+ testCopyPasteToNewSheet(xChartDoc, "Object 1", 2, 6);
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf98690)
+{
+ loadFromFile(u"xlsx/tdf98690.xlsx");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart::XChartDataArray> xChartData(xChartDoc->getData(), uno::UNO_QUERY_THROW);
+ uno::Sequence<OUString> aSeriesList = xChartData->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6), aSeriesList.getLength());
+
+ uno::Sequence<beans::PropertyValue> aPropertyValues = {
+ comphelper::makePropertyValue("ToObject", OUString("Chart 2")),
+ };
+ dispatchCommand(mxComponent, ".uno:GoToObject", aPropertyValues);
+
+ dispatchCommand(mxComponent, ".uno:Copy", {});
+
+ // create a new document
+ load("private:factory/scalc");
+
+ dispatchCommand(mxComponent, ".uno:Paste", {});
+
+ uno::Reference<chart::XChartDocument> xChartDoc2(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc2.is());
+ uno::Reference<chart::XChartDataArray> xChartData2(xChartDoc2->getData(), uno::UNO_QUERY_THROW);
+ uno::Sequence<OUString> aSeriesList2 = xChartData2->getColumnDescriptions();
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 12
+ // - Actual : 0
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(12), aSeriesList2.getLength());
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf101894)
+{
+ loadFromFile(u"ods/tdf101894.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart::XChartDataArray> xChartData(xChartDoc->getData(), uno::UNO_QUERY_THROW);
+
+ uno::Sequence<OUString> aExpectedColumnDescriptions = xChartData->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of columns in origin file",
+ static_cast<sal_Int32>(12),
+ aExpectedColumnDescriptions.getLength());
+
+ uno::Sequence<OUString> aExpectedRowDescriptions = xChartData->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of rows in origin file",
+ static_cast<sal_Int32>(8), aExpectedRowDescriptions.getLength());
+
+ Sequence<Sequence<double>> aExpectedData = xChartData->getData();
+
+ // Create a copy of the sheet and move to the end
+ uno::Sequence<beans::PropertyValue> aArgs(
+ comphelper::InitPropertySequence({ { "DocName", uno::Any(OUString("tdf101894")) },
+ { "Index", uno::Any(sal_uInt16(32767)) },
+ { "Copy", uno::Any(true) } }));
+ dispatchCommand(mxComponent, ".uno:Move", aArgs);
+
+ uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xIA->getCount());
+
+ for (sal_Int32 sheetIndex = 0; sheetIndex < 2; ++sheetIndex)
+ {
+ uno::Reference<chart::XChartDocument> xChartDoc2(
+ getChartCompFromSheet(sheetIndex, 0, mxComponent), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc2.is());
+ uno::Reference<chart::XChartDataArray> xChartData2(xChartDoc2->getData(),
+ uno::UNO_QUERY_THROW);
+
+ uno::Sequence<OUString> aColumnDescriptions = xChartData2->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of columns in origin file",
+ static_cast<sal_Int32>(12), aColumnDescriptions.getLength());
+ for (sal_Int32 i = 0; i < 12; ++i)
+ {
+ OString sMessage("Incorrect description in column: " + OString::number(i));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aExpectedColumnDescriptions[i],
+ aColumnDescriptions[i]);
+ }
+
+ uno::Sequence<OUString> aRowDescriptions = xChartData2->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of rows in origin file",
+ static_cast<sal_Int32>(8), aRowDescriptions.getLength());
+ for (sal_Int32 i = 0; i < 8; ++i)
+ {
+ OString sMessage("Incorrect description in row: " + OString::number(i));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aExpectedRowDescriptions[i],
+ aRowDescriptions[i]);
+ }
+
+ Sequence<Sequence<double>> aData = xChartData2->getData();
+
+ for (sal_Int32 nRowIdx = 0; nRowIdx < 8; ++nRowIdx)
+ {
+ for (sal_Int32 nColIdx = 0; nColIdx < 12; ++nColIdx)
+ {
+ double nValue = aData[nRowIdx][nColIdx];
+ double nExpected = aExpectedData[nRowIdx][nColIdx];
+ OString sMessage("Incorrect value in Col: " + OString::number(nColIdx)
+ + " Row: " + OString::number(nRowIdx));
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 1
+ // - Actual : 2.2250738585072e-308
+ // - Incorrect value in Col: 0 Row: 0
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(sMessage.getStr(), nExpected, nValue, 1e-1);
+ }
+ }
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testCopyPasteChartWithDotInSheetName)
+{
+ loadFromFile(u"ods/chartWithDotInSheetName.ods");
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ uno::UNO_QUERY_THROW);
+
+ CPPUNIT_ASSERT(xChartDoc.is());
+ uno::Reference<chart::XChartDataArray> xChartData(xChartDoc->getData(), uno::UNO_QUERY_THROW);
+
+ uno::Sequence<OUString> aExpectedColumnDescriptions = xChartData->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of columns in origin file",
+ static_cast<sal_Int32>(4),
+ aExpectedColumnDescriptions.getLength());
+
+ uno::Sequence<OUString> aExpectedRowDescriptions = xChartData->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of rows in origin file",
+ static_cast<sal_Int32>(7), aExpectedRowDescriptions.getLength());
+
+ Sequence<Sequence<double>> aExpectedData = xChartData->getData();
+
+ dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ dispatchCommand(mxComponent, ".uno:Copy", {});
+
+ uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
+ { { "Name", uno::Any(OUString("NewTab")) }, { "Index", uno::Any(sal_uInt16(2)) } }));
+ dispatchCommand(mxComponent, ".uno:Insert", aArgs);
+
+ uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xIA->getCount());
+
+ dispatchCommand(mxComponent, ".uno:Paste", {});
+
+ for (sal_Int32 sheetIndex = 0; sheetIndex < 2; ++sheetIndex)
+ {
+ uno::Reference<chart::XChartDocument> xChartDoc2(
+ getChartCompFromSheet(sheetIndex, 0, mxComponent), uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT(xChartDoc2.is());
+ uno::Reference<chart::XChartDataArray> xChartData2(xChartDoc2->getData(),
+ uno::UNO_QUERY_THROW);
+
+ uno::Sequence<OUString> aColumnDescriptions = xChartData2->getColumnDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of columns in origin file",
+ static_cast<sal_Int32>(4), aColumnDescriptions.getLength());
+ for (sal_Int32 i = 0; i < 4; ++i)
+ {
+ OString sMessage("Incorrect description in column: " + OString::number(i));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aExpectedColumnDescriptions[i],
+ aColumnDescriptions[i]);
+ }
+
+ uno::Sequence<OUString> aRowDescriptions = xChartData2->getRowDescriptions();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect number of rows in origin file",
+ static_cast<sal_Int32>(7), aRowDescriptions.getLength());
+ for (sal_Int32 i = 0; i < 7; ++i)
+ {
+ OString sMessage("Incorrect description in row: " + OString::number(i));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), aExpectedRowDescriptions[i],
+ aRowDescriptions[i]);
+ }
+
+ Sequence<Sequence<double>> aData = xChartData2->getData();
+
+ for (sal_Int32 nRowIdx = 0; nRowIdx < 7; ++nRowIdx)
+ {
+ for (sal_Int32 nColIdx = 0; nColIdx < 4; ++nColIdx)
+ {
+ double nValue = aData[nRowIdx][nColIdx];
+ double nExpected = aExpectedData[nRowIdx][nColIdx];
+ OString sMessage("Incorrect value in Col: " + OString::number(nColIdx)
+ + " Row: " + OString::number(nRowIdx));
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(sMessage.getStr(), nExpected, nValue, 1e-1);
+ }
+ }
+ }
+}
+
+CPPUNIT_TEST_FIXTURE(Chart2UiChartTest, testTdf158223)
+{
+ loadFromFile(u"ods/tdf158223.ods");
+
+ uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW);
+ uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), xIA->getCount());
+
+ for (sal_Int32 sheetIndex = 0; sheetIndex < 2; ++sheetIndex)
+ {
+ OUString sExpectedValuesX("$Tabelle" + OUString::number(sheetIndex + 1) + ".$A$2:$A$11");
+ OUString sExpectedValuesY("$Tabelle" + OUString::number(sheetIndex + 1) + ".$B$2:$B$11");
+ uno::Reference<chart2::XChartDocument> xChartDoc
+ = getChartDocFromSheet(sheetIndex, mxComponent);
+ Reference<chart2::data::XDataSequence> xValuesX
+ = getDataSequenceFromDocByRole(xChartDoc, u"values-x");
+ CPPUNIT_ASSERT_EQUAL(sExpectedValuesX, xValuesX->getSourceRangeRepresentation());
+ Reference<chart2::data::XDataSequence> xValuesY
+ = getDataSequenceFromDocByRole(xChartDoc, u"values-y");
+ CPPUNIT_ASSERT_EQUAL(sExpectedValuesY, xValuesY->getSourceRangeRepresentation());
+ }
+
+ // Remove last sheet
+ uno::Sequence<beans::PropertyValue> aArgs(
+ comphelper::InitPropertySequence({ { "Index", uno::Any(sal_uInt16(3)) } }));
+ dispatchCommand(mxComponent, ".uno:Remove", aArgs);
+
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xIA->getCount());
+
+ for (sal_Int32 sheetIndex = 0; sheetIndex < 2; ++sheetIndex)
+ {
+ OUString sExpectedValuesX("$Tabelle" + OUString::number(sheetIndex + 1) + ".$A$2:$A$11");
+ OUString sExpectedValuesY("$Tabelle" + OUString::number(sheetIndex + 1) + ".$B$2:$B$11");
+ uno::Reference<chart2::XChartDocument> xChartDoc
+ = getChartDocFromSheet(sheetIndex, mxComponent);
+ Reference<chart2::data::XDataSequence> xValuesX
+ = getDataSequenceFromDocByRole(xChartDoc, u"values-x");
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: $Tabelle2.$A$2:$A$11
+ // - Actual : $Tabelle2.$A$2:$Tabelle1.$A$11
+ CPPUNIT_ASSERT_EQUAL(sExpectedValuesX, xValuesX->getSourceRangeRepresentation());
+ Reference<chart2::data::XDataSequence> xValuesY
+ = getDataSequenceFromDocByRole(xChartDoc, u"values-y");
+ CPPUNIT_ASSERT_EQUAL(sExpectedValuesY, xValuesY->getSourceRangeRepresentation());
+ }
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/xshape/chart2xshape.cxx b/chart2/qa/extras/xshape/chart2xshape.cxx
new file mode 100644
index 0000000000..f247b7507a
--- /dev/null
+++ b/chart2/qa/extras/xshape/chart2xshape.cxx
@@ -0,0 +1,322 @@
+/* -*- 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/chart/XChartDocument.hpp>
+
+#include <com/sun/star/qa/XDumper.hpp>
+
+#include <test/xmldiff.hxx>
+#include <test/xmltesttools.hxx>
+
+#include <fstream>
+#include <string_view>
+
+class Chart2XShapeTest : public ChartTest
+{
+public:
+ Chart2XShapeTest()
+ : ChartTest("/chart2/qa/extras/xshape/data/")
+ {
+ }
+
+ void testTdf150832();
+ void testTdf149204();
+ void testTdf151424();
+ void testFdo75075();
+ void testPropertyMappingBarChart();
+ void testPieChartLabels1();
+ void testPieChartLabels2();
+ void testPieChartLabels3();
+ void testPieChartLabels4();
+ void testChart();
+ void testTdf76649TrendLineBug();
+ void testTdf88154LabelRotatedLayout();
+
+ CPPUNIT_TEST_SUITE(Chart2XShapeTest);
+ CPPUNIT_TEST(testTdf150832);
+ CPPUNIT_TEST(testTdf149204);
+ CPPUNIT_TEST(testTdf151424);
+ CPPUNIT_TEST(testFdo75075);
+ CPPUNIT_TEST(testPropertyMappingBarChart);
+ CPPUNIT_TEST(testPieChartLabels1);
+ CPPUNIT_TEST(testPieChartLabels2);
+ CPPUNIT_TEST(testPieChartLabels3);
+ CPPUNIT_TEST(testPieChartLabels4);
+ CPPUNIT_TEST(testChart);
+ CPPUNIT_TEST(testTdf76649TrendLineBug);
+ CPPUNIT_TEST(testTdf88154LabelRotatedLayout);
+
+ CPPUNIT_TEST_SUITE_END();
+
+private:
+ void compareAgainstReference(std::u16string_view rDump, std::u16string_view rReferenceFile);
+ OUString getXShapeDumpString();
+ xmlDocUniquePtr getXShapeDumpXmlDoc();
+};
+
+namespace
+{
+OUString getShapeDump(css::uno::Reference<css::chart::XChartDocument> const& doc)
+{
+ return css::uno::Reference<css::qa::XDumper>(doc, css::uno::UNO_QUERY_THROW)->dump("shapes");
+}
+
+bool checkDumpAgainstFile(std::u16string_view rDump, std::u16string_view aFilePath,
+ char const* toleranceFile)
+{
+ OString aOFile = OUStringToOString(aFilePath, RTL_TEXTENCODING_UTF8);
+
+ CPPUNIT_ASSERT_MESSAGE("dump is empty", !rDump.empty());
+
+ OString aDump = OUStringToOString(rDump, RTL_TEXTENCODING_UTF8);
+ return doXMLDiff(aOFile.getStr(), aDump.getStr(), static_cast<int>(rDump.size()),
+ toleranceFile);
+}
+}
+
+OUString Chart2XShapeTest::getXShapeDumpString()
+{
+ uno::Reference<chart::XChartDocument> xChartDoc(getChartCompFromSheet(0, 0, mxComponent),
+ UNO_QUERY_THROW);
+ return getShapeDump(xChartDoc);
+}
+
+xmlDocUniquePtr Chart2XShapeTest::getXShapeDumpXmlDoc()
+{
+ OUString rDump = getXShapeDumpString();
+ OString aXmlDump = OUStringToOString(rDump, RTL_TEXTENCODING_UTF8);
+ return xmlDocUniquePtr(xmlParseDoc(reinterpret_cast<const xmlChar*>(aXmlDump.getStr())));
+}
+
+void Chart2XShapeTest::compareAgainstReference(std::u16string_view rDump,
+ std::u16string_view rReferenceFile)
+{
+ checkDumpAgainstFile(
+ rDump,
+ Concat2View(m_directories.getPathFromSrc(u"/chart2/qa/extras/xshape/data/reference/")
+ + rReferenceFile),
+ OUStringToOString(
+ m_directories.getPathFromSrc(u"/chart2/qa/extras/xshape/data/reference/tolerance.xml"),
+ RTL_TEXTENCODING_UTF8)
+ .getStr());
+}
+
+void Chart2XShapeTest::testTdf150832()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 319
+ // - Actual : 0
+ loadFromFile(u"xls/tdf150832.xls");
+ compareAgainstReference(getXShapeDumpString(), u"tdf150832.xml");
+}
+
+void Chart2XShapeTest::testTdf149204()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 12230
+ // - Actual : 12940
+ // - Node: /XShapes/XShape[2]
+ // - Attr: sizeX
+ loadFromFile(u"pptx/tdf149204.pptx");
+ uno::Reference<chart::XChartDocument> xChartDoc = getChartDocFromDrawImpress(0, 0);
+ compareAgainstReference(getShapeDump(xChartDoc), u"tdf149204.xml");
+}
+
+void Chart2XShapeTest::testTdf151424()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 3717
+ // - Actual : 3530
+ // - Node: /XShapes/XShape[2]/XShapes/XShape[1]
+ // - Attr: positionX
+ loadFromFile(u"ods/tdf151424.ods");
+ compareAgainstReference(getXShapeDumpString(), u"tdf151424.xml");
+}
+
+void Chart2XShapeTest::testFdo75075()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ loadFromFile(u"ods/fdo75075.ods");
+ compareAgainstReference(getXShapeDumpString(), u"fdo75075.xml");
+}
+
+void Chart2XShapeTest::testPropertyMappingBarChart()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ loadFromFile(u"ods/property-mapping-bar.ods");
+ compareAgainstReference(getXShapeDumpString(), u"property-mapping-bar.xml");
+}
+
+void Chart2XShapeTest::testPieChartLabels1()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // inside placement for the best fit case
+ loadFromFile(u"xlsx/tdf90839-1.xlsx");
+ compareAgainstReference(getXShapeDumpString(), u"tdf90839-1.xml");
+}
+
+void Chart2XShapeTest::testPieChartLabels2()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // text wrap: wrap all text labels except one
+ loadFromFile(u"xlsx/tdf90839-2.xlsx");
+ compareAgainstReference(getXShapeDumpString(), u"tdf90839-2.xml");
+}
+
+void Chart2XShapeTest::testPieChartLabels3()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // text wrap: wrap no text label except one
+ loadFromFile(u"xlsx/tdf90839-3.xlsx");
+ compareAgainstReference(getXShapeDumpString(), u"tdf90839-3.xml");
+}
+
+void Chart2XShapeTest::testPieChartLabels4()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ // data value and percent value are centered horizontally
+ loadFromFile(u"ods/tdf90839-4.ods");
+ compareAgainstReference(getXShapeDumpString(), u"tdf90839-4.xml");
+}
+
+void Chart2XShapeTest::testChart()
+{
+ // FIXME: the DPI check should be removed when either (1) the test is fixed to work with
+ // non-default DPI; or (2) unit tests on Windows are made to use svp VCL plugin.
+ if (!IsDefaultDPI())
+ return;
+
+ loadFromFile(u"ods/testChart.ods");
+ compareAgainstReference(getXShapeDumpString(), u"testChart.xml");
+}
+
+void Chart2XShapeTest::testTdf76649TrendLineBug()
+{
+ // This bug prevents that the trendline (regression curve) is drawn
+ // if the first cell is empty. See tdf#76649 for details.
+
+ loadFromFile(u"ods/tdf76649_TrendLineBug.ods");
+
+ xmlDocUniquePtr pXmlDoc = getXShapeDumpXmlDoc();
+
+ // Check if the regression curve exists (which means a XShape with a certain
+ // name should exist in the dump)
+ assertXPath(pXmlDoc, "//XShape[@name='CID/D=0:CS=0:CT=0:Series=0:Curve=0']"_ostr, 1);
+}
+
+void Chart2XShapeTest::testTdf88154LabelRotatedLayout()
+{
+ loadFromFile(u"pptx/tdf88154_LabelRotatedLayout.pptx");
+ uno::Reference<chart::XChartDocument> xChartDoc = getChartDocFromDrawImpress(0, 5);
+ OUString rDump = getShapeDump(xChartDoc);
+ OString aXmlDump = OUStringToOString(rDump, RTL_TEXTENCODING_UTF8);
+ xmlDocUniquePtr pXmlDoc(xmlParseDoc(reinterpret_cast<const xmlChar*>(aXmlDump.getStr())));
+
+ {
+ OString aPath("//XShape[@text='Oct-12']/Transformation"_ostr);
+ assertXPath(pXmlDoc, aPath, 1);
+ double fT11 = getXPath(pXmlDoc, aPath + "/Line1", "column1"_ostr).toDouble();
+ double fT12 = getXPath(pXmlDoc, aPath + "/Line1", "column2"_ostr).toDouble();
+ double fT21 = getXPath(pXmlDoc, aPath + "/Line2", "column1"_ostr).toDouble();
+ double fT22 = getXPath(pXmlDoc, aPath + "/Line2", "column2"_ostr).toDouble();
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT11, -fT21, 1e-8);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT12, fT22, 1e-8);
+ }
+ {
+ OString aPath("//XShape[@text='Nov-12']/Transformation"_ostr);
+ assertXPath(pXmlDoc, aPath, 1);
+ double fT11 = getXPath(pXmlDoc, aPath + "/Line1", "column1"_ostr).toDouble();
+ double fT12 = getXPath(pXmlDoc, aPath + "/Line1", "column2"_ostr).toDouble();
+ double fT21 = getXPath(pXmlDoc, aPath + "/Line2", "column1"_ostr).toDouble();
+ double fT22 = getXPath(pXmlDoc, aPath + "/Line2", "column2"_ostr).toDouble();
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT11, -fT21, 1e-8);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT12, fT22, 1e-8);
+ }
+ {
+ OString aPath("//XShape[@text='Dec-12']/Transformation"_ostr);
+ assertXPath(pXmlDoc, aPath, 1);
+ double fT11 = getXPath(pXmlDoc, aPath + "/Line1", "column1"_ostr).toDouble();
+ double fT12 = getXPath(pXmlDoc, aPath + "/Line1", "column2"_ostr).toDouble();
+ double fT21 = getXPath(pXmlDoc, aPath + "/Line2", "column1"_ostr).toDouble();
+ double fT22 = getXPath(pXmlDoc, aPath + "/Line2", "column2"_ostr).toDouble();
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT11, -fT21, 1e-8);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT12, fT22, 1e-8);
+ }
+ {
+ OString aPath("//XShape[@text='May-13']/Transformation"_ostr);
+ assertXPath(pXmlDoc, aPath, 1);
+ double fT11 = getXPath(pXmlDoc, aPath + "/Line1", "column1"_ostr).toDouble();
+ double fT12 = getXPath(pXmlDoc, aPath + "/Line1", "column2"_ostr).toDouble();
+ double fT21 = getXPath(pXmlDoc, aPath + "/Line2", "column1"_ostr).toDouble();
+ double fT22 = getXPath(pXmlDoc, aPath + "/Line2", "column2"_ostr).toDouble();
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT11, -fT21, 1e-8);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT12, fT22, 1e-8);
+ }
+ {
+ OString aPath("//XShape[@text='Jan-14']/Transformation"_ostr);
+ assertXPath(pXmlDoc, aPath, 1);
+ double fT11 = getXPath(pXmlDoc, aPath + "/Line1", "column1"_ostr).toDouble();
+ double fT12 = getXPath(pXmlDoc, aPath + "/Line1", "column2"_ostr).toDouble();
+ double fT21 = getXPath(pXmlDoc, aPath + "/Line2", "column1"_ostr).toDouble();
+ double fT22 = getXPath(pXmlDoc, aPath + "/Line2", "column2"_ostr).toDouble();
+
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT11, -fT21, 1e-8);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fT12, fT22, 1e-8);
+ }
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(Chart2XShapeTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/qa/extras/xshape/data/ods/fdo75075.ods b/chart2/qa/extras/xshape/data/ods/fdo75075.ods
new file mode 100644
index 0000000000..d2a1be49bf
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/ods/fdo75075.ods
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/ods/property-mapping-bar.ods b/chart2/qa/extras/xshape/data/ods/property-mapping-bar.ods
new file mode 100644
index 0000000000..1a4e826dfb
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/ods/property-mapping-bar.ods
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/ods/tdf151424.ods b/chart2/qa/extras/xshape/data/ods/tdf151424.ods
new file mode 100644
index 0000000000..d1f6adcc24
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/ods/tdf151424.ods
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.ods b/chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.ods
new file mode 100644
index 0000000000..1032e960b9
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.ods
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/ods/tdf90839-4.ods b/chart2/qa/extras/xshape/data/ods/tdf90839-4.ods
new file mode 100644
index 0000000000..3126ac1759
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/ods/tdf90839-4.ods
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/ods/testChart.ods b/chart2/qa/extras/xshape/data/ods/testChart.ods
new file mode 100644
index 0000000000..956f57d525
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/ods/testChart.ods
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/pptx/tdf149204.pptx b/chart2/qa/extras/xshape/data/pptx/tdf149204.pptx
new file mode 100644
index 0000000000..60d006547a
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/pptx/tdf149204.pptx
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptx b/chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptx
new file mode 100644
index 0000000000..f3af677656
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptx
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/reference/fdo75075.xml b/chart2/qa/extras/xshape/data/reference/fdo75075.xml
new file mode 100644
index 0000000000..fe8cb00cf1
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/fdo75075.xml
@@ -0,0 +1,1692 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="16000" sizeY="9000" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="16001.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="9001.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="1524" positionY="379" sizeX="10364" sizeY="7794" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="12853.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1374" positionY="378" sizeX="10664" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1524" positionY="379" sizeX="10364" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="1524" positionY="379" sizeX="10364" sizeY="7794" type="com.sun.star.drawing.RectangleShape" name="CID/DiagramWall=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1374" positionY="378" sizeX="10664" sizeY="7944" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="1524" positionY="378" sizeX="10364" sizeY="7794" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1524" positionY="378" sizeX="10364" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
+ <XShapes>
+ <XShape positionX="1524" positionY="378" sizeX="10364" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="11888" positionY="8172"/>
+ <point positionX="1524" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="7197"/>
+ <point positionX="1524" positionY="7197"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="6223"/>
+ <point positionX="1524" positionY="6223"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="5249"/>
+ <point positionX="1524" positionY="5249"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="4275"/>
+ <point positionX="1524" positionY="4275"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="3300"/>
+ <point positionX="1524" positionY="3300"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="2326"/>
+ <point positionX="1524" positionY="2326"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="1352"/>
+ <point positionX="1524" positionY="1352"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="378"/>
+ <point positionX="1524" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="10364" positionY="7794"/>
+ <point positionX="0" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="6819"/>
+ <point positionX="0" positionY="6819"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="5845"/>
+ <point positionX="0" positionY="5845"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="4871"/>
+ <point positionX="0" positionY="4871"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="3897"/>
+ <point positionX="0" positionY="3897"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="2922"/>
+ <point positionX="0" positionY="2922"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="1948"/>
+ <point positionX="0" positionY="1948"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="974"/>
+ <point positionX="0" positionY="974"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="10364.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1524" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" name="HandlesOnly" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="NONE">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1524" positionY="8172"/>
+ <point positionX="1524" positionY="7197"/>
+ <point positionX="1524" positionY="6223"/>
+ <point positionX="1524" positionY="5249"/>
+ <point positionX="1524" positionY="4275"/>
+ <point positionX="1524" positionY="3300"/>
+ <point positionX="1524" positionY="2326"/>
+ <point positionX="1524" positionY="1352"/>
+ <point positionX="1524" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="6819"/>
+ <point positionX="0" positionY="5845"/>
+ <point positionX="0" positionY="4871"/>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="0" positionY="2922"/>
+ <point positionX="0" positionY="1948"/>
+ <point positionX="0" positionY="974"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1374" positionY="378" sizeX="10664" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1524" positionY="8172" sizeX="10364" sizeY="150" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="1524" positionY="8172" sizeX="10364" sizeY="150" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1524" positionY="8322"/>
+ <point positionX="1524" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1524" positionY="8322"/>
+ <point positionX="1524" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3596" positionY="8322"/>
+ <point positionX="3596" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3596" positionY="8322"/>
+ <point positionX="3596" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="5669" positionY="8322"/>
+ <point positionX="5669" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="5669" positionY="8322"/>
+ <point positionX="5669" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7742" positionY="8322"/>
+ <point positionX="7742" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7742" positionY="8322"/>
+ <point positionX="7742" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="9815" positionY="8322"/>
+ <point positionX="9815" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="9815" positionY="8322"/>
+ <point positionX="9815" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="8322"/>
+ <point positionX="11888" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11888" positionY="8322"/>
+ <point positionX="11888" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2072" positionY="150"/>
+ <point positionX="2072" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2072" positionY="150"/>
+ <point positionX="2072" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4145" positionY="150"/>
+ <point positionX="4145" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4145" positionY="150"/>
+ <point positionX="4145" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6218" positionY="150"/>
+ <point positionX="6218" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6218" positionY="150"/>
+ <point positionX="6218" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8291" positionY="150"/>
+ <point positionX="8291" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8291" positionY="150"/>
+ <point positionX="8291" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="150"/>
+ <point positionX="10364" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10364" positionY="150"/>
+ <point positionX="10364" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="10364.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="150.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1524" positionY="8172" sizeX="10364" sizeY="0" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1524" positionY="8172"/>
+ <point positionX="11888" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="10364" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="10364.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10365.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="151.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1374" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="1374" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1374" positionY="8172"/>
+ <point positionX="1524" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="8172"/>
+ <point positionX="1524" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="7197"/>
+ <point positionX="1524" positionY="7197"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="7197"/>
+ <point positionX="1524" positionY="7197"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="6223"/>
+ <point positionX="1524" positionY="6223"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="6223"/>
+ <point positionX="1524" positionY="6223"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="5249"/>
+ <point positionX="1524" positionY="5249"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="5249"/>
+ <point positionX="1524" positionY="5249"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="4275"/>
+ <point positionX="1524" positionY="4275"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="4275"/>
+ <point positionX="1524" positionY="4275"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="3300"/>
+ <point positionX="1524" positionY="3300"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="3300"/>
+ <point positionX="1524" positionY="3300"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="2326"/>
+ <point positionX="1524" positionY="2326"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="2326"/>
+ <point positionX="1524" positionY="2326"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="1352"/>
+ <point positionX="1524" positionY="1352"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="1352"/>
+ <point positionX="1524" positionY="1352"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="378"/>
+ <point positionX="1524" positionY="378"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="1374" positionY="378"/>
+ <point positionX="1524" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6819"/>
+ <point positionX="150" positionY="6819"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6819"/>
+ <point positionX="150" positionY="6819"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5845"/>
+ <point positionX="150" positionY="5845"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5845"/>
+ <point positionX="150" positionY="5845"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="4871"/>
+ <point positionX="150" positionY="4871"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="4871"/>
+ <point positionX="150" positionY="4871"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="150" positionY="3897"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="150" positionY="3897"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2922"/>
+ <point positionX="150" positionY="2922"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2922"/>
+ <point positionX="150" positionY="2922"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1948"/>
+ <point positionX="150" positionY="1948"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1948"/>
+ <point positionX="150" positionY="1948"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="974"/>
+ <point positionX="150" positionY="974"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="974"/>
+ <point positionX="150" positionY="974"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="150.000000" column2="0.000000" column3="1374.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1524" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1524" positionY="8172"/>
+ <point positionX="1524" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="1524.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="151.000000" column2="0.000000" column3="1374.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11888" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,1">
+ <XShapes>
+ <XShape positionX="11888" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="12038" positionY="8172"/>
+ <point positionX="11888" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="8172"/>
+ <point positionX="11888" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="7058"/>
+ <point positionX="11888" positionY="7058"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="7058"/>
+ <point positionX="11888" positionY="7058"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="5945"/>
+ <point positionX="11888" positionY="5945"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="5945"/>
+ <point positionX="11888" positionY="5945"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="4831"/>
+ <point positionX="11888" positionY="4831"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="4831"/>
+ <point positionX="11888" positionY="4831"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="3718"/>
+ <point positionX="11888" positionY="3718"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="3718"/>
+ <point positionX="11888" positionY="3718"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="2604"/>
+ <point positionX="11888" positionY="2604"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="2604"/>
+ <point positionX="11888" positionY="2604"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="1491"/>
+ <point positionX="11888" positionY="1491"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="1491"/>
+ <point positionX="11888" positionY="1491"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="378"/>
+ <point positionX="11888" positionY="378"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12038" positionY="378"/>
+ <point positionX="11888" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="150" positionY="7794"/>
+ <point positionX="0" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="7794"/>
+ <point positionX="0" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="6680"/>
+ <point positionX="0" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="6680"/>
+ <point positionX="0" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="5567"/>
+ <point positionX="0" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="5567"/>
+ <point positionX="0" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="4453"/>
+ <point positionX="0" positionY="4453"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="4453"/>
+ <point positionX="0" positionY="4453"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="3340"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="3340"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="2226"/>
+ <point positionX="0" positionY="2226"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="2226"/>
+ <point positionX="0" positionY="2226"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="1113"/>
+ <point positionX="0" positionY="1113"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="1113"/>
+ <point positionX="0" positionY="1113"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="150.000000" column2="0.000000" column3="11888.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11888" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="11888" positionY="8172"/>
+ <point positionX="11888" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="11888.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="151.000000" column2="0.000000" column3="11888.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10665.000000" column2="0.000000" column3="1374.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2042" positionY="1250" sizeX="9327" sizeY="6922" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2042" positionY="1250" sizeX="9327" sizeY="6922" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="2042" positionY="3765" sizeX="1036" sizeY="4407" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="2042" positionY="8172"/>
+ <point positionX="3078" positionY="8172"/>
+ <point positionX="3078" positionY="3765"/>
+ <point positionX="2042" positionY="3765"/>
+ <point positionX="2042" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="4407"/>
+ <point positionX="1036" positionY="4407"/>
+ <point positionX="1036" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="4407"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1036.000000" column2="0.000000" column3="2042.000000"/>
+ <Line2 column1="0.000000" column2="4407.000000" column3="3765.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4115" positionY="1993" sizeX="1036" sizeY="6179" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="4115" positionY="8172"/>
+ <point positionX="5151" positionY="8172"/>
+ <point positionX="5151" positionY="1993"/>
+ <point positionX="4115" positionY="1993"/>
+ <point positionX="4115" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="6179"/>
+ <point positionX="1036" positionY="6179"/>
+ <point positionX="1036" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="6179"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1036.000000" column2="0.000000" column3="4115.000000"/>
+ <Line2 column1="0.000000" column2="6179.000000" column3="1993.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6187" positionY="1250" sizeX="1037" sizeY="6922" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="6187" positionY="8172"/>
+ <point positionX="7224" positionY="8172"/>
+ <point positionX="7224" positionY="1250"/>
+ <point positionX="6187" positionY="1250"/>
+ <point positionX="6187" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="6922"/>
+ <point positionX="1037" positionY="6922"/>
+ <point positionX="1037" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="6922"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="6187.000000"/>
+ <Line2 column1="0.000000" column2="6922.000000" column3="1250.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8260" positionY="1524" sizeX="1037" sizeY="6648" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="8260" positionY="8172"/>
+ <point positionX="9297" positionY="8172"/>
+ <point positionX="9297" positionY="1524"/>
+ <point positionX="8260" positionY="1524"/>
+ <point positionX="8260" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="6648"/>
+ <point positionX="1037" positionY="6648"/>
+ <point positionX="1037" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="6648"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="8260.000000"/>
+ <Line2 column1="0.000000" column2="6648.000000" column3="1524.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10333" positionY="2603" sizeX="1036" sizeY="5569" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="10333" positionY="8172"/>
+ <point positionX="11369" positionY="8172"/>
+ <point positionX="11369" positionY="2603"/>
+ <point positionX="10333" positionY="2603"/>
+ <point positionX="10333" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="5569"/>
+ <point positionX="1036" positionY="5569"/>
+ <point positionX="1036" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="5569"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1036.000000" column2="0.000000" column3="10333.000000"/>
+ <Line2 column1="0.000000" column2="5569.000000" column3="2603.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9328.000000" column2="0.000000" column3="2042.000000"/>
+ <Line2 column1="0.000000" column2="6923.000000" column3="1250.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9328.000000" column2="0.000000" column3="2042.000000"/>
+ <Line2 column1="0.000000" column2="6923.000000" column3="1250.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2560" positionY="880" sizeX="8291" sizeY="4152" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2560" positionY="880" sizeX="8291" sizeY="4152" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=1:Series=0">
+ <XShapes>
+ <XShape positionX="2560" positionY="4541" sizeX="0" sizeY="491" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=1:Series=0:Point=0">
+ <XShapes>
+ <XShape positionX="2560" positionY="4541" sizeX="0" sizeY="491" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="2560" positionY="5032"/>
+ <point positionX="2560" positionY="4541"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="491"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="2560.000000"/>
+ <Line2 column1="0.000000" column2="491.000000" column3="4541.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1.000000" column2="0.000000" column3="2560.000000"/>
+ <Line2 column1="0.000000" column2="492.000000" column3="4541.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4633" positionY="3871" sizeX="0" sizeY="1060" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=1:Series=0:Point=1">
+ <XShapes>
+ <XShape positionX="4633" positionY="3871" sizeX="0" sizeY="1060" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="4633" positionY="4931"/>
+ <point positionX="4633" positionY="3871"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1060"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="4633.000000"/>
+ <Line2 column1="0.000000" column2="1060.000000" column3="3871.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1.000000" column2="0.000000" column3="4633.000000"/>
+ <Line2 column1="0.000000" column2="1061.000000" column3="3871.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6706" positionY="2620" sizeX="0" sizeY="1938" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=1:Series=0:Point=2">
+ <XShapes>
+ <XShape positionX="6706" positionY="2620" sizeX="0" sizeY="1938" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="6706" positionY="4558"/>
+ <point positionX="6706" positionY="2620"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1938"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="6706.000000"/>
+ <Line2 column1="0.000000" column2="1938.000000" column3="2620.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1.000000" column2="0.000000" column3="6706.000000"/>
+ <Line2 column1="0.000000" column2="1939.000000" column3="2620.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8778" positionY="1799" sizeX="0" sizeY="899" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=1:Series=0:Point=3">
+ <XShapes>
+ <XShape positionX="8778" positionY="1799" sizeX="0" sizeY="899" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="8778" positionY="2698"/>
+ <point positionX="8778" positionY="1799"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="899"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="8778.000000"/>
+ <Line2 column1="0.000000" column2="899.000000" column3="1799.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1.000000" column2="0.000000" column3="8778.000000"/>
+ <Line2 column1="0.000000" column2="900.000000" column3="1799.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10851" positionY="880" sizeX="0" sizeY="1241" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=1:Series=0:Point=4">
+ <XShapes>
+ <XShape positionX="10851" positionY="880" sizeX="0" sizeY="1241" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="10851" positionY="2121"/>
+ <point positionX="10851" positionY="880"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1241"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="10851.000000"/>
+ <Line2 column1="0.000000" column2="1241.000000" column3="880.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1.000000" column2="0.000000" column3="10851.000000"/>
+ <Line2 column1="0.000000" column2="1242.000000" column3="880.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="8292.000000" column2="0.000000" column3="2560.000000"/>
+ <Line2 column1="0.000000" column2="4153.000000" column3="880.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="8292.000000" column2="0.000000" column3="2560.000000"/>
+ <Line2 column1="0.000000" column2="4153.000000" column3="880.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2042" positionY="4728" sizeX="1036" sizeY="94" type="com.sun.star.drawing.GroupShape" name="CID/StockLoss=">
+ <XShapes>
+ <XShape positionX="2042" positionY="4728" sizeX="1036" sizeY="94" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="000000" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="2042.000000"/>
+ <Line2 column1="0.000000" column2="95.000000" column3="4728.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="2042.000000"/>
+ <Line2 column1="0.000000" column2="95.000000" column3="4728.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4115" positionY="972" sizeX="7254" sizeY="3850" type="com.sun.star.drawing.GroupShape" name="CID/StockGain=">
+ <XShapes>
+ <XShape positionX="4115" positionY="4288" sizeX="1036" sizeY="534" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="4115.000000"/>
+ <Line2 column1="0.000000" column2="535.000000" column3="4288.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6187" positionY="2671" sizeX="1036" sizeY="1617" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="6187.000000"/>
+ <Line2 column1="0.000000" column2="1618.000000" column3="2671.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8260" positionY="1978" sizeX="1036" sizeY="692" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="8260.000000"/>
+ <Line2 column1="0.000000" column2="693.000000" column3="1978.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10333" positionY="972" sizeX="1036" sizeY="1005" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1037.000000" column2="0.000000" column3="10333.000000"/>
+ <Line2 column1="0.000000" column2="1006.000000" column3="972.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7255.000000" column2="0.000000" column3="4115.000000"/>
+ <Line2 column1="0.000000" column2="3851.000000" column3="972.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10665.000000" column2="0.000000" column3="1374.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10665.000000" column2="0.000000" column3="1374.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="12852" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1700" positionY="8422" sizeX="10013" sizeY="398" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="1700" positionY="8422" sizeX="1722" sizeY="398" type="com.sun.star.drawing.TextShape" text="2014.02.10" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1723.000000" column2="0.000000" column3="1700.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="3773" positionY="8422" sizeX="1722" sizeY="398" type="com.sun.star.drawing.TextShape" text="2014.02.11" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1723.000000" column2="0.000000" column3="3773.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5846" positionY="8422" sizeX="1722" sizeY="398" type="com.sun.star.drawing.TextShape" text="2014.02.12" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1723.000000" column2="0.000000" column3="5846.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7918" positionY="8422" sizeX="1722" sizeY="398" type="com.sun.star.drawing.TextShape" text="2014.02.13" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1723.000000" column2="0.000000" column3="7918.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9991" positionY="8422" sizeX="1722" sizeY="398" type="com.sun.star.drawing.TextShape" text="2014.02.14" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1723.000000" column2="0.000000" column3="9991.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10014.000000" column2="0.000000" column3="1700.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="955" sizeY="8192" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="1088" positionY="7974" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="0" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="1088.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="7974.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="6999" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="10000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6999.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="6025" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="20000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6025.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="5051" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="30000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="5051.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="4077" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="40000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4077.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="3102" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="50000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="3102.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="2128" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="60000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2128.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="1154" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="70000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="1154.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="955" sizeY="398" type="com.sun.star.drawing.TextShape" text="80000" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="956.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8193.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="180" sizeX="1034" sizeY="8192" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,1">
+ <XShapes>
+ <XShape positionX="12138" positionY="7974" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6100" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="7974.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="6860" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6200" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6860.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="5747" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6300" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="5747.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="4633" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6400" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4633.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="3520" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6500" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="3520.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="2406" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6600" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2406.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="1293" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6700" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="1293.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12138" positionY="180" sizeX="1034" sizeY="398" type="com.sun.star.drawing.TextShape" text="1.6800" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="12138.000000"/>
+ <Line2 column1="0.000000" column2="8193.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12853.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12853.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12853.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13492" positionY="3952" sizeX="2298" sizeY="1096" type="com.sun.star.drawing.GroupShape" name="CID/D=0:Legend=">
+ <XShapes>
+ <XShape positionX="13492" positionY="3952" sizeX="2298" sizeY="1096" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="2299.000000" column2="0.000000" column3="13492.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3952.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13608" positionY="4145" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="13608" positionY="4145" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="13608" positionY="4145" sizeX="800" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13608" positionY="4145" sizeX="800" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13608" positionY="4643" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="13608" positionY="4643" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=1:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="13608" positionY="4643" sizeX="800" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13608" positionY="4748" sizeX="800" sizeY="0" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="13608" positionY="4748"/>
+ <point positionX="14408" positionY="4748"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="800" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="800.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="4748.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="13608.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14508" positionY="4052" sizeX="1166" sizeY="398" type="com.sun.star.drawing.TextShape" text="Volume" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4800" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1167.000000" column2="0.000000" column3="14508.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4052.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14508" positionY="4550" sizeX="875" sizeY="398" type="com.sun.star.drawing.TextShape" text="Close" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4800" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="876.000000" column2="0.000000" column3="14508.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4550.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="2299.000000" column2="0.000000" column3="13492.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3952.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/property-mapping-bar.xml b/chart2/qa/extras/xshape/data/reference/property-mapping-bar.xml
new file mode 100644
index 0000000000..6e28467c19
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/property-mapping-bar.xml
@@ -0,0 +1,1164 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="16000" sizeY="9000" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="16001.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="9001.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13996" sizeY="8640" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="756" positionY="380" sizeX="13560" sizeY="7793" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13561.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="380.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13996" sizeY="8640" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13997.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13996" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="606" positionY="378" sizeX="13710" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="756" positionY="380" sizeX="13560" sizeY="7793" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="756" positionY="380" sizeX="13560" sizeY="7793" type="com.sun.star.drawing.RectangleShape" name="CID/DiagramWall=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13561.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="380.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13561.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="380.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="606" positionY="378" sizeX="13710" sizeY="7944" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="756" positionY="378" sizeX="13560" sizeY="7794" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="756" positionY="378" sizeX="13560" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
+ <XShapes>
+ <XShape positionX="756" positionY="378" sizeX="13560" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="14316" positionY="8172"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="7058"/>
+ <point positionX="756" positionY="7058"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="5945"/>
+ <point positionX="756" positionY="5945"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="4832"/>
+ <point positionX="756" positionY="4832"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="3718"/>
+ <point positionX="756" positionY="3718"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="2605"/>
+ <point positionX="756" positionY="2605"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="1492"/>
+ <point positionX="756" positionY="1492"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="378"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="13560" positionY="7794"/>
+ <point positionX="0" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="6680"/>
+ <point positionX="0" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="5567"/>
+ <point positionX="0" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="4454"/>
+ <point positionX="0" positionY="4454"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="3340"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="2227"/>
+ <point positionX="0" positionY="2227"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="1114"/>
+ <point positionX="0" positionY="1114"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="13560.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="756" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" name="HandlesOnly" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="NONE">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8172"/>
+ <point positionX="756" positionY="7058"/>
+ <point positionX="756" positionY="5945"/>
+ <point positionX="756" positionY="4832"/>
+ <point positionX="756" positionY="3718"/>
+ <point positionX="756" positionY="2605"/>
+ <point positionX="756" positionY="1492"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13561.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13561.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="606" positionY="378" sizeX="13710" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="756" positionY="8172" sizeX="13560" sizeY="150" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="756" positionY="8172" sizeX="13560" sizeY="150" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8322"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="756" positionY="8322"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4146" positionY="8322"/>
+ <point positionX="4146" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4146" positionY="8322"/>
+ <point positionX="4146" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7536" positionY="8322"/>
+ <point positionX="7536" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7536" positionY="8322"/>
+ <point positionX="7536" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10926" positionY="8322"/>
+ <point positionX="10926" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10926" positionY="8322"/>
+ <point positionX="10926" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="8322"/>
+ <point positionX="14316" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14316" positionY="8322"/>
+ <point positionX="14316" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3390" positionY="150"/>
+ <point positionX="3390" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3390" positionY="150"/>
+ <point positionX="3390" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6780" positionY="150"/>
+ <point positionX="6780" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6780" positionY="150"/>
+ <point positionX="6780" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10170" positionY="150"/>
+ <point positionX="10170" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10170" positionY="150"/>
+ <point positionX="10170" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="150"/>
+ <point positionX="13560" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13560" positionY="150"/>
+ <point positionX="13560" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="13560.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="150.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="756" positionY="8172" sizeX="13560" sizeY="0" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8172"/>
+ <point positionX="14316" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="13560" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="13560.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13561.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="151.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="606" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="606" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="606" positionY="8172"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="8172"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="7058"/>
+ <point positionX="756" positionY="7058"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="7058"/>
+ <point positionX="756" positionY="7058"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="5945"/>
+ <point positionX="756" positionY="5945"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="5945"/>
+ <point positionX="756" positionY="5945"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="4832"/>
+ <point positionX="756" positionY="4832"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="4832"/>
+ <point positionX="756" positionY="4832"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="3718"/>
+ <point positionX="756" positionY="3718"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="3718"/>
+ <point positionX="756" positionY="3718"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="2605"/>
+ <point positionX="756" positionY="2605"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="2605"/>
+ <point positionX="756" positionY="2605"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="1492"/>
+ <point positionX="756" positionY="1492"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="1492"/>
+ <point positionX="756" positionY="1492"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="378"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="378"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="150" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="150" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="150" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="150" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="150" positionY="4454"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="150" positionY="4454"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="150" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="150" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="150" positionY="2227"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="150" positionY="2227"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="150" positionY="1114"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="150" positionY="1114"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="150.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="756" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8172"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="151.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13711.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1321" positionY="1492" sizeX="12430" sizeY="6680" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1321" positionY="3718" sizeX="11300" sizeY="4454" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="1321" positionY="7058" sizeX="1130" sizeY="1114" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff0000" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1321" positionY="8172"/>
+ <point positionX="2451" positionY="8172"/>
+ <point positionX="2451" positionY="7058"/>
+ <point positionX="1321" positionY="7058"/>
+ <point positionX="1321" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="1130" positionY="1114"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="1114"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="1321.000000"/>
+ <Line2 column1="0.000000" column2="1114.000000" column3="7058.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4711" positionY="5945" sizeX="1130" sizeY="2227" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="00ff00" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="4711" positionY="8172"/>
+ <point positionX="5841" positionY="8172"/>
+ <point positionX="5841" positionY="5945"/>
+ <point positionX="4711" positionY="5945"/>
+ <point positionX="4711" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="1130" positionY="2227"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="2227"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="4711.000000"/>
+ <Line2 column1="0.000000" column2="2227.000000" column3="5945.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8101" positionY="4832" sizeX="1130" sizeY="3340" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="0000ff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="8101" positionY="8172"/>
+ <point positionX="9231" positionY="8172"/>
+ <point positionX="9231" positionY="4832"/>
+ <point positionX="8101" positionY="4832"/>
+ <point positionX="8101" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="1130" positionY="3340"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="8101.000000"/>
+ <Line2 column1="0.000000" column2="3340.000000" column3="4832.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11491" positionY="3718" sizeX="1130" sizeY="4454" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="11491" positionY="8172"/>
+ <point positionX="12621" positionY="8172"/>
+ <point positionX="12621" positionY="3718"/>
+ <point positionX="11491" positionY="3718"/>
+ <point positionX="11491" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="1130" positionY="4454"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="4454"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="11491.000000"/>
+ <Line2 column1="0.000000" column2="4454.000000" column3="3718.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11301.000000" column2="0.000000" column3="1321.000000"/>
+ <Line2 column1="0.000000" column2="4455.000000" column3="3718.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2451" positionY="1492" sizeX="11300" sizeY="6680" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=1">
+ <XShapes>
+ <XShape positionX="2451" positionY="4832" sizeX="1130" sizeY="3340" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="2451" positionY="8172"/>
+ <point positionX="3581" positionY="8172"/>
+ <point positionX="3581" positionY="4832"/>
+ <point positionX="2451" positionY="4832"/>
+ <point positionX="2451" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="1130" positionY="3340"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="2451.000000"/>
+ <Line2 column1="0.000000" column2="3340.000000" column3="4832.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5841" positionY="3718" sizeX="1130" sizeY="4454" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="5841" positionY="8172"/>
+ <point positionX="6971" positionY="8172"/>
+ <point positionX="6971" positionY="3718"/>
+ <point positionX="5841" positionY="3718"/>
+ <point positionX="5841" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="1130" positionY="4454"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="4454"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="5841.000000"/>
+ <Line2 column1="0.000000" column2="4454.000000" column3="3718.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9231" positionY="2605" sizeX="1130" sizeY="5567" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="9231" positionY="8172"/>
+ <point positionX="10361" positionY="8172"/>
+ <point positionX="10361" positionY="2605"/>
+ <point positionX="9231" positionY="2605"/>
+ <point positionX="9231" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="1130" positionY="5567"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="5567"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="9231.000000"/>
+ <Line2 column1="0.000000" column2="5567.000000" column3="2605.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12621" positionY="1492" sizeX="1130" sizeY="6680" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="12621" positionY="8172"/>
+ <point positionX="13751" positionY="8172"/>
+ <point positionX="13751" positionY="1492"/>
+ <point positionX="12621" positionY="1492"/>
+ <point positionX="12621" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="1130" positionY="6680"/>
+ <point positionX="1130" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="6680"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1130.000000" column2="0.000000" column3="12621.000000"/>
+ <Line2 column1="0.000000" column2="6680.000000" column3="1492.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11301.000000" column2="0.000000" column3="2451.000000"/>
+ <Line2 column1="0.000000" column2="6681.000000" column3="1492.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12431.000000" column2="0.000000" column3="1321.000000"/>
+ <Line2 column1="0.000000" column2="6681.000000" column3="1492.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13711.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13711.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="12395" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2358" positionY="8422" sizeX="10357" sizeY="398" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="2358" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="2358.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5748" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="5748.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9138" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="3" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="9138.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12528" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="4" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="12528.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10358.000000" column2="0.000000" column3="2358.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="187" sizeY="8192" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="320" positionY="7974" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="0" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="7974.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="6860" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6860.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="5747" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="5747.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="4634" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="3" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4634.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="3520" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="4" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="3520.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="2407" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="5" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2407.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="1294" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="6" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="1294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="7" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8193.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12396.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13997.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13997.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14636" positionY="3952" sizeX="1154" sizeY="1096" type="com.sun.star.drawing.GroupShape" name="CID/D=0:Legend=">
+ <XShapes>
+ <XShape positionX="14636" positionY="3952" sizeX="1154" sizeY="1096" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1155.000000" column2="0.000000" column3="14636.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3952.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14752" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="14752" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="14752" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14752" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14752" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="14752" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="14752" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14752" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14752.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="15063" positionY="4052" sizeX="611" sizeY="398" type="com.sun.star.drawing.TextShape" text="col1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4800" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="612.000000" column2="0.000000" column3="15063.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4052.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="15063" positionY="4550" sizeX="611" sizeY="398" type="com.sun.star.drawing.TextShape" text="col2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4800" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="612.000000" column2="0.000000" column3="15063.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4550.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1155.000000" column2="0.000000" column3="14636.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3952.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf149204.xml b/chart2/qa/extras/xshape/data/reference/tdf149204.xml
new file mode 100644
index 0000000000..5e157983d0
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf149204.xml
@@ -0,0 +1,397 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="14277" sizeY="10471" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="14278.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="10472.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1741" positionY="1996" sizeX="12230" sizeY="7836" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="1741" positionY="1996" sizeX="12230" sizeY="7836" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="12231.000000" column2="0.000000" column3="1741.000000"/>
+ <Line2 column1="0.000000" column2="7837.000000" column3="1996.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1741" positionY="2023" sizeX="12230" sizeY="7782" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="12231.000000" column2="0.000000" column3="1741.000000"/>
+ <Line2 column1="0.000000" column2="7783.000000" column3="2023.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1741" positionY="2023" sizeX="12230" sizeY="7782" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1741" positionY="2023" sizeX="12230" sizeY="7782" type="com.sun.star.drawing.Shape3DSceneObject" name="PlotAreaExcludingAxes"/>
+ <XShape positionX="3838" positionY="3445" sizeX="9322" sizeY="5248" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="3838" positionY="3445" sizeX="9322" sizeY="5248" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="12788" positionY="8216" sizeX="372" sizeY="477" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShapes>
+ <XShape positionX="12788" positionY="8216" sizeX="372" sizeY="477" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="12788" positionY="8216" sizeX="372" sizeY="477" type="com.sun.star.drawing.TextShape" text="13" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3490" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="373.000000" column2="0.000000" column3="12788.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="8216.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="373.000000" column2="0.000000" column3="12788.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="8216.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="373.000000" column2="0.000000" column3="12788.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="8216.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7092" positionY="5831" sizeX="187" sizeY="477" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=1:DataLabels=">
+ <XShapes>
+ <XShape positionX="7092" positionY="5831" sizeX="187" sizeY="477" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=1:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="7092" positionY="5831" sizeX="187" sizeY="477" type="com.sun.star.drawing.TextShape" text="6" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3490" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7092.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="5831.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7092.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="5831.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7092.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="5831.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="3838" positionY="3445" sizeX="187" sizeY="477" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=2:DataLabels=">
+ <XShapes>
+ <XShape positionX="3838" positionY="3445" sizeX="187" sizeY="477" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=2:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="3838" positionY="3445" sizeX="187" sizeY="477" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3490" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="3838.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="3445.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="3838.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="3445.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="3838.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="3445.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9323.000000" column2="0.000000" column3="3838.000000"/>
+ <Line2 column1="0.000000" column2="5249.000000" column3="3445.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9323.000000" column2="0.000000" column3="3838.000000"/>
+ <Line2 column1="0.000000" column2="5249.000000" column3="3445.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12231.000000" column2="0.000000" column3="1741.000000"/>
+ <Line2 column1="0.000000" column2="7783.000000" column3="2023.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12231.000000" column2="0.000000" column3="1741.000000"/>
+ <Line2 column1="0.000000" column2="7837.000000" column3="1996.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4074" positionY="985" sizeX="9260" sizeY="1295" type="com.sun.star.drawing.TextShape" name="CID/Title=" text="Gr&#xE1;fico de Colunas ou Barras" fontHeight="18.600000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="118" textRightDistance="118" textUpperDistance="197" textLowerDistance="197" textMaximumFrameHeight="0" textMaximumFrameWidth="11421" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="d9d9d9" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9261.000000" column2="0.000000" column3="4074.000000"/>
+ <Line2 column1="0.000000" column2="1296.000000" column3="985.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4958" positionY="9793" sizeX="4360" sizeY="677" type="com.sun.star.drawing.GroupShape" name="CID/D=0:Legend=">
+ <XShapes>
+ <XShape positionX="4958" positionY="9793" sizeX="4360" sizeY="677" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="d9d9d9" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4361.000000" column2="0.000000" column3="4958.000000"/>
+ <Line2 column1="0.000000" column2="678.000000" column3="9793.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7910" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="7910" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="7910" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="7910.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7910" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="5b9bd5" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="7910.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="7910.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="7910.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6439" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="6439" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="6439" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="6439.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6439" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ed7d31" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="6439.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="6439.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="6439.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5074" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="5074" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=2:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="5074" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="5074.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5074" positionY="10026" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="a5a5a5" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="5074.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="5074.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="5074.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="10026.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5385" positionY="9893" sizeX="822" sizeY="477" type="com.sun.star.drawing.TextShape" text="Cupe" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="13966" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="823.000000" column2="0.000000" column3="5385.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="9893.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6750" positionY="9893" sizeX="928" sizeY="477" type="com.sun.star.drawing.TextShape" text="Hatch" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="13966" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="929.000000" column2="0.000000" column3="6750.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="9893.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8221" positionY="9893" sizeX="981" sizeY="477" type="com.sun.star.drawing.TextShape" text="Sedan" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="13966" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="982.000000" column2="0.000000" column3="8221.000000"/>
+ <Line2 column1="0.000000" column2="478.000000" column3="9893.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="4361.000000" column2="0.000000" column3="4958.000000"/>
+ <Line2 column1="0.000000" column2="678.000000" column3="9793.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf150832.xml b/chart2/qa/extras/xshape/data/reference/tdf150832.xml
new file mode 100644
index 0000000000..66730ab850
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf150832.xml
@@ -0,0 +1,974 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="15990" sizeY="8998" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="15991.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="8999.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="179" sizeX="13089" sizeY="8640" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="755" positionY="379" sizeX="12653" sizeY="7793" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="12654.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="179" sizeX="13089" sizeY="8640" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13090.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="179.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="179" sizeX="13089" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="605" positionY="377" sizeX="12803" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="755" positionY="379" sizeX="12653" sizeY="7793" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="755" positionY="379" sizeX="12653" sizeY="7793" type="com.sun.star.drawing.RectangleShape" name="CID/DiagramWall=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="000000" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="12654.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12654.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="605" positionY="377" sizeX="12803" sizeY="7944" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="755" positionY="377" sizeX="12653" sizeY="7794" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="755" positionY="377" sizeX="12653" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
+ <XShapes>
+ <XShape positionX="755" positionY="377" sizeX="12653" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="13408" positionY="8171"/>
+ <point positionX="755" positionY="8171"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="7057"/>
+ <point positionX="755" positionY="7057"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="5944"/>
+ <point positionX="755" positionY="5944"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="4831"/>
+ <point positionX="755" positionY="4831"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="3717"/>
+ <point positionX="755" positionY="3717"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="2604"/>
+ <point positionX="755" positionY="2604"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="1491"/>
+ <point positionX="755" positionY="1491"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="377"/>
+ <point positionX="755" positionY="377"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="12653" positionY="7794"/>
+ <point positionX="0" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="6680"/>
+ <point positionX="0" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="5567"/>
+ <point positionX="0" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="4454"/>
+ <point positionX="0" positionY="4454"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="3340"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="2227"/>
+ <point positionX="0" positionY="2227"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="1114"/>
+ <point positionX="0" positionY="1114"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="12653.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="755" positionY="377" sizeX="0" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" name="HandlesOnly" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="NONE">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="755" positionY="8171"/>
+ <point positionX="755" positionY="7057"/>
+ <point positionX="755" positionY="5944"/>
+ <point positionX="755" positionY="4831"/>
+ <point positionX="755" positionY="3717"/>
+ <point positionX="755" positionY="2604"/>
+ <point positionX="755" positionY="1491"/>
+ <point positionX="755" positionY="377"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12654.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12654.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="605" positionY="377" sizeX="12803" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="755" positionY="8171" sizeX="12653" sizeY="150" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="755" positionY="8171" sizeX="12653" sizeY="150" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="755" positionY="8321"/>
+ <point positionX="755" positionY="8171"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4972" positionY="8321"/>
+ <point positionX="4972" positionY="8171"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="9190" positionY="8321"/>
+ <point positionX="9190" positionY="8171"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13408" positionY="8321"/>
+ <point positionX="13408" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4217" positionY="150"/>
+ <point positionX="4217" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8435" positionY="150"/>
+ <point positionX="8435" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="12653" positionY="150"/>
+ <point positionX="12653" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="12653.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="150.000000" column3="8171.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="755" positionY="8171" sizeX="12653" sizeY="0" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="755" positionY="8171"/>
+ <point positionX="13408" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="12653" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="12653.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="8171.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12654.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="151.000000" column3="8171.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="605" positionY="377" sizeX="150" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="605" positionY="377" sizeX="150" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="605" positionY="8171"/>
+ <point positionX="755" positionY="8171"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="7057"/>
+ <point positionX="755" positionY="7057"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="5944"/>
+ <point positionX="755" positionY="5944"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="4831"/>
+ <point positionX="755" positionY="4831"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="3717"/>
+ <point positionX="755" positionY="3717"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="2604"/>
+ <point positionX="755" positionY="2604"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="1491"/>
+ <point positionX="755" positionY="1491"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="605" positionY="377"/>
+ <point positionX="755" positionY="377"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="150" positionY="6680"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="150" positionY="5567"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="150" positionY="4454"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="150" positionY="3340"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="150" positionY="2227"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="150" positionY="1114"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="150.000000" column2="0.000000" column3="605.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="755" positionY="377" sizeX="0" sizeY="7794" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="755" positionY="8171"/>
+ <point positionX="755" positionY="377"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="755.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="151.000000" column2="0.000000" column3="605.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12804.000000" column2="0.000000" column3="605.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1457" positionY="1491" sizeX="11248" sizeY="6680" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1457" positionY="2604" sizeX="9842" sizeY="5567" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="1457" positionY="7057" sizeX="1406" sizeY="1114" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1457" positionY="8171"/>
+ <point positionX="2863" positionY="8171"/>
+ <point positionX="2863" positionY="7057"/>
+ <point positionX="1457" positionY="7057"/>
+ <point positionX="1457" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1114"/>
+ <point positionX="1406" positionY="1114"/>
+ <point positionX="1406" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="1114"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1406.000000" column2="0.000000" column3="1457.000000"/>
+ <Line2 column1="0.000000" column2="1114.000000" column3="7057.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="5675" positionY="4831" sizeX="1406" sizeY="3340" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="5675" positionY="8171"/>
+ <point positionX="7081" positionY="8171"/>
+ <point positionX="7081" positionY="4831"/>
+ <point positionX="5675" positionY="4831"/>
+ <point positionX="5675" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3340"/>
+ <point positionX="1406" positionY="3340"/>
+ <point positionX="1406" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="3340"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1406.000000" column2="0.000000" column3="5675.000000"/>
+ <Line2 column1="0.000000" column2="3340.000000" column3="4831.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9893" positionY="2604" sizeX="1406" sizeY="5567" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="9893" positionY="8171"/>
+ <point positionX="11299" positionY="8171"/>
+ <point positionX="11299" positionY="2604"/>
+ <point positionX="9893" positionY="2604"/>
+ <point positionX="9893" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="5567"/>
+ <point positionX="1406" positionY="5567"/>
+ <point positionX="1406" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="5567"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1406.000000" column2="0.000000" column3="9893.000000"/>
+ <Line2 column1="0.000000" column2="5567.000000" column3="2604.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9843.000000" column2="0.000000" column3="1457.000000"/>
+ <Line2 column1="0.000000" column2="5568.000000" column3="2604.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2863" positionY="1491" sizeX="9842" sizeY="6680" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=1">
+ <XShapes>
+ <XShape positionX="2863" positionY="5944" sizeX="1406" sizeY="2227" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="2863" positionY="8171"/>
+ <point positionX="4269" positionY="8171"/>
+ <point positionX="4269" positionY="5944"/>
+ <point positionX="2863" positionY="5944"/>
+ <point positionX="2863" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="2227"/>
+ <point positionX="1406" positionY="2227"/>
+ <point positionX="1406" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="2227"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1406.000000" column2="0.000000" column3="2863.000000"/>
+ <Line2 column1="0.000000" column2="2227.000000" column3="5944.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7081" positionY="3717" sizeX="1406" sizeY="4454" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="8171"/>
+ <point positionX="8487" positionY="8171"/>
+ <point positionX="8487" positionY="3717"/>
+ <point positionX="7081" positionY="3717"/>
+ <point positionX="7081" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="4454"/>
+ <point positionX="1406" positionY="4454"/>
+ <point positionX="1406" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="4454"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1406.000000" column2="0.000000" column3="7081.000000"/>
+ <Line2 column1="0.000000" column2="4454.000000" column3="3717.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11299" positionY="1491" sizeX="1406" sizeY="6680" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="11299" positionY="8171"/>
+ <point positionX="12705" positionY="8171"/>
+ <point positionX="12705" positionY="1491"/>
+ <point positionX="11299" positionY="1491"/>
+ <point positionX="11299" positionY="8171"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="6680"/>
+ <point positionX="1406" positionY="6680"/>
+ <point positionX="1406" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="6680"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="1406.000000" column2="0.000000" column3="11299.000000"/>
+ <Line2 column1="0.000000" column2="6680.000000" column3="1491.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9843.000000" column2="0.000000" column3="2863.000000"/>
+ <Line2 column1="0.000000" column2="6681.000000" column3="1491.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11249.000000" column2="0.000000" column3="1457.000000"/>
+ <Line2 column1="0.000000" column2="6681.000000" column3="1491.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12804.000000" column2="0.000000" column3="605.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12804.000000" column2="0.000000" column3="605.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="377.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="179" sizeX="11074" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2770" positionY="8421" sizeX="8623" sizeY="398" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="2770" positionY="8421" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="1" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="2770.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8421.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6988" positionY="8421" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="6988.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8421.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11206" positionY="8421" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="3" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="11206.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8421.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="8624.000000" column2="0.000000" column3="2770.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8421.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="179" sizeX="187" sizeY="8192" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="319" positionY="7973" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="0" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="7973.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="6859" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="1" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6859.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="5746" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="5746.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="4633" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="3" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4633.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="3519" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="4" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="3519.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="2406" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="5" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2406.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="1293" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="6" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="1293.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="319" positionY="179" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="7" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="179.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="8193.000000" column3="179.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11075.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="179.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13090.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="179.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13090.000000" column2="0.000000" column3="319.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="179.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13727" positionY="3951" sizeX="2053" sizeY="1096" type="com.sun.star.drawing.GroupShape" name="CID/D=0:Legend=">
+ <XShapes>
+ <XShape positionX="13727" positionY="3951" sizeX="2053" sizeY="1096" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="000000" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="2054.000000" column2="0.000000" column3="13727.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3951.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13843" positionY="4144" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="13843" positionY="4144" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="13843" positionY="4144" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4144.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13843" positionY="4144" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4144.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4144.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4144.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13843" positionY="4642" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="13843" positionY="4642" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="13843" positionY="4642" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4642.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="13843" positionY="4642" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4642.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4642.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="13843.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4642.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14154" positionY="4051" sizeX="1510" sizeY="398" type="com.sun.star.drawing.TextShape" text="Column A" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4797" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1511.000000" column2="0.000000" column3="14154.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4051.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14154" positionY="4549" sizeX="1510" sizeY="398" type="com.sun.star.drawing.TextShape" text="Column B" fontHeight="10.000000" fontColor="000000" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4797" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1511.000000" column2="0.000000" column3="14154.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4549.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="2054.000000" column2="0.000000" column3="13727.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3951.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf151424.xml b/chart2/qa/extras/xshape/data/reference/tdf151424.xml
new file mode 100644
index 0000000000..c1aafbbd6a
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf151424.xml
@@ -0,0 +1,1160 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="16011" sizeY="9010" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="16012.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="9011.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13524" sizeY="8650" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="3730" positionY="1154" sizeX="6703" sizeY="6703" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6704.000000" column2="0.000000" column3="3730.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1154.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13524" sizeY="8650" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13525.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8651.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2991" positionY="180" sizeX="8181" sizeY="8650" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="3730" positionY="1153" sizeX="6703" sizeY="6704" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="3730" positionY="1154" sizeX="6703" sizeY="6703" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="3730" positionY="1154" sizeX="6703" sizeY="6703" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6704.000000" column2="0.000000" column3="3730.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1154.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6704.000000" column2="0.000000" column3="3730.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1154.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4104" positionY="1153" sizeX="5954" sizeY="6703" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.PolyLineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="7081" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7081" positionY="1153"/>
+ <point positionX="4179" positionY="2828"/>
+ <point positionX="4179" positionY="6180"/>
+ <point positionX="7081" positionY="7856"/>
+ <point positionX="9983" positionY="6180"/>
+ <point positionX="9983" positionY="2828"/>
+ <point positionX="7081" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="2902" positionY="3351"/>
+ <point positionX="2902" positionY="3351"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2902" positionY="0"/>
+ <point positionX="0" positionY="1675"/>
+ <point positionX="0" positionY="5027"/>
+ <point positionX="2902" positionY="6703"/>
+ <point positionX="5804" positionY="5027"/>
+ <point positionX="5804" positionY="1675"/>
+ <point positionX="2902" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="5804.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6703.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5805.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5805.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4104" positionY="1153" sizeX="5954" sizeY="6703" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.PolyLineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="1153"/>
+ <point positionX="4179" positionY="2828"/>
+ <point positionX="4179" positionY="6180"/>
+ <point positionX="7081" positionY="7856"/>
+ <point positionX="9983" positionY="6180"/>
+ <point positionX="9983" positionY="2828"/>
+ <point positionX="7081" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="2902" positionY="0"/>
+ <point positionX="0" positionY="1675"/>
+ <point positionX="0" positionY="5027"/>
+ <point positionX="2902" positionY="6703"/>
+ <point positionX="5804" positionY="5027"/>
+ <point positionX="5804" positionY="1675"/>
+ <point positionX="2902" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="5804.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6703.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5805.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6931" positionY="1153" sizeX="300" sizeY="3351" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="6931" positionY="1153" sizeX="300" sizeY="3351" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7231" positionY="4504"/>
+ <point positionX="6931" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7231" positionY="4504"/>
+ <point positionX="6931" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7231" positionY="1153"/>
+ <point positionX="6931" positionY="1153"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7231" positionY="1153"/>
+ <point positionX="6931" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="300" positionY="3351"/>
+ <point positionX="0" positionY="3351"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="300" positionY="3351"/>
+ <point positionX="0" positionY="3351"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="300" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="300" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="300.000000" column2="0.000000" column3="6931.000000"/>
+ <Line2 column1="0.000000" column2="3351.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7081" positionY="1153" sizeX="0" sizeY="3351" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="7081" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3351"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="7081.000000"/>
+ <Line2 column1="0.000000" column2="3351.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="301.000000" column2="0.000000" column3="6931.000000"/>
+ <Line2 column1="0.000000" column2="3352.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4104" positionY="2698" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="4104" positionY="2698" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7156" positionY="4374"/>
+ <point positionX="7006" positionY="4634"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7156" positionY="4374"/>
+ <point positionX="7006" positionY="4634"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4254" positionY="2698"/>
+ <point positionX="4104" positionY="2958"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4254" positionY="2698"/>
+ <point positionX="4104" positionY="2958"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="3052" positionY="1676"/>
+ <point positionX="2902" positionY="1936"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3052" positionY="1676"/>
+ <point positionX="2902" positionY="1936"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="0"/>
+ <point positionX="0" positionY="260"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="0"/>
+ <point positionX="0" positionY="260"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="3052.000000" column2="0.000000" column3="4104.000000"/>
+ <Line2 column1="0.000000" column2="1936.000000" column3="2698.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4179" positionY="2828" sizeX="2902" sizeY="1676" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="4179" positionY="2828"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="2902" positionY="1676"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="2902.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="1676.000000" column3="2828.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="3053.000000" column2="0.000000" column3="4104.000000"/>
+ <Line2 column1="0.000000" column2="1937.000000" column3="2698.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4104" positionY="4374" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="4104" positionY="4374" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7006" positionY="4374"/>
+ <point positionX="7156" positionY="4634"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7006" positionY="4374"/>
+ <point positionX="7156" positionY="4634"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4104" positionY="6050"/>
+ <point positionX="4254" positionY="6310"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="4104" positionY="6050"/>
+ <point positionX="4254" positionY="6310"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="2902" positionY="0"/>
+ <point positionX="3052" positionY="260"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2902" positionY="0"/>
+ <point positionX="3052" positionY="260"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1676"/>
+ <point positionX="150" positionY="1936"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1676"/>
+ <point positionX="150" positionY="1936"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="3052.000000" column2="0.000000" column3="4104.000000"/>
+ <Line2 column1="0.000000" column2="1936.000000" column3="4374.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4179" positionY="4504" sizeX="2902" sizeY="1676" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="4179" positionY="6180"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="2902" positionY="0"/>
+ <point positionX="0" positionY="1676"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="2902.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="1676.000000" column3="4504.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="3053.000000" column2="0.000000" column3="4104.000000"/>
+ <Line2 column1="0.000000" column2="1937.000000" column3="4374.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6931" positionY="4504" sizeX="300" sizeY="3352" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="6931" positionY="4504" sizeX="300" sizeY="3352" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="6931" positionY="4504"/>
+ <point positionX="7231" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6931" positionY="4504"/>
+ <point positionX="7231" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6931" positionY="7856"/>
+ <point positionX="7231" positionY="7856"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6931" positionY="7856"/>
+ <point positionX="7231" positionY="7856"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="300" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="300" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3352"/>
+ <point positionX="300" positionY="3352"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3352"/>
+ <point positionX="300" positionY="3352"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="300.000000" column2="0.000000" column3="6931.000000"/>
+ <Line2 column1="0.000000" column2="3352.000000" column3="4504.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7081" positionY="4504" sizeX="0" sizeY="3352" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="7081" positionY="7856"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="3352"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="7081.000000"/>
+ <Line2 column1="0.000000" column2="3352.000000" column3="4504.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="301.000000" column2="0.000000" column3="6931.000000"/>
+ <Line2 column1="0.000000" column2="3353.000000" column3="4504.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7006" positionY="4374" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="7006" positionY="4374" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7006" positionY="4634"/>
+ <point positionX="7156" positionY="4374"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7006" positionY="4634"/>
+ <point positionX="7156" positionY="4374"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="9908" positionY="6310"/>
+ <point positionX="10058" positionY="6050"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="9908" positionY="6310"/>
+ <point positionX="10058" positionY="6050"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="260"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="260"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2902" positionY="1936"/>
+ <point positionX="3052" positionY="1676"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2902" positionY="1936"/>
+ <point positionX="3052" positionY="1676"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="3052.000000" column2="0.000000" column3="7006.000000"/>
+ <Line2 column1="0.000000" column2="1936.000000" column3="4374.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7081" positionY="4504" sizeX="2902" sizeY="1676" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="9983" positionY="6180"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="2902" positionY="1676"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="2902.000000" column2="0.000000" column3="7081.000000"/>
+ <Line2 column1="0.000000" column2="1676.000000" column3="4504.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="3053.000000" column2="0.000000" column3="7006.000000"/>
+ <Line2 column1="0.000000" column2="1937.000000" column3="4374.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7006" positionY="2698" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="7006" positionY="2698" sizeX="3052" sizeY="1936" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7156" positionY="4634"/>
+ <point positionX="7006" positionY="4374"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7156" positionY="4634"/>
+ <point positionX="7006" positionY="4374"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10058" positionY="2958"/>
+ <point positionX="9908" positionY="2698"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10058" positionY="2958"/>
+ <point positionX="9908" positionY="2698"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="150" positionY="1936"/>
+ <point positionX="0" positionY="1676"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="150" positionY="1936"/>
+ <point positionX="0" positionY="1676"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3052" positionY="260"/>
+ <point positionX="2902" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3052" positionY="260"/>
+ <point positionX="2902" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="3052.000000" column2="0.000000" column3="7006.000000"/>
+ <Line2 column1="0.000000" column2="1936.000000" column3="2698.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7081" positionY="2828" sizeX="2902" sizeY="1676" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="9983" positionY="2828"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1676"/>
+ <point positionX="2902" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="2902.000000" column2="0.000000" column3="7081.000000"/>
+ <Line2 column1="0.000000" column2="1676.000000" column3="2828.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="3053.000000" column2="0.000000" column3="7006.000000"/>
+ <Line2 column1="0.000000" column2="1937.000000" column3="2698.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6931" positionY="1153" sizeX="300" sizeY="3351" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="6931" positionY="1153" sizeX="300" sizeY="3351" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7231" positionY="4504"/>
+ <point positionX="6931" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7231" positionY="4504"/>
+ <point positionX="6931" positionY="4504"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7231" positionY="1153"/>
+ <point positionX="6931" positionY="1153"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="7231" positionY="1153"/>
+ <point positionX="6931" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="300" positionY="3351"/>
+ <point positionX="0" positionY="3351"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="300" positionY="3351"/>
+ <point positionX="0" positionY="3351"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="300" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="300" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="300.000000" column2="0.000000" column3="6931.000000"/>
+ <Line2 column1="0.000000" column2="3351.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7081" positionY="1153" sizeX="0" sizeY="3351" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="4504"/>
+ <point positionX="7081" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3351"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="7081.000000"/>
+ <Line2 column1="0.000000" column2="3351.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="301.000000" column2="0.000000" column3="6931.000000"/>
+ <Line2 column1="0.000000" column2="3352.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5955.000000" column2="0.000000" column3="4104.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="5340" positionY="3163" sizeX="3482" sizeY="4022" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="5340" positionY="3163" sizeX="3482" sizeY="4022" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="5340" positionY="3163" sizeX="3482" sizeY="4022" type="com.sun.star.drawing.PolyLineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="40" textRightDistance="40" textUpperDistance="40" textLowerDistance="40" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="3163"/>
+ <point positionX="5340" positionY="3499"/>
+ <point positionX="6501" positionY="4839"/>
+ <point positionX="7081" positionY="7185"/>
+ <point positionX="8822" positionY="5509"/>
+ <point positionX="7661" positionY="4169"/>
+ <point positionX="7081" positionY="3163"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="1741" positionY="0"/>
+ <point positionX="0" positionY="336"/>
+ <point positionX="1161" positionY="1676"/>
+ <point positionX="1741" positionY="4022"/>
+ <point positionX="3482" positionY="2346"/>
+ <point positionX="2321" positionY="1006"/>
+ <point positionX="1741" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="3482.000000" column2="0.000000" column3="5340.000000"/>
+ <Line2 column1="0.000000" column2="4022.000000" column3="3163.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="3483.000000" column2="0.000000" column3="5340.000000"/>
+ <Line2 column1="0.000000" column2="4023.000000" column3="3163.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="3483.000000" column2="0.000000" column3="5340.000000"/>
+ <Line2 column1="0.000000" column2="4023.000000" column3="3163.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=1">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="4179" positionY="1153" sizeX="5804" sizeY="6703" type="com.sun.star.drawing.PolyLineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="40" textRightDistance="40" textUpperDistance="40" textLowerDistance="40" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7081" positionY="1153"/>
+ <point positionX="4179" positionY="2828"/>
+ <point positionX="4179" positionY="6180"/>
+ <point positionX="7081" positionY="7856"/>
+ <point positionX="9983" positionY="6180"/>
+ <point positionX="9983" positionY="2828"/>
+ <point positionX="7081" positionY="1153"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="2902" positionY="0"/>
+ <point positionX="0" positionY="1675"/>
+ <point positionX="0" positionY="5027"/>
+ <point positionX="2902" positionY="6703"/>
+ <point positionX="5804" positionY="5027"/>
+ <point positionX="5804" positionY="1675"/>
+ <point positionX="2902" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="5804.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6703.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5805.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5805.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5805.000000" column2="0.000000" column3="4179.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5955.000000" column2="0.000000" column3="4104.000000"/>
+ <Line2 column1="0.000000" column2="6704.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6704.000000" column2="0.000000" column3="3730.000000"/>
+ <Line2 column1="0.000000" column2="6705.000000" column3="1153.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2991" positionY="180" sizeX="8181" sizeY="8650" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2991" positionY="180" sizeX="8181" sizeY="8650" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="6737" positionY="180" sizeX="690" sizeY="398" type="com.sun.star.drawing.TextShape" text="Bla1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="691.000000" column2="0.000000" column3="6737.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2991" positionY="2143" sizeX="690" sizeY="398" type="com.sun.star.drawing.TextShape" text="Bla2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="691.000000" column2="0.000000" column3="2991.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2143.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2991" positionY="6468" sizeX="690" sizeY="398" type="com.sun.star.drawing.TextShape" text="Bla3" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="691.000000" column2="0.000000" column3="2991.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6468.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6737" positionY="8432" sizeX="690" sizeY="398" type="com.sun.star.drawing.TextShape" text="Bla4" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="691.000000" column2="0.000000" column3="6737.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8432.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10482" positionY="6468" sizeX="690" sizeY="398" type="com.sun.star.drawing.TextShape" text="Bla5" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="691.000000" column2="0.000000" column3="10482.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6468.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10482" positionY="2143" sizeX="690" sizeY="398" type="com.sun.star.drawing.TextShape" text="Bla6" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="691.000000" column2="0.000000" column3="10482.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2143.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="8182.000000" column2="0.000000" column3="2991.000000"/>
+ <Line2 column1="0.000000" column2="8651.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7331" positionY="955" sizeX="187" sizeY="3749" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="7331" positionY="4306" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="0" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7331.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4306.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7331" positionY="955" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="5" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7331.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="955.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7331.000000"/>
+ <Line2 column1="0.000000" column2="3750.000000" column3="955.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="8182.000000" column2="0.000000" column3="2991.000000"/>
+ <Line2 column1="0.000000" column2="8651.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="8182.000000" column2="0.000000" column3="2991.000000"/>
+ <Line2 column1="0.000000" column2="8651.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13525.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8651.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14164" positionY="3957" sizeX="1637" sizeY="1096" type="com.sun.star.drawing.GroupShape" name="CID/D=0:Legend=">
+ <XShapes>
+ <XShape positionX="14164" positionY="3957" sizeX="1637" sizeY="1096" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1638.000000" column2="0.000000" column3="14164.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3957.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14280" positionY="4150" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="14280" positionY="4150" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="14280" positionY="4150" sizeX="800" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4150.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14280" positionY="4255" sizeX="800" sizeY="0" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="40" textRightDistance="40" textUpperDistance="40" textLowerDistance="40" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="14280" positionY="4255"/>
+ <point positionX="15080" positionY="4255"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="800" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="800.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="4255.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4150.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4150.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14280" positionY="4648" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="14280" positionY="4648" sizeX="800" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="14280" positionY="4648" sizeX="800" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4648.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14280" positionY="4753" sizeX="800" sizeY="0" type="com.sun.star.drawing.LineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="40" textRightDistance="40" textUpperDistance="40" textLowerDistance="40" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="14280" positionY="4753"/>
+ <point positionX="15080" positionY="4753"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="800" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="800.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="4753.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4648.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="801.000000" column2="0.000000" column3="14280.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4648.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="15180" positionY="4057" sizeX="346" sizeY="398" type="com.sun.star.drawing.TextShape" text="ist" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4803" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="347.000000" column2="0.000000" column3="15180.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4057.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="15180" positionY="4555" sizeX="505" sizeY="398" type="com.sun.star.drawing.TextShape" text="soll" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4803" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="506.000000" column2="0.000000" column3="15180.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4555.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1638.000000" column2="0.000000" column3="14164.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3957.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml
new file mode 100644
index 0000000000..222e595157
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="29642" sizeY="18368" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="29643.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="18369.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8412" positionY="3819" sizeX="11070" sizeY="9723" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="9761" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8412" positionY="3819" sizeX="11070" sizeY="9723" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="11071.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="9724.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8412" positionY="3819" sizeX="11070" sizeY="9723" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9723" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9761" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="9761" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="d9d9d9" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="14621" positionY="5243" sizeX="4861" sizeY="8132" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,19316,9938,24011,11196/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4f81bd" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4861.000000" column2="0.000000" column3="14621.000000"/>
+ <Line2 column1="0.000000" column2="8132.000000" column3="5243.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9779" positionY="8680" sizeX="6100" sizeY="4861" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,11833,12661,9045,16643/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="c0504d" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6100.000000" column2="0.000000" column3="9779.000000"/>
+ <Line2 column1="0.000000" column2="4861.000000" column3="8680.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9761" positionY="7422" sizeX="4860" sizeY="1682" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,9779,8256,4937,7833/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="9bbb59" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4860.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="1682.000000" column3="7422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9926" positionY="3838" sizeX="4695" sizeY="4842" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,11497,4957,8372,1233/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="8064a2" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4695.000000" column2="0.000000" column3="9926.000000"/>
+ <Line2 column1="0.000000" column2="4842.000000" column3="3838.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14197" positionY="3819" sizeX="3861" sizeY="4861" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,16283,4113,17946,-454/D=0:CS=0:CT=0:Series=0:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4bacc6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="3861.000000" column2="0.000000" column3="14197.000000"/>
+ <Line2 column1="0.000000" column2="4861.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9724.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8412" positionY="4371" sizeX="10660" sizeY="8143" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="8412" positionY="4371" sizeX="10660" sizeY="8143" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="8412" positionY="4371" sizeX="10660" sizeY="8143" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShapes>
+ <XShape positionX="17800" positionY="9144" sizeX="1272" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="17800" positionY="9144" sizeX="1272" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Yellow&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1273.000000" column2="0.000000" column3="17800.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="9144.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1273.000000" column2="0.000000" column3="17800.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="9144.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11835" positionY="11349" sizeX="1034" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShapes>
+ <XShape positionX="11835" positionY="11349" sizeX="1034" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Black&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="11835.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="11349.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1035.000000" column2="0.000000" column3="11835.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="11349.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8412" positionY="7661" sizeX="1219" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShapes>
+ <XShape positionX="8412" positionY="7661" sizeX="1219" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Green&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8466" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1220.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="7661.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1220.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="7661.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11695" positionY="4954" sizeX="822" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShapes>
+ <XShape positionX="11695" positionY="4954" sizeX="822" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Red&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="823.000000" column2="0.000000" column3="11695.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="4954.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="823.000000" column2="0.000000" column3="11695.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="4954.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="15450" positionY="4371" sizeX="1140" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShapes>
+ <XShape positionX="15450" positionY="4371" sizeX="1140" sizeY="1165" type="com.sun.star.drawing.TextShape" text="White&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1141.000000" column2="0.000000" column3="15450.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="4371.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1141.000000" column2="0.000000" column3="15450.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="4371.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10661.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="8144.000000" column3="4371.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10661.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="8144.000000" column3="4371.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10661.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="8144.000000" column3="4371.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11071.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="9724.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11071.000000" column2="0.000000" column3="8412.000000"/>
+ <Line2 column1="0.000000" column2="9724.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml
new file mode 100644
index 0000000000..9ea3f9c16c
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="29643" sizeY="18368" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="29644.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="18369.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2513" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="9762" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2513" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2513" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9762" positionY="3819" sizeX="9721" sizeY="9723" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9762" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="9762" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="d9d9d9" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9762" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="9762" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9762" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="14622" positionY="5243" sizeX="4861" sizeY="8132" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,19317,9938,24012,11196/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4f81bd" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4861.000000" column2="0.000000" column3="14622.000000"/>
+ <Line2 column1="0.000000" column2="8132.000000" column3="5243.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9780" positionY="8680" sizeX="6100" sizeY="4861" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,11834,12661,9046,16643/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="c0504d" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6100.000000" column2="0.000000" column3="9780.000000"/>
+ <Line2 column1="0.000000" column2="4861.000000" column3="8680.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9762" positionY="7422" sizeX="4860" sizeY="1682" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,9780,8256,4938,7833/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="9bbb59" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4860.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="1682.000000" column3="7422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9927" positionY="3838" sizeX="4695" sizeY="4842" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,11498,4957,8373,1233/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="8064a2" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4695.000000" column2="0.000000" column3="9927.000000"/>
+ <Line2 column1="0.000000" column2="4842.000000" column3="3838.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14198" positionY="3819" sizeX="3861" sizeY="4861" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,16284,4113,17947,-454/D=0:CS=0:CT=0:Series=0:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4bacc6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="3861.000000" column2="0.000000" column3="14198.000000"/>
+ <Line2 column1="0.000000" column2="4861.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9762.000000"/>
+ <Line2 column1="0.000000" column2="9724.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2513" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2513" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2513" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShapes>
+ <XShape positionX="19462" positionY="9977" sizeX="7040" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="19462" positionY="9977" sizeX="7040" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="7041.000000" column2="0.000000" column3="19462.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="9977.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7041.000000" column2="0.000000" column3="19462.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="9977.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4630" positionY="12784" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShapes>
+ <XShape positionX="4630" positionY="12784" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8467" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="4630.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="12784.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="4630.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="12784.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2513" positionY="7661" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShapes>
+ <XShape positionX="2513" positionY="7661" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8467" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="7661.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="7661.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4442" positionY="3678" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShapes>
+ <XShape positionX="4442" positionY="3678" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8467" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="4442.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="3678.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="4442.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="3678.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="16335" positionY="2808" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShapes>
+ <XShape positionX="16335" positionY="2808" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="9881" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="16335.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="16335.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2513.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml
new file mode 100644
index 0000000000..a042916da8
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="29642" sizeY="18368" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="29643.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="18369.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2512" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="9761" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2512" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2512" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9723" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9761" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="9761" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="d9d9d9" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9722.000000" column3="3821.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="9761" positionY="3819" sizeX="9721" sizeY="9722" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="14621" positionY="5243" sizeX="4861" sizeY="8132" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,19316,9938,24011,11196/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4f81bd" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4861.000000" column2="0.000000" column3="14621.000000"/>
+ <Line2 column1="0.000000" column2="8132.000000" column3="5243.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9779" positionY="8680" sizeX="6100" sizeY="4861" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,11833,12661,9045,16643/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="c0504d" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6100.000000" column2="0.000000" column3="9779.000000"/>
+ <Line2 column1="0.000000" column2="4861.000000" column3="8680.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9761" positionY="7422" sizeX="4860" sizeY="1682" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,9779,8256,4937,7833/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="9bbb59" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4860.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="1682.000000" column3="7422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9926" positionY="3838" sizeX="4695" sizeY="4842" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,11497,4957,8372,1233/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="8064a2" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4695.000000" column2="0.000000" column3="9926.000000"/>
+ <Line2 column1="0.000000" column2="4842.000000" column3="3838.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14197" positionY="3819" sizeX="3861" sizeY="4861" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,16283,4113,17946,-454/D=0:CS=0:CT=0:Series=0:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4bacc6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="3861.000000" column2="0.000000" column3="14197.000000"/>
+ <Line2 column1="0.000000" column2="4861.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9723.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9722.000000" column2="0.000000" column3="9761.000000"/>
+ <Line2 column1="0.000000" column2="9724.000000" column3="3819.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2512" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2512" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2512" positionY="2808" sizeX="23989" sizeY="11141" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShapes>
+ <XShape positionX="19461" positionY="9977" sizeX="7040" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="19461" positionY="9977" sizeX="7040" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8466" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="7041.000000" column2="0.000000" column3="19461.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="9977.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7041.000000" column2="0.000000" column3="19461.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="9977.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4629" positionY="12784" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShapes>
+ <XShape positionX="4629" positionY="12784" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="4629.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="12784.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="4629.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="12784.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2512" positionY="7661" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShapes>
+ <XShape positionX="2512" positionY="7661" sizeX="7119" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="7661.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="7120.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="7661.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4441" positionY="3678" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShapes>
+ <XShape positionX="4441" positionY="3678" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="4441.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="3678.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="4441.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="3678.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="16334" positionY="2808" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShapes>
+ <XShape positionX="16334" positionY="2808" sizeX="6961" sizeY="1165" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="16334.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="16334.000000"/>
+ <Line2 column1="0.000000" column2="1166.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="23990.000000" column2="0.000000" column3="2512.000000"/>
+ <Line2 column1="0.000000" column2="11142.000000" column3="2808.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml
new file mode 100644
index 0000000000..83d7217861
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="25991" sizeY="18367" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="25992.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="18368.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1922" positionY="2294" sizeX="21359" sizeY="12760" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="8034" positionY="3894" sizeX="9575" sizeY="9575" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9576.000000" column3="3894.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1922" positionY="2294" sizeX="21359" sizeY="12760" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="21360.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="12761.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1922" positionY="2294" sizeX="21359" sizeY="12760" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="8034" positionY="3892" sizeX="9575" sizeY="9577" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="8034" positionY="3894" sizeX="9575" sizeY="9575" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="8034" positionY="3894" sizeX="9575" sizeY="9575" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="d9d9d9" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9576.000000" column3="3894.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9576.000000" column3="3894.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8034" positionY="3892" sizeX="9575" sizeY="9576" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="8034" positionY="3892" sizeX="9575" sizeY="9576" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="8034" positionY="3892" sizeX="9575" sizeY="9576" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="12821" positionY="5295" sizeX="4788" sizeY="8009" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,17445,9919,22070,11158/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4f81bd" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4788.000000" column2="0.000000" column3="12821.000000"/>
+ <Line2 column1="0.000000" column2="8009.000000" column3="5295.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8052" positionY="8680" sizeX="6008" sizeY="4788" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,10075,12602,7329,16523/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="c0504d" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6008.000000" column2="0.000000" column3="8052.000000"/>
+ <Line2 column1="0.000000" column2="4788.000000" column3="8680.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8034" positionY="7441" sizeX="4787" sizeY="1656" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,8052,8263,3282,7845/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="9bbb59" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4787.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="1656.000000" column3="7441.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="8197" positionY="3911" sizeX="4624" sizeY="4769" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,9744,5013,6666,1345/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="8064a2" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="4624.000000" column2="0.000000" column3="8197.000000"/>
+ <Line2 column1="0.000000" column2="4769.000000" column3="3911.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12404" positionY="3892" sizeX="3802" sizeY="4788" type="com.sun.star.drawing.ClosedBezierShape" name="CID/MultiClick:DragMethod=PieSegmentDragging:DragParameter=0,14458,4181,16096,-317/D=0:CS=0:CT=0:Series=0:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="26" textRightDistance="26" textUpperDistance="26" textLowerDistance="26" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="4bacc6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="3802.000000" column2="0.000000" column3="12404.000000"/>
+ <Line2 column1="0.000000" column2="4788.000000" column3="3892.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9577.000000" column3="3892.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9577.000000" column3="3892.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9577.000000" column3="3892.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="9576.000000" column2="0.000000" column3="8034.000000"/>
+ <Line2 column1="0.000000" column2="9578.000000" column3="3892.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1922" positionY="2294" sizeX="21359" sizeY="12760" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1922" positionY="2294" sizeX="21359" sizeY="12760" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1922" positionY="2294" sizeX="21359" sizeY="12760" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShapes>
+ <XShape positionX="17590" positionY="9958" sizeX="5691" sizeY="2329" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShapes>
+ <XShape positionX="17590" positionY="9958" sizeX="5691" sizeY="2329" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;120&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="5692.000000" column2="0.000000" column3="17590.000000"/>
+ <Line2 column1="0.000000" column2="2330.000000" column3="9958.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5692.000000" column2="0.000000" column3="17590.000000"/>
+ <Line2 column1="0.000000" column2="2330.000000" column3="9958.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4220" positionY="12725" sizeX="5770" sizeY="2329" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShapes>
+ <XShape positionX="4220" positionY="12725" sizeX="5770" sizeY="2329" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;100&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="5771.000000" column2="0.000000" column3="4220.000000"/>
+ <Line2 column1="0.000000" column2="2330.000000" column3="12725.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5771.000000" column2="0.000000" column3="4220.000000"/>
+ <Line2 column1="0.000000" column2="2330.000000" column3="12725.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1922" positionY="7086" sizeX="5982" sizeY="2329" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShapes>
+ <XShape positionX="1922" positionY="7086" sizeX="5982" sizeY="2329" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;20&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="5983.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="2330.000000" column3="7086.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="5983.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="2330.000000" column3="7086.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2688" positionY="3152" sizeX="6961" sizeY="1747" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShapes>
+ <XShape positionX="2688" positionY="3152" sizeX="6961" sizeY="1747" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;70&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="2688.000000"/>
+ <Line2 column1="0.000000" column2="1748.000000" column3="3152.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="2688.000000"/>
+ <Line2 column1="0.000000" column2="1748.000000" column3="3152.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14509" positionY="2294" sizeX="6961" sizeY="1747" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShapes>
+ <XShape positionX="14509" positionY="2294" sizeX="6961" sizeY="1747" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;50&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8664" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="14509.000000"/>
+ <Line2 column1="0.000000" column2="1748.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="6962.000000" column2="0.000000" column3="14509.000000"/>
+ <Line2 column1="0.000000" column2="1748.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="21360.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="12761.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="21360.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="12761.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="21360.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="12761.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="21360.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="12761.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="21360.000000" column2="0.000000" column3="1922.000000"/>
+ <Line2 column1="0.000000" column2="12761.000000" column3="2294.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/testChart.xml b/chart2/qa/extras/xshape/data/reference/testChart.xml
new file mode 100644
index 0000000000..ad64e5f3b6
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/testChart.xml
@@ -0,0 +1,1218 @@
+<?xml version="1.0"?>
+<XShapes>
+ <XShape positionX="0" positionY="0" sizeX="16000" sizeY="9000" type="com.sun.star.drawing.RectangleShape" name="CID/Page=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="16001.000000" column2="0.000000" column3="0.000000"/>
+ <Line2 column1="0.000000" column2="9001.000000" column3="0.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13864" sizeY="8640" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShapes>
+ <XShape positionX="756" positionY="379" sizeX="13428" sizeY="7794" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13429.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13864" sizeY="8640" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13865.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="13864" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="606" positionY="378" sizeX="13578" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="756" positionY="379" sizeX="13428" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="PlotAreaExcludingAxes">
+ <XShapes>
+ <XShape positionX="756" positionY="379" sizeX="13428" sizeY="7794" type="com.sun.star.drawing.RectangleShape" name="CID/DiagramWall=" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="13429.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13429.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="379.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="606" positionY="378" sizeX="13577" sizeY="7944" type="com.sun.star.drawing.GroupShape" name="testonly;CooContainer=XXX_CID">
+ <XShapes>
+ <XShape positionX="756" positionY="378" sizeX="13427" sizeY="7794" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="756" positionY="378" sizeX="13427" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0:Grid=0">
+ <XShapes>
+ <XShape positionX="756" positionY="378" sizeX="13427" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="14183" positionY="8172"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="6873"/>
+ <point positionX="756" positionY="6873"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="5574"/>
+ <point positionX="756" positionY="5574"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="4275"/>
+ <point positionX="756" positionY="4275"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="2976"/>
+ <point positionX="756" positionY="2976"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="1677"/>
+ <point positionX="756" positionY="1677"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="378"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="13427" positionY="7794"/>
+ <point positionX="0" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="6495"/>
+ <point positionX="0" positionY="6495"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="5196"/>
+ <point positionX="0" positionY="5196"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="3897"/>
+ <point positionX="0" positionY="3897"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="2598"/>
+ <point positionX="0" positionY="2598"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="1299"/>
+ <point positionX="0" positionY="1299"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="13427.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="756" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" name="HandlesOnly" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="NONE">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8172"/>
+ <point positionX="756" positionY="6873"/>
+ <point positionX="756" positionY="5574"/>
+ <point positionX="756" positionY="4275"/>
+ <point positionX="756" positionY="2976"/>
+ <point positionX="756" positionY="1677"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="6495"/>
+ <point positionX="0" positionY="5196"/>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="0" positionY="2598"/>
+ <point positionX="0" positionY="1299"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13428.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13428.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="606" positionY="378" sizeX="13577" sizeY="7944" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="756" positionY="8172" sizeX="13427" sizeY="150" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="756" positionY="8172" sizeX="13427" sizeY="150" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8322"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="756" positionY="8322"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3441" positionY="8322"/>
+ <point positionX="3441" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="3441" positionY="8322"/>
+ <point positionX="3441" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6127" positionY="8322"/>
+ <point positionX="6127" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="6127" positionY="8322"/>
+ <point positionX="6127" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8812" positionY="8322"/>
+ <point positionX="8812" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8812" positionY="8322"/>
+ <point positionX="8812" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11498" positionY="8322"/>
+ <point positionX="11498" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="11498" positionY="8322"/>
+ <point positionX="11498" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="8322"/>
+ <point positionX="14183" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="14183" positionY="8322"/>
+ <point positionX="14183" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="150"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2685" positionY="150"/>
+ <point positionX="2685" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="2685" positionY="150"/>
+ <point positionX="2685" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="5371" positionY="150"/>
+ <point positionX="5371" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="5371" positionY="150"/>
+ <point positionX="5371" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8056" positionY="150"/>
+ <point positionX="8056" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="8056" positionY="150"/>
+ <point positionX="8056" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10742" positionY="150"/>
+ <point positionX="10742" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="10742" positionY="150"/>
+ <point positionX="10742" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="150"/>
+ <point positionX="13427" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="13427" positionY="150"/>
+ <point positionX="13427" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="13427.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="150.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="756" positionY="8172" sizeX="13427" sizeY="0" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8172"/>
+ <point positionX="14183" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="13427" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="13427.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="0.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13428.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="151.000000" column3="8172.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="606" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="606" positionY="378" sizeX="150" sizeY="7794" type="com.sun.star.drawing.PolyLineShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="606" positionY="8172"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="8172"/>
+ <point positionX="756" positionY="8172"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="6873"/>
+ <point positionX="756" positionY="6873"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="6873"/>
+ <point positionX="756" positionY="6873"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="5574"/>
+ <point positionX="756" positionY="5574"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="5574"/>
+ <point positionX="756" positionY="5574"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="4275"/>
+ <point positionX="756" positionY="4275"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="4275"/>
+ <point positionX="756" positionY="4275"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="2976"/>
+ <point positionX="756" positionY="2976"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="2976"/>
+ <point positionX="756" positionY="2976"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="1677"/>
+ <point positionX="756" positionY="1677"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="1677"/>
+ <point positionX="756" positionY="1677"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="378"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="606" positionY="378"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="150" positionY="7794"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6495"/>
+ <point positionX="150" positionY="6495"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="6495"/>
+ <point positionX="150" positionY="6495"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5196"/>
+ <point positionX="150" positionY="5196"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="5196"/>
+ <point positionX="150" positionY="5196"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="150" positionY="3897"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="150" positionY="3897"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2598"/>
+ <point positionX="150" positionY="2598"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="2598"/>
+ <point positionX="150" positionY="2598"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1299"/>
+ <point positionX="150" positionY="1299"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="1299"/>
+ <point positionX="150" positionY="1299"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ <pointSequence>
+ <point positionX="0" positionY="0"/>
+ <point positionX="150" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="150.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="756" positionY="378" sizeX="0" sizeY="7794" type="com.sun.star.drawing.LineShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" lineStyle="SOLID">
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="756" positionY="8172"/>
+ <point positionX="756" positionY="378"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="7794"/>
+ <point positionX="0" positionY="0"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="0.000000" column2="0.000000" column3="756.000000"/>
+ <Line2 column1="0.000000" column2="7794.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="151.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7795.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13578.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="1203" positionY="1677" sizeX="12533" sizeY="6495" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="1203" positionY="1677" sizeX="11638" sizeY="6495" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0">
+ <XShapes>
+ <XShape positionX="1203" positionY="6873" sizeX="895" sizeY="1299" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="1203" positionY="8172"/>
+ <point positionX="2098" positionY="8172"/>
+ <point positionX="2098" positionY="6873"/>
+ <point positionX="1203" positionY="6873"/>
+ <point positionX="1203" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1299"/>
+ <point positionX="895" positionY="1299"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="1299"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="1203.000000"/>
+ <Line2 column1="0.000000" column2="1299.000000" column3="6873.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="3889" positionY="5574" sizeX="895" sizeY="2598" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="3889" positionY="8172"/>
+ <point positionX="4784" positionY="8172"/>
+ <point positionX="4784" positionY="5574"/>
+ <point positionX="3889" positionY="5574"/>
+ <point positionX="3889" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="2598"/>
+ <point positionX="895" positionY="2598"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="2598"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="3889.000000"/>
+ <Line2 column1="0.000000" column2="2598.000000" column3="5574.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="6574" positionY="4275" sizeX="895" sizeY="3897" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="6574" positionY="8172"/>
+ <point positionX="7469" positionY="8172"/>
+ <point positionX="7469" positionY="4275"/>
+ <point positionX="6574" positionY="4275"/>
+ <point positionX="6574" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="895" positionY="3897"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="3897"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="6574.000000"/>
+ <Line2 column1="0.000000" column2="3897.000000" column3="4275.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="9260" positionY="2976" sizeX="895" sizeY="5196" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="9260" positionY="8172"/>
+ <point positionX="10155" positionY="8172"/>
+ <point positionX="10155" positionY="2976"/>
+ <point positionX="9260" positionY="2976"/>
+ <point positionX="9260" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="5196"/>
+ <point positionX="895" positionY="5196"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="5196"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="9260.000000"/>
+ <Line2 column1="0.000000" column2="5196.000000" column3="2976.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="11946" positionY="1677" sizeX="895" sizeY="6495" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="11946" positionY="8172"/>
+ <point positionX="12841" positionY="8172"/>
+ <point positionX="12841" positionY="1677"/>
+ <point positionX="11946" positionY="1677"/>
+ <point positionX="11946" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="6495"/>
+ <point positionX="895" positionY="6495"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="6495"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="11946.000000"/>
+ <Line2 column1="0.000000" column2="6495.000000" column3="1677.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11639.000000" column2="0.000000" column3="1203.000000"/>
+ <Line2 column1="0.000000" column2="6496.000000" column3="1677.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="2098" positionY="2976" sizeX="11638" sizeY="5196" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=1">
+ <XShapes>
+ <XShape positionX="2098" positionY="5574" sizeX="896" sizeY="2598" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=0" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="2098" positionY="8172"/>
+ <point positionX="2994" positionY="8172"/>
+ <point positionX="2994" positionY="5574"/>
+ <point positionX="2098" positionY="5574"/>
+ <point positionX="2098" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="2598"/>
+ <point positionX="896" positionY="2598"/>
+ <point positionX="896" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="2598"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="896.000000" column2="0.000000" column3="2098.000000"/>
+ <Line2 column1="0.000000" column2="2598.000000" column3="5574.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4784" positionY="6873" sizeX="895" sizeY="1299" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=1" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="4784" positionY="8172"/>
+ <point positionX="5679" positionY="8172"/>
+ <point positionX="5679" positionY="6873"/>
+ <point positionX="4784" positionY="6873"/>
+ <point positionX="4784" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="1299"/>
+ <point positionX="895" positionY="1299"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="1299"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="4784.000000"/>
+ <Line2 column1="0.000000" column2="1299.000000" column3="6873.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7470" positionY="4275" sizeX="895" sizeY="3897" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=2" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="7470" positionY="8172"/>
+ <point positionX="8365" positionY="8172"/>
+ <point positionX="8365" positionY="4275"/>
+ <point positionX="7470" positionY="4275"/>
+ <point positionX="7470" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="3897"/>
+ <point positionX="895" positionY="3897"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="3897"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="7470.000000"/>
+ <Line2 column1="0.000000" column2="3897.000000" column3="4275.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10155" positionY="2976" sizeX="895" sizeY="5196" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=3" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="10155" positionY="8172"/>
+ <point positionX="11050" positionY="8172"/>
+ <point positionX="11050" positionY="2976"/>
+ <point positionX="10155" positionY="2976"/>
+ <point positionX="10155" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="5196"/>
+ <point positionX="895" positionY="5196"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="5196"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="10155.000000"/>
+ <Line2 column1="0.000000" column2="5196.000000" column3="2976.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12841" positionY="5574" sizeX="895" sizeY="2598" type="com.sun.star.drawing.PolyPolygonShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:Point=4" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <PolyPolygon>
+ <pointSequence>
+ <point positionX="12841" positionY="8172"/>
+ <point positionX="13736" positionY="8172"/>
+ <point positionX="13736" positionY="5574"/>
+ <point positionX="12841" positionY="5574"/>
+ <point positionX="12841" positionY="8172"/>
+ </pointSequence>
+ </PolyPolygon>
+ <Geometry>
+ <pointSequence>
+ <point positionX="0" positionY="2598"/>
+ <point positionX="895" positionY="2598"/>
+ <point positionX="895" positionY="0"/>
+ <point positionX="0" positionY="0"/>
+ <point positionX="0" positionY="2598"/>
+ </pointSequence>
+ </Geometry>
+ <Transformation>
+ <Line1 column1="895.000000" column2="0.000000" column3="12841.000000"/>
+ <Line2 column1="0.000000" column2="2598.000000" column3="5574.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="11639.000000" column2="0.000000" column3="2098.000000"/>
+ <Line2 column1="0.000000" column2="5197.000000" column3="2976.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12534.000000" column2="0.000000" column3="1203.000000"/>
+ <Line2 column1="0.000000" column2="6496.000000" column3="1677.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13578.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13579.000000" column2="0.000000" column3="606.000000"/>
+ <Line2 column1="0.000000" column2="7945.000000" column3="378.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="12615" sizeY="8640" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="2005" positionY="8422" sizeX="10930" sizeY="398" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=0,0">
+ <XShapes>
+ <XShape positionX="2005" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="2005.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="4691" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="4691.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="7376" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="3" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="7376.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="10062" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="4" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="10062.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="12748" positionY="8422" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="5" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="12748.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="10931.000000" column2="0.000000" column3="2005.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="8422.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="187" sizeY="8192" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:Axis=1,0">
+ <XShapes>
+ <XShape positionX="320" positionY="7974" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="0" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="7974.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="6675" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="6675.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="5376" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="5376.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="4077" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="3" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4077.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="2778" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="4" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="2778.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="1479" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="5" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="1479.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="320" positionY="180" sizeX="187" sizeY="398" type="com.sun.star.drawing.TextShape" text="6" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="188.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8193.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="12616.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13865.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="13865.000000" column2="0.000000" column3="320.000000"/>
+ <Line2 column1="0.000000" column2="8641.000000" column3="180.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14504" positionY="3952" sizeX="1286" sizeY="1096" type="com.sun.star.drawing.GroupShape" name="CID/D=0:Legend=">
+ <XShapes>
+ <XShape positionX="14504" positionY="3952" sizeX="1286" sizeY="1096" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="e6e6e6" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="1287.000000" column2="0.000000" column3="14504.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3952.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14620" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="14620" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=0:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="14620" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14620" positionY="4145" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="004586" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4145.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14620" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape">
+ <XShapes>
+ <XShape positionX="14620" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/D=0:CS=0:CT=0:Series=1:LegendEntry=0">
+ <XShapes>
+ <XShape positionX="14620" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14620" positionY="4643" sizeX="211" sizeY="211" type="com.sun.star.drawing.RectangleShape" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="ff420e" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="212.000000" column2="0.000000" column3="14620.000000"/>
+ <Line2 column1="0.000000" column2="212.000000" column3="4643.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14931" positionY="4052" sizeX="743" sizeY="398" type="com.sun.star.drawing.TextShape" text="test1" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4800" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="744.000000" column2="0.000000" column3="14931.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4052.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ <XShape positionX="14931" positionY="4550" sizeX="743" sizeY="398" type="com.sun.star.drawing.TextShape" text="test2" fontHeight="10.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="4800" textMinimumFrameHeight="100" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
+ <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
+ <FillBitmap/>
+ <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
+ <LineStart/>
+ <LineEnd/>
+ <Transformation>
+ <Line1 column1="744.000000" column2="0.000000" column3="14931.000000"/>
+ <Line2 column1="0.000000" column2="399.000000" column3="4550.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+ </XShapes>
+ <Transformation>
+ <Line1 column1="1287.000000" column2="0.000000" column3="14504.000000"/>
+ <Line2 column1="0.000000" column2="1097.000000" column3="3952.000000"/>
+ <Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
+ </Transformation>
+ </XShape>
+</XShapes>
+
+
diff --git a/chart2/qa/extras/xshape/data/reference/tolerance.xml b/chart2/qa/extras/xshape/data/reference/tolerance.xml
new file mode 100644
index 0000000000..17ec7220fc
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/reference/tolerance.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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/.
+ *
+-->
+<tolerances>
+ <tolerance elementName="Line2" attribName="column2" value="1"/>
+ <tolerance elementName="Line2" attribName="column3" value="1"/>
+ <tolerance elementName="XShape" attribName="positionY" value="1"/>
+ <tolerance elementName="XShape" attribName="sizeY" value="1"/>
+</tolerances>
diff --git a/chart2/qa/extras/xshape/data/xls/tdf150832.xls b/chart2/qa/extras/xshape/data/xls/tdf150832.xls
new file mode 100644
index 0000000000..1044345619
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/xls/tdf150832.xls
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsx b/chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsx
new file mode 100644
index 0000000000..05db435f60
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsx
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsx b/chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsx
new file mode 100644
index 0000000000..d3922f7f20
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsx
Binary files differ
diff --git a/chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsx b/chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsx
new file mode 100644
index 0000000000..5a3ee4cf49
--- /dev/null
+++ b/chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsx
Binary files differ