diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 05:54:39 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 05:54:39 +0000 |
commit | 267c6f2ac71f92999e969232431ba04678e7437e (patch) | |
tree | 358c9467650e1d0a1d7227a21dac2e3d08b622b2 /chart2/qa/extras | |
parent | Initial commit. (diff) | |
download | libreoffice-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')
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 Binary files differnew file mode 100644 index 0000000000..a09ddb893d --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/axis_special_positioning.odp 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 Binary files differnew file mode 100644 index 0000000000..1b41db316e --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_with_titles.ods 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 Binary files differnew file mode 100644 index 0000000000..be5b118048 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/chartwall_auto_adjust_without_titles.ods diff --git a/chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.ods b/chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.ods Binary files differnew file mode 100644 index 0000000000..b6ba872212 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/chartwall_custom_positioning.ods diff --git a/chart2/qa/extras/chart2dump/data/column_chart_small_spacing.ods b/chart2/qa/extras/chart2dump/data/column_chart_small_spacing.ods Binary files differnew file mode 100644 index 0000000000..1206a4e198 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/column_chart_small_spacing.ods diff --git a/chart2/qa/extras/chart2dump/data/custom_legend_position.odp b/chart2/qa/extras/chart2dump/data/custom_legend_position.odp Binary files differnew file mode 100644 index 0000000000..d36677ab49 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/custom_legend_position.odp diff --git a/chart2/qa/extras/chart2dump/data/date-categories.pptx b/chart2/qa/extras/chart2dump/data/date-categories.pptx Binary files differnew file mode 100644 index 0000000000..b9e0c69f32 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/date-categories.pptx diff --git a/chart2/qa/extras/chart2dump/data/default_formated_axis.odp b/chart2/qa/extras/chart2dump/data/default_formated_axis.odp Binary files differnew file mode 100644 index 0000000000..a5cdd0522b --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/default_formated_axis.odp diff --git a/chart2/qa/extras/chart2dump/data/donut_chart.ods b/chart2/qa/extras/chart2dump/data/donut_chart.ods Binary files differnew file mode 100644 index 0000000000..4490f76954 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/donut_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/exploded_pie_chart.ods b/chart2/qa/extras/chart2dump/data/exploded_pie_chart.ods Binary files differnew file mode 100644 index 0000000000..68a9c98429 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/exploded_pie_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/formated_axis_labels.odp b/chart2/qa/extras/chart2dump/data/formated_axis_labels.odp Binary files differnew file mode 100644 index 0000000000..a94c8c4d05 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/formated_axis_labels.odp diff --git a/chart2/qa/extras/chart2dump/data/formated_axis_lines.odp b/chart2/qa/extras/chart2dump/data/formated_axis_lines.odp Binary files differnew file mode 100644 index 0000000000..7a421497b4 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/formated_axis_lines.odp diff --git a/chart2/qa/extras/chart2dump/data/formated_grid_line.ods b/chart2/qa/extras/chart2dump/data/formated_grid_line.ods Binary files differnew file mode 100644 index 0000000000..1d0ef5389f --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/formated_grid_line.ods diff --git a/chart2/qa/extras/chart2dump/data/horizontal_grid.ods b/chart2/qa/extras/chart2dump/data/horizontal_grid.ods Binary files differnew file mode 100644 index 0000000000..c9f913067b --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/horizontal_grid.ods diff --git a/chart2/qa/extras/chart2dump/data/legend_on_bottom.odp b/chart2/qa/extras/chart2dump/data/legend_on_bottom.odp Binary files differnew file mode 100644 index 0000000000..b080d33116 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/legend_on_bottom.odp diff --git a/chart2/qa/extras/chart2dump/data/legend_on_left_side.odp b/chart2/qa/extras/chart2dump/data/legend_on_left_side.odp Binary files differnew file mode 100644 index 0000000000..71e2947c6a --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/legend_on_left_side.odp diff --git a/chart2/qa/extras/chart2dump/data/legend_on_right_side.odp b/chart2/qa/extras/chart2dump/data/legend_on_right_side.odp Binary files differnew file mode 100644 index 0000000000..7aac4d3f33 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/legend_on_right_side.odp diff --git a/chart2/qa/extras/chart2dump/data/legend_on_top.odp b/chart2/qa/extras/chart2dump/data/legend_on_top.odp Binary files differnew file mode 100644 index 0000000000..318901f2e4 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/legend_on_top.odp diff --git a/chart2/qa/extras/chart2dump/data/many_legend_entries.odp b/chart2/qa/extras/chart2dump/data/many_legend_entries.odp Binary files differnew file mode 100644 index 0000000000..8f02a99f66 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/many_legend_entries.odp diff --git a/chart2/qa/extras/chart2dump/data/minimal_legend_test.odp b/chart2/qa/extras/chart2dump/data/minimal_legend_test.odp Binary files differnew file mode 100644 index 0000000000..63911f119c --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/minimal_legend_test.odp diff --git a/chart2/qa/extras/chart2dump/data/minor_grid.ods b/chart2/qa/extras/chart2dump/data/minor_grid.ods Binary files differnew file mode 100644 index 0000000000..f8f30198b0 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/minor_grid.ods diff --git a/chart2/qa/extras/chart2dump/data/multiple_categories.odp b/chart2/qa/extras/chart2dump/data/multiple_categories.odp Binary files differnew file mode 100644 index 0000000000..95e51f3f69 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/multiple_categories.odp diff --git a/chart2/qa/extras/chart2dump/data/multiple_categories.ods b/chart2/qa/extras/chart2dump/data/multiple_categories.ods Binary files differnew file mode 100644 index 0000000000..67e00525b9 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/multiple_categories.ods diff --git a/chart2/qa/extras/chart2dump/data/normal_area_chart.ods b/chart2/qa/extras/chart2dump/data/normal_area_chart.ods Binary files differnew file mode 100644 index 0000000000..84b9ec2247 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_area_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/normal_bar_chart.ods b/chart2/qa/extras/chart2dump/data/normal_bar_chart.ods Binary files differnew file mode 100644 index 0000000000..531f406f93 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_bar_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/normal_column_chart.ods b/chart2/qa/extras/chart2dump/data/normal_column_chart.ods Binary files differnew file mode 100644 index 0000000000..a8c6404001 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_column_chart.ods 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 Binary files differnew file mode 100644 index 0000000000..4dd613b6f4 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_and_points.ods 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 Binary files differnew file mode 100644 index 0000000000..c4f57a6f3c --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_line_chart_lines_only.ods 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 Binary files differnew file mode 100644 index 0000000000..e55b41115e --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_line_chart_points_only.ods diff --git a/chart2/qa/extras/chart2dump/data/normal_pie_chart.ods b/chart2/qa/extras/chart2dump/data/normal_pie_chart.ods Binary files differnew file mode 100644 index 0000000000..3c3a6a327f --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/normal_pie_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.ods Binary files differnew file mode 100644 index 0000000000..0cc5d1728a --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_area_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.ods Binary files differnew file mode 100644 index 0000000000..2d337a5b3d --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_bar_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odp b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odp Binary files differnew file mode 100644 index 0000000000..e8180cfc73 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.odp diff --git a/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.ods b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.ods Binary files differnew file mode 100644 index 0000000000..ce7440aa77 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_column_chart.ods 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 Binary files differnew file mode 100644 index 0000000000..ade9ea8f13 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_and_points.ods 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 Binary files differnew file mode 100644 index 0000000000..3228f51a3f --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_lines_only.ods 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 Binary files differnew file mode 100644 index 0000000000..b2483b6da5 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/percent_stacked_line_chart_points_only.ods diff --git a/chart2/qa/extras/chart2dump/data/pie_chart_many_slices.ods b/chart2/qa/extras/chart2dump/data/pie_chart_many_slices.ods Binary files differnew file mode 100644 index 0000000000..2cc2e8b7bb --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/pie_chart_many_slices.ods diff --git a/chart2/qa/extras/chart2dump/data/pivotchart_data_button.ods b/chart2/qa/extras/chart2dump/data/pivotchart_data_button.ods Binary files differnew file mode 100644 index 0000000000..d57edf66d2 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/pivotchart_data_button.ods diff --git a/chart2/qa/extras/chart2dump/data/rotated_axis_labels.odp b/chart2/qa/extras/chart2dump/data/rotated_axis_labels.odp Binary files differnew file mode 100644 index 0000000000..24e9cf05b2 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/rotated_axis_labels.odp diff --git a/chart2/qa/extras/chart2dump/data/rotated_pie_chart.ods b/chart2/qa/extras/chart2dump/data/rotated_pie_chart.ods Binary files differnew file mode 100644 index 0000000000..ee8b3a7d96 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/rotated_pie_chart.ods 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 Binary files differnew file mode 100644 index 0000000000..de7b1c67c5 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_and_points.ods diff --git a/chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.ods b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.ods Binary files differnew file mode 100644 index 0000000000..fed5789927 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/scatter_chart_lines_only.ods diff --git a/chart2/qa/extras/chart2dump/data/scatter_chart_points_only.ods b/chart2/qa/extras/chart2dump/data/scatter_chart_points_only.ods Binary files differnew file mode 100644 index 0000000000..dd1626d7a2 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/scatter_chart_points_only.ods diff --git a/chart2/qa/extras/chart2dump/data/simple_chart.ods b/chart2/qa/extras/chart2dump/data/simple_chart.ods Binary files differnew file mode 100644 index 0000000000..f65584d12a --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/simple_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/stacked_area_chart.ods b/chart2/qa/extras/chart2dump/data/stacked_area_chart.ods Binary files differnew file mode 100644 index 0000000000..56bc4e4992 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/stacked_area_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/stacked_bar_chart.ods b/chart2/qa/extras/chart2dump/data/stacked_bar_chart.ods Binary files differnew file mode 100644 index 0000000000..2e8ca327e4 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/stacked_bar_chart.ods diff --git a/chart2/qa/extras/chart2dump/data/stacked_column_chart.ods b/chart2/qa/extras/chart2dump/data/stacked_column_chart.ods Binary files differnew file mode 100644 index 0000000000..159df229a4 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/stacked_column_chart.ods 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 Binary files differnew file mode 100644 index 0000000000..d11ecb7058 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_and_points.ods 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 Binary files differnew file mode 100644 index 0000000000..1652c3a589 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/stacked_line_chart_lines_only.ods 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 Binary files differnew file mode 100644 index 0000000000..a85a2abe86 --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/stacked_line_chart_points_only.ods diff --git a/chart2/qa/extras/chart2dump/data/tdf118150.xlsx b/chart2/qa/extras/chart2dump/data/tdf118150.xlsx Binary files differnew file mode 100644 index 0000000000..f29b9a1c2e --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/tdf118150.xlsx diff --git a/chart2/qa/extras/chart2dump/data/vertical_grid.ods b/chart2/qa/extras/chart2dump/data/vertical_grid.ods Binary files differnew file mode 100644 index 0000000000..9f2ed7838a --- /dev/null +++ b/chart2/qa/extras/chart2dump/data/vertical_grid.ods 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 Binary files differnew file mode 100644 index 0000000000..2bfa5aed2c --- /dev/null +++ b/chart2/qa/extras/data/doc/chart.doc diff --git a/chart2/qa/extras/data/docx/3d-bar-label.docx b/chart2/qa/extras/data/docx/3d-bar-label.docx Binary files differnew file mode 100644 index 0000000000..69cab8e719 --- /dev/null +++ b/chart2/qa/extras/data/docx/3d-bar-label.docx diff --git a/chart2/qa/extras/data/docx/Bar_horizontal_cone.docx b/chart2/qa/extras/data/docx/Bar_horizontal_cone.docx Binary files differnew file mode 100644 index 0000000000..2280d89fc1 --- /dev/null +++ b/chart2/qa/extras/data/docx/Bar_horizontal_cone.docx diff --git a/chart2/qa/extras/data/docx/DisplayUnits.docx b/chart2/qa/extras/data/docx/DisplayUnits.docx Binary files differnew file mode 100644 index 0000000000..97092a3ed6 --- /dev/null +++ b/chart2/qa/extras/data/docx/DisplayUnits.docx diff --git a/chart2/qa/extras/data/docx/FDO74430.docx b/chart2/qa/extras/data/docx/FDO74430.docx Binary files differnew file mode 100644 index 0000000000..f4a68b519d --- /dev/null +++ b/chart2/qa/extras/data/docx/FDO74430.docx diff --git a/chart2/qa/extras/data/docx/FDO75975.docx b/chart2/qa/extras/data/docx/FDO75975.docx Binary files differnew file mode 100644 index 0000000000..30f251014b --- /dev/null +++ b/chart2/qa/extras/data/docx/FDO75975.docx diff --git a/chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docx b/chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docx Binary files differnew file mode 100644 index 0000000000..c158a0d765 --- /dev/null +++ b/chart2/qa/extras/data/docx/MSO_Custom_Leader_Line.docx diff --git a/chart2/qa/extras/data/docx/MSO_axis_position.docx b/chart2/qa/extras/data/docx/MSO_axis_position.docx Binary files differnew file mode 100644 index 0000000000..a9955b7b1a --- /dev/null +++ b/chart2/qa/extras/data/docx/MSO_axis_position.docx diff --git a/chart2/qa/extras/data/docx/PieChartDataLabels.docx b/chart2/qa/extras/data/docx/PieChartDataLabels.docx Binary files differnew file mode 100644 index 0000000000..99a72c0f29 --- /dev/null +++ b/chart2/qa/extras/data/docx/PieChartDataLabels.docx diff --git a/chart2/qa/extras/data/docx/TableOnPage3.docx b/chart2/qa/extras/data/docx/TableOnPage3.docx Binary files differnew file mode 100644 index 0000000000..79763bd352 --- /dev/null +++ b/chart2/qa/extras/data/docx/TableOnPage3.docx diff --git a/chart2/qa/extras/data/docx/UpDownBars.docx b/chart2/qa/extras/data/docx/UpDownBars.docx Binary files differnew file mode 100644 index 0000000000..755f814996 --- /dev/null +++ b/chart2/qa/extras/data/docx/UpDownBars.docx diff --git a/chart2/qa/extras/data/docx/area-chart-labels.docx b/chart2/qa/extras/data/docx/area-chart-labels.docx Binary files differnew file mode 100644 index 0000000000..4db844112d --- /dev/null +++ b/chart2/qa/extras/data/docx/area-chart-labels.docx diff --git a/chart2/qa/extras/data/docx/bar-chart-labels.docx b/chart2/qa/extras/data/docx/bar-chart-labels.docx Binary files differnew file mode 100644 index 0000000000..9ff8b4fd17 --- /dev/null +++ b/chart2/qa/extras/data/docx/bar-chart-labels.docx diff --git a/chart2/qa/extras/data/docx/barChartRotation.docx b/chart2/qa/extras/data/docx/barChartRotation.docx Binary files differnew file mode 100644 index 0000000000..bf4be47b34 --- /dev/null +++ b/chart2/qa/extras/data/docx/barChartRotation.docx diff --git a/chart2/qa/extras/data/docx/bubblechart.docx b/chart2/qa/extras/data/docx/bubblechart.docx Binary files differnew file mode 100644 index 0000000000..c2040730cf --- /dev/null +++ b/chart2/qa/extras/data/docx/bubblechart.docx diff --git a/chart2/qa/extras/data/docx/chart.docx b/chart2/qa/extras/data/docx/chart.docx Binary files differnew file mode 100644 index 0000000000..f9cddd4949 --- /dev/null +++ b/chart2/qa/extras/data/docx/chart.docx diff --git a/chart2/qa/extras/data/docx/clustered-bar-chart-labels.docx b/chart2/qa/extras/data/docx/clustered-bar-chart-labels.docx Binary files differnew file mode 100644 index 0000000000..3b9941cc1e --- /dev/null +++ b/chart2/qa/extras/data/docx/clustered-bar-chart-labels.docx diff --git a/chart2/qa/extras/data/docx/data-label-borders.docx b/chart2/qa/extras/data/docx/data-label-borders.docx Binary files differnew file mode 100644 index 0000000000..6f2b94d98e --- /dev/null +++ b/chart2/qa/extras/data/docx/data-label-borders.docx diff --git a/chart2/qa/extras/data/docx/data_point_inherited_color.docx b/chart2/qa/extras/data/docx/data_point_inherited_color.docx Binary files differnew file mode 100644 index 0000000000..70de8b2188 --- /dev/null +++ b/chart2/qa/extras/data/docx/data_point_inherited_color.docx diff --git a/chart2/qa/extras/data/docx/doughnut-chart-labels.docx b/chart2/qa/extras/data/docx/doughnut-chart-labels.docx Binary files differnew file mode 100644 index 0000000000..559208578f --- /dev/null +++ b/chart2/qa/extras/data/docx/doughnut-chart-labels.docx diff --git a/chart2/qa/extras/data/docx/doughnutChart.docx b/chart2/qa/extras/data/docx/doughnutChart.docx Binary files differnew file mode 100644 index 0000000000..f0642d4d5c --- /dev/null +++ b/chart2/qa/extras/data/docx/doughnutChart.docx diff --git a/chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docx b/chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docx Binary files differnew file mode 100644 index 0000000000..15f42b0cf3 --- /dev/null +++ b/chart2/qa/extras/data/docx/fdo74115_WallBitmapFill.docx diff --git a/chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docx b/chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docx Binary files differnew file mode 100644 index 0000000000..e10334bd9a --- /dev/null +++ b/chart2/qa/extras/data/docx/fdo74115_WallGradientFill.docx 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 Binary files differnew file mode 100644 index 0000000000..ee2489d21a --- /dev/null +++ b/chart2/qa/extras/data/docx/fdo78290_Combination_Chart_Marker_x.docx 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 Binary files differnew file mode 100644 index 0000000000..7e4b096b83 --- /dev/null +++ b/chart2/qa/extras/data/docx/fdo78290_Line_Chart_Marker_x.docx 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 Binary files differnew file mode 100644 index 0000000000..2edc8f0862 --- /dev/null +++ b/chart2/qa/extras/data/docx/fdo78290_Scatter_Chart_Marker_x.docx diff --git a/chart2/qa/extras/data/docx/fdo83058_dlblPos.docx b/chart2/qa/extras/data/docx/fdo83058_dlblPos.docx Binary files differnew file mode 100644 index 0000000000..721a717897 --- /dev/null +++ b/chart2/qa/extras/data/docx/fdo83058_dlblPos.docx 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 Binary files differnew file mode 100644 index 0000000000..ab9548d59c --- /dev/null +++ b/chart2/qa/extras/data/docx/line-chart-label-default-placement.docx diff --git a/chart2/qa/extras/data/docx/pieChartRotation.docx b/chart2/qa/extras/data/docx/pieChartRotation.docx Binary files differnew file mode 100644 index 0000000000..f76f602374 --- /dev/null +++ b/chart2/qa/extras/data/docx/pieChartRotation.docx diff --git a/chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docx b/chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docx Binary files differnew file mode 100644 index 0000000000..da6b2fa19a --- /dev/null +++ b/chart2/qa/extras/data/docx/piechart_deleted_legend_entry.docx diff --git a/chart2/qa/extras/data/docx/radar-chart-labels.docx b/chart2/qa/extras/data/docx/radar-chart-labels.docx Binary files differnew file mode 100644 index 0000000000..2cb876dd26 --- /dev/null +++ b/chart2/qa/extras/data/docx/radar-chart-labels.docx 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 Binary files differnew file mode 100644 index 0000000000..b741bbce21 --- /dev/null +++ b/chart2/qa/extras/data/docx/scatter-chart-text-x-values.docx diff --git a/chart2/qa/extras/data/docx/tdf121744.docx b/chart2/qa/extras/data/docx/tdf121744.docx Binary files differnew file mode 100644 index 0000000000..b5ff10098c --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf121744.docx diff --git a/chart2/qa/extras/data/docx/tdf123206.docx b/chart2/qa/extras/data/docx/tdf123206.docx Binary files differnew file mode 100644 index 0000000000..f47089fe3b --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf123206.docx diff --git a/chart2/qa/extras/data/docx/tdf124083.docx b/chart2/qa/extras/data/docx/tdf124083.docx Binary files differnew file mode 100644 index 0000000000..b8030ca9a8 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf124083.docx diff --git a/chart2/qa/extras/data/docx/tdf124243.docx b/chart2/qa/extras/data/docx/tdf124243.docx Binary files differnew file mode 100644 index 0000000000..e58ef6a02e --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf124243.docx diff --git a/chart2/qa/extras/data/docx/tdf125337.docx b/chart2/qa/extras/data/docx/tdf125337.docx Binary files differnew file mode 100644 index 0000000000..811f12d898 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf125337.docx diff --git a/chart2/qa/extras/data/docx/tdf128794.docx b/chart2/qa/extras/data/docx/tdf128794.docx Binary files differnew file mode 100644 index 0000000000..098c0a00e3 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf128794.docx diff --git a/chart2/qa/extras/data/docx/tdf132174.docx b/chart2/qa/extras/data/docx/tdf132174.docx Binary files differnew file mode 100644 index 0000000000..4f43695784 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf132174.docx diff --git a/chart2/qa/extras/data/docx/tdf133632.docx b/chart2/qa/extras/data/docx/tdf133632.docx Binary files differnew file mode 100644 index 0000000000..b970e73f4c --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf133632.docx diff --git a/chart2/qa/extras/data/docx/tdf134111.docx b/chart2/qa/extras/data/docx/tdf134111.docx Binary files differnew file mode 100644 index 0000000000..26e3a03e0b --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf134111.docx diff --git a/chart2/qa/extras/data/docx/tdf134255.docx b/chart2/qa/extras/data/docx/tdf134255.docx Binary files differnew file mode 100644 index 0000000000..ff3cd8b67b --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf134255.docx diff --git a/chart2/qa/extras/data/docx/tdf136650.docx b/chart2/qa/extras/data/docx/tdf136650.docx Binary files differnew file mode 100644 index 0000000000..cd095ec631 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf136650.docx diff --git a/chart2/qa/extras/data/docx/tdf139658.docx b/chart2/qa/extras/data/docx/tdf139658.docx Binary files differnew file mode 100644 index 0000000000..59deda9f83 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf139658.docx diff --git a/chart2/qa/extras/data/docx/tdf143130.docx b/chart2/qa/extras/data/docx/tdf143130.docx Binary files differnew file mode 100644 index 0000000000..a364f4811a --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf143130.docx diff --git a/chart2/qa/extras/data/docx/tdf91250.docx b/chart2/qa/extras/data/docx/tdf91250.docx Binary files differnew file mode 100644 index 0000000000..4cb199b457 --- /dev/null +++ b/chart2/qa/extras/data/docx/tdf91250.docx diff --git a/chart2/qa/extras/data/docx/testAreaChartLoad.docx b/chart2/qa/extras/data/docx/testAreaChartLoad.docx Binary files differnew file mode 100644 index 0000000000..9383f75cde --- /dev/null +++ b/chart2/qa/extras/data/docx/testAreaChartLoad.docx diff --git a/chart2/qa/extras/data/docx/testAxisTitlePosition.docx b/chart2/qa/extras/data/docx/testAxisTitlePosition.docx Binary files differnew file mode 100644 index 0000000000..6abd37eec5 --- /dev/null +++ b/chart2/qa/extras/data/docx/testAxisTitlePosition.docx diff --git a/chart2/qa/extras/data/docx/testBarChart.docx b/chart2/qa/extras/data/docx/testBarChart.docx Binary files differnew file mode 100644 index 0000000000..b92260f718 --- /dev/null +++ b/chart2/qa/extras/data/docx/testBarChart.docx diff --git a/chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docx b/chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docx Binary files differnew file mode 100644 index 0000000000..66df9153d3 --- /dev/null +++ b/chart2/qa/extras/data/docx/testBarChartDataPointPropDOCX.docx diff --git a/chart2/qa/extras/data/docx/testChartDataTable.docx b/chart2/qa/extras/data/docx/testChartDataTable.docx Binary files differnew file mode 100644 index 0000000000..8663e8937e --- /dev/null +++ b/chart2/qa/extras/data/docx/testChartDataTable.docx diff --git a/chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docx b/chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docx Binary files differnew file mode 100644 index 0000000000..462c15976a --- /dev/null +++ b/chart2/qa/extras/data/docx/testChartTitlePropertiesBitmapFill.docx diff --git a/chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docx b/chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docx Binary files differnew file mode 100644 index 0000000000..d86928d615 --- /dev/null +++ b/chart2/qa/extras/data/docx/testChartTitlePropertiesColorFill.docx diff --git a/chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docx b/chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docx Binary files differnew file mode 100644 index 0000000000..a72600d09e --- /dev/null +++ b/chart2/qa/extras/data/docx/testChartTitlePropertiesGradientFill.docx diff --git a/chart2/qa/extras/data/docx/testColorGradientWithTransparency.docx b/chart2/qa/extras/data/docx/testColorGradientWithTransparency.docx Binary files differnew file mode 100644 index 0000000000..adc2aff042 --- /dev/null +++ b/chart2/qa/extras/data/docx/testColorGradientWithTransparency.docx diff --git a/chart2/qa/extras/data/docx/testCustomlabeltext.docx b/chart2/qa/extras/data/docx/testCustomlabeltext.docx Binary files differnew file mode 100644 index 0000000000..db28209c9c --- /dev/null +++ b/chart2/qa/extras/data/docx/testCustomlabeltext.docx diff --git a/chart2/qa/extras/data/docx/testLabelSeparator.docx b/chart2/qa/extras/data/docx/testLabelSeparator.docx Binary files differnew file mode 100644 index 0000000000..452fdccc94 --- /dev/null +++ b/chart2/qa/extras/data/docx/testLabelSeparator.docx diff --git a/chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docx b/chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docx Binary files differnew file mode 100644 index 0000000000..75605de72f --- /dev/null +++ b/chart2/qa/extras/data/docx/testMultilevelCategoryAxis.docx diff --git a/chart2/qa/extras/data/docx/testMultipleChart.docx b/chart2/qa/extras/data/docx/testMultipleChart.docx Binary files differnew file mode 100644 index 0000000000..28d8bbcfe1 --- /dev/null +++ b/chart2/qa/extras/data/docx/testMultipleChart.docx diff --git a/chart2/qa/extras/data/docx/testMultiplechartembeddings.docx b/chart2/qa/extras/data/docx/testMultiplechartembeddings.docx Binary files differnew file mode 100644 index 0000000000..28d8bbcfe1 --- /dev/null +++ b/chart2/qa/extras/data/docx/testMultiplechartembeddings.docx diff --git a/chart2/qa/extras/data/docx/testSeriesIdxOrder.docx b/chart2/qa/extras/data/docx/testSeriesIdxOrder.docx Binary files differnew file mode 100644 index 0000000000..9274e2c2c2 --- /dev/null +++ b/chart2/qa/extras/data/docx/testSeriesIdxOrder.docx diff --git a/chart2/qa/extras/data/docx/testSimpleCategoryAxis.docx b/chart2/qa/extras/data/docx/testSimpleCategoryAxis.docx Binary files differnew file mode 100644 index 0000000000..de511664a5 --- /dev/null +++ b/chart2/qa/extras/data/docx/testSimpleCategoryAxis.docx diff --git a/chart2/qa/extras/data/docx/testStockChart.docx b/chart2/qa/extras/data/docx/testStockChart.docx Binary files differnew file mode 100644 index 0000000000..a804e7df2d --- /dev/null +++ b/chart2/qa/extras/data/docx/testStockChart.docx diff --git a/chart2/qa/extras/data/docx/testTdf108110.docx b/chart2/qa/extras/data/docx/testTdf108110.docx Binary files differnew file mode 100644 index 0000000000..769360c152 --- /dev/null +++ b/chart2/qa/extras/data/docx/testTdf108110.docx diff --git a/chart2/qa/extras/data/docx/testTdf114179.docx b/chart2/qa/extras/data/docx/testTdf114179.docx Binary files differnew file mode 100644 index 0000000000..36fb11e170 --- /dev/null +++ b/chart2/qa/extras/data/docx/testTdf114179.docx diff --git a/chart2/qa/extras/data/docx/testTdf122226.docx b/chart2/qa/extras/data/docx/testTdf122226.docx Binary files differnew file mode 100644 index 0000000000..7205525a76 --- /dev/null +++ b/chart2/qa/extras/data/docx/testTdf122226.docx diff --git a/chart2/qa/extras/data/docx/testchartoleobjectembeddings.docx b/chart2/qa/extras/data/docx/testchartoleobjectembeddings.docx Binary files differnew file mode 100644 index 0000000000..8167de7a35 --- /dev/null +++ b/chart2/qa/extras/data/docx/testchartoleobjectembeddings.docx diff --git a/chart2/qa/extras/data/docx/testcustomshapepos.docx b/chart2/qa/extras/data/docx/testcustomshapepos.docx Binary files differnew file mode 100644 index 0000000000..640c48ea46 --- /dev/null +++ b/chart2/qa/extras/data/docx/testcustomshapepos.docx 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="'Liberation Sans'" 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="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Droid Sans Devanagari" svg:font-family="'Droid Sans Devanagari'" 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="'Liberation Serif'" 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()>=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()>=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()>=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 '.fods'</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 Binary files differnew file mode 100644 index 0000000000..c627af79e4 --- /dev/null +++ b/chart2/qa/extras/data/odp/BarChartVeryLongLabel.odp diff --git a/chart2/qa/extras/data/odp/chart.odp b/chart2/qa/extras/data/odp/chart.odp Binary files differnew file mode 100644 index 0000000000..81a5f56b27 --- /dev/null +++ b/chart2/qa/extras/data/odp/chart.odp diff --git a/chart2/qa/extras/data/odp/ellipticalGradientFill.odp b/chart2/qa/extras/data/odp/ellipticalGradientFill.odp Binary files differnew file mode 100644 index 0000000000..754f439e58 --- /dev/null +++ b/chart2/qa/extras/data/odp/ellipticalGradientFill.odp diff --git a/chart2/qa/extras/data/odp/tdf119029.odp b/chart2/qa/extras/data/odp/tdf119029.odp Binary files differnew file mode 100644 index 0000000000..87e4a03c84 --- /dev/null +++ b/chart2/qa/extras/data/odp/tdf119029.odp diff --git a/chart2/qa/extras/data/odp/tdf121189.odp b/chart2/qa/extras/data/odp/tdf121189.odp Binary files differnew file mode 100644 index 0000000000..6f99e00549 --- /dev/null +++ b/chart2/qa/extras/data/odp/tdf121189.odp diff --git a/chart2/qa/extras/data/odp/tdf123206.odp b/chart2/qa/extras/data/odp/tdf123206.odp Binary files differnew file mode 100644 index 0000000000..1975756bce --- /dev/null +++ b/chart2/qa/extras/data/odp/tdf123206.odp diff --git a/chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odp b/chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odp Binary files differnew file mode 100644 index 0000000000..754e71d512 --- /dev/null +++ b/chart2/qa/extras/data/odp/tdf128345_ChartArea_CG_TS.odp diff --git a/chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odp b/chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odp Binary files differnew file mode 100644 index 0000000000..4c09ebb7bb --- /dev/null +++ b/chart2/qa/extras/data/odp/tdf128345_ChartWall_CS_TG.odp 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 Binary files differnew file mode 100644 index 0000000000..bfcd8a5dd5 --- /dev/null +++ b/chart2/qa/extras/data/odp/tdf128345_Legend_CS_TG_axial.odp diff --git a/chart2/qa/extras/data/ods/ErrorBarRange.ods b/chart2/qa/extras/data/ods/ErrorBarRange.ods Binary files differnew file mode 100644 index 0000000000..28e6aeeddb --- /dev/null +++ b/chart2/qa/extras/data/ods/ErrorBarRange.ods diff --git a/chart2/qa/extras/data/ods/PivotChartRoundTrip.ods b/chart2/qa/extras/data/ods/PivotChartRoundTrip.ods Binary files differnew file mode 100644 index 0000000000..c34521e0bc --- /dev/null +++ b/chart2/qa/extras/data/ods/PivotChartRoundTrip.ods diff --git a/chart2/qa/extras/data/ods/PivotTableExample.ods b/chart2/qa/extras/data/ods/PivotTableExample.ods Binary files differnew file mode 100644 index 0000000000..bc8df81702 --- /dev/null +++ b/chart2/qa/extras/data/ods/PivotTableExample.ods diff --git a/chart2/qa/extras/data/ods/axis-numformats-linked.ods b/chart2/qa/extras/data/ods/axis-numformats-linked.ods Binary files differnew file mode 100644 index 0000000000..ddaa9c9014 --- /dev/null +++ b/chart2/qa/extras/data/ods/axis-numformats-linked.ods diff --git a/chart2/qa/extras/data/ods/axis_number_format.ods b/chart2/qa/extras/data/ods/axis_number_format.ods Binary files differnew file mode 100644 index 0000000000..52e979a490 --- /dev/null +++ b/chart2/qa/extras/data/ods/axis_number_format.ods diff --git a/chart2/qa/extras/data/ods/chart.ods b/chart2/qa/extras/data/ods/chart.ods Binary files differnew file mode 100644 index 0000000000..2a9916aca0 --- /dev/null +++ b/chart2/qa/extras/data/ods/chart.ods diff --git a/chart2/qa/extras/data/ods/chartWithDotInSheetName.ods b/chart2/qa/extras/data/ods/chartWithDotInSheetName.ods Binary files differnew file mode 100644 index 0000000000..873d45f4be --- /dev/null +++ b/chart2/qa/extras/data/ods/chartWithDotInSheetName.ods diff --git a/chart2/qa/extras/data/ods/combined_chart_secondary_axis.ods b/chart2/qa/extras/data/ods/combined_chart_secondary_axis.ods Binary files differnew file mode 100644 index 0000000000..d125bc23d3 --- /dev/null +++ b/chart2/qa/extras/data/ods/combined_chart_secondary_axis.ods diff --git a/chart2/qa/extras/data/ods/error_bar.ods b/chart2/qa/extras/data/ods/error_bar.ods Binary files differnew file mode 100644 index 0000000000..9c3adbbca8 --- /dev/null +++ b/chart2/qa/extras/data/ods/error_bar.ods diff --git a/chart2/qa/extras/data/ods/error_bar_properties.ods b/chart2/qa/extras/data/ods/error_bar_properties.ods Binary files differnew file mode 100644 index 0000000000..056be88b22 --- /dev/null +++ b/chart2/qa/extras/data/ods/error_bar_properties.ods diff --git a/chart2/qa/extras/data/ods/error_bar_range.ods b/chart2/qa/extras/data/ods/error_bar_range.ods Binary files differnew file mode 100644 index 0000000000..27a0103e57 --- /dev/null +++ b/chart2/qa/extras/data/ods/error_bar_range.ods diff --git a/chart2/qa/extras/data/ods/fdo60083.ods b/chart2/qa/extras/data/ods/fdo60083.ods Binary files differnew file mode 100644 index 0000000000..74704f6185 --- /dev/null +++ b/chart2/qa/extras/data/ods/fdo60083.ods diff --git a/chart2/qa/extras/data/ods/labelString.ods b/chart2/qa/extras/data/ods/labelString.ods Binary files differnew file mode 100644 index 0000000000..2b7e03c8eb --- /dev/null +++ b/chart2/qa/extras/data/ods/labelString.ods diff --git a/chart2/qa/extras/data/ods/legend_overlay.ods b/chart2/qa/extras/data/ods/legend_overlay.ods Binary files differnew file mode 100644 index 0000000000..fade626405 --- /dev/null +++ b/chart2/qa/extras/data/ods/legend_overlay.ods diff --git a/chart2/qa/extras/data/ods/moving-type.ods b/chart2/qa/extras/data/ods/moving-type.ods Binary files differnew file mode 100644 index 0000000000..8a8568cfa7 --- /dev/null +++ b/chart2/qa/extras/data/ods/moving-type.ods diff --git a/chart2/qa/extras/data/ods/multilevelcat.ods b/chart2/qa/extras/data/ods/multilevelcat.ods Binary files differnew file mode 100644 index 0000000000..76b140a879 --- /dev/null +++ b/chart2/qa/extras/data/ods/multilevelcat.ods diff --git a/chart2/qa/extras/data/ods/multiple_axis.ods b/chart2/qa/extras/data/ods/multiple_axis.ods Binary files differnew file mode 100644 index 0000000000..7e2a505ccb --- /dev/null +++ b/chart2/qa/extras/data/ods/multiple_axis.ods 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 Binary files differnew file mode 100644 index 0000000000..a6ff5d6aa0 --- /dev/null +++ b/chart2/qa/extras/data/ods/pie_chart_100_and_0.ods diff --git a/chart2/qa/extras/data/ods/secondary_axis.ods b/chart2/qa/extras/data/ods/secondary_axis.ods Binary files differnew file mode 100644 index 0000000000..3f8f269c0f --- /dev/null +++ b/chart2/qa/extras/data/ods/secondary_axis.ods diff --git a/chart2/qa/extras/data/ods/ser_labels.ods b/chart2/qa/extras/data/ods/ser_labels.ods Binary files differnew file mode 100644 index 0000000000..c7bd966382 --- /dev/null +++ b/chart2/qa/extras/data/ods/ser_labels.ods diff --git a/chart2/qa/extras/data/ods/smoothedLines.ods b/chart2/qa/extras/data/ods/smoothedLines.ods Binary files differnew file mode 100644 index 0000000000..725827e639 --- /dev/null +++ b/chart2/qa/extras/data/ods/smoothedLines.ods diff --git a/chart2/qa/extras/data/ods/stepped_lines.ods b/chart2/qa/extras/data/ods/stepped_lines.ods Binary files differnew file mode 100644 index 0000000000..23d443ab5d --- /dev/null +++ b/chart2/qa/extras/data/ods/stepped_lines.ods diff --git a/chart2/qa/extras/data/ods/tdf101894.ods b/chart2/qa/extras/data/ods/tdf101894.ods Binary files differnew file mode 100644 index 0000000000..70d8b3a0dd --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf101894.ods diff --git a/chart2/qa/extras/data/ods/tdf107097.ods b/chart2/qa/extras/data/ods/tdf107097.ods Binary files differnew file mode 100644 index 0000000000..efa9f1c013 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf107097.ods diff --git a/chart2/qa/extras/data/ods/tdf108021.ods b/chart2/qa/extras/data/ods/tdf108021.ods Binary files differnew file mode 100644 index 0000000000..ebbc5e56f2 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf108021.ods diff --git a/chart2/qa/extras/data/ods/tdf120348.ods b/chart2/qa/extras/data/ods/tdf120348.ods Binary files differnew file mode 100644 index 0000000000..7a593c1bff --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf120348.ods diff --git a/chart2/qa/extras/data/ods/tdf123774.ods b/chart2/qa/extras/data/ods/tdf123774.ods Binary files differnew file mode 100644 index 0000000000..5c422b58c3 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf123774.ods diff --git a/chart2/qa/extras/data/ods/tdf128432.ods b/chart2/qa/extras/data/ods/tdf128432.ods Binary files differnew file mode 100644 index 0000000000..a93822fc9b --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf128432.ods diff --git a/chart2/qa/extras/data/ods/tdf131115.ods b/chart2/qa/extras/data/ods/tdf131115.ods Binary files differnew file mode 100644 index 0000000000..76a87c2c22 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf131115.ods diff --git a/chart2/qa/extras/data/ods/tdf131979.ods b/chart2/qa/extras/data/ods/tdf131979.ods Binary files differnew file mode 100644 index 0000000000..3dfcf6b699 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf131979.ods diff --git a/chart2/qa/extras/data/ods/tdf132076.ods b/chart2/qa/extras/data/ods/tdf132076.ods Binary files differnew file mode 100644 index 0000000000..348dd0d71f --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf132076.ods diff --git a/chart2/qa/extras/data/ods/tdf135366_data_label_series.ods b/chart2/qa/extras/data/ods/tdf135366_data_label_series.ods Binary files differnew file mode 100644 index 0000000000..e7c1f7d89d --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf135366_data_label_series.ods diff --git a/chart2/qa/extras/data/ods/tdf136011.ods b/chart2/qa/extras/data/ods/tdf136011.ods Binary files differnew file mode 100644 index 0000000000..03a0a7dd63 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf136011.ods diff --git a/chart2/qa/extras/data/ods/tdf136024.ods b/chart2/qa/extras/data/ods/tdf136024.ods Binary files differnew file mode 100644 index 0000000000..c8d004f544 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf136024.ods diff --git a/chart2/qa/extras/data/ods/tdf146066.ods b/chart2/qa/extras/data/ods/tdf146066.ods Binary files differnew file mode 100644 index 0000000000..03abe9ae68 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf146066.ods diff --git a/chart2/qa/extras/data/ods/tdf146463.ods b/chart2/qa/extras/data/ods/tdf146463.ods Binary files differnew file mode 100644 index 0000000000..6214f4a500 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf146463.ods diff --git a/chart2/qa/extras/data/ods/tdf148142.ods b/chart2/qa/extras/data/ods/tdf148142.ods Binary files differnew file mode 100644 index 0000000000..9b736a06d1 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf148142.ods diff --git a/chart2/qa/extras/data/ods/tdf151091.ods b/chart2/qa/extras/data/ods/tdf151091.ods Binary files differnew file mode 100644 index 0000000000..b3a43b3cea --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf151091.ods diff --git a/chart2/qa/extras/data/ods/tdf158223.ods b/chart2/qa/extras/data/ods/tdf158223.ods Binary files differnew file mode 100644 index 0000000000..33a7169744 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf158223.ods diff --git a/chart2/qa/extras/data/ods/tdf59857.ods b/chart2/qa/extras/data/ods/tdf59857.ods Binary files differnew file mode 100644 index 0000000000..e60e9c4c12 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf59857.ods diff --git a/chart2/qa/extras/data/ods/tdf62057.ods b/chart2/qa/extras/data/ods/tdf62057.ods Binary files differnew file mode 100644 index 0000000000..3945c41d03 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf62057.ods diff --git a/chart2/qa/extras/data/ods/tdf64224.ods b/chart2/qa/extras/data/ods/tdf64224.ods Binary files differnew file mode 100644 index 0000000000..e60e9c4c12 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf64224.ods diff --git a/chart2/qa/extras/data/ods/tdf72776.ods b/chart2/qa/extras/data/ods/tdf72776.ods Binary files differnew file mode 100644 index 0000000000..4ddad64a5e --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf72776.ods diff --git a/chart2/qa/extras/data/ods/tdf86624.ods b/chart2/qa/extras/data/ods/tdf86624.ods Binary files differnew file mode 100644 index 0000000000..05702371a1 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf86624.ods diff --git a/chart2/qa/extras/data/ods/tdf96161.ods b/chart2/qa/extras/data/ods/tdf96161.ods Binary files differnew file mode 100644 index 0000000000..797a712a74 --- /dev/null +++ b/chart2/qa/extras/data/ods/tdf96161.ods diff --git a/chart2/qa/extras/data/ods/testChartMainWithSubTitle.ods b/chart2/qa/extras/data/ods/testChartMainWithSubTitle.ods Binary files differnew file mode 100644 index 0000000000..5ae4fa7d99 --- /dev/null +++ b/chart2/qa/extras/data/ods/testChartMainWithSubTitle.ods diff --git a/chart2/qa/extras/data/ods/testChartSubTitle.ods b/chart2/qa/extras/data/ods/testChartSubTitle.ods Binary files differnew file mode 100644 index 0000000000..1c7814195d --- /dev/null +++ b/chart2/qa/extras/data/ods/testChartSubTitle.ods diff --git a/chart2/qa/extras/data/ods/testColorGradientWithTransparency.ods b/chart2/qa/extras/data/ods/testColorGradientWithTransparency.ods Binary files differnew file mode 100644 index 0000000000..d8a41c02c1 --- /dev/null +++ b/chart2/qa/extras/data/ods/testColorGradientWithTransparency.ods diff --git a/chart2/qa/extras/data/ods/test_CrossBetween.ods b/chart2/qa/extras/data/ods/test_CrossBetween.ods Binary files differnew file mode 100644 index 0000000000..e59546b3d0 --- /dev/null +++ b/chart2/qa/extras/data/ods/test_CrossBetween.ods diff --git a/chart2/qa/extras/data/ods/trend_calculators.ods b/chart2/qa/extras/data/ods/trend_calculators.ods Binary files differnew file mode 100644 index 0000000000..fdc5ea42dc --- /dev/null +++ b/chart2/qa/extras/data/ods/trend_calculators.ods diff --git a/chart2/qa/extras/data/ods/trendline.ods b/chart2/qa/extras/data/ods/trendline.ods Binary files differnew file mode 100644 index 0000000000..707d510203 --- /dev/null +++ b/chart2/qa/extras/data/ods/trendline.ods diff --git a/chart2/qa/extras/data/odt/axis-position.odt b/chart2/qa/extras/data/odt/axis-position.odt Binary files differnew file mode 100644 index 0000000000..35ea152aa0 --- /dev/null +++ b/chart2/qa/extras/data/odt/axis-position.odt diff --git a/chart2/qa/extras/data/odt/chart.odt b/chart2/qa/extras/data/odt/chart.odt Binary files differnew file mode 100644 index 0000000000..5f2dd34d2a --- /dev/null +++ b/chart2/qa/extras/data/odt/chart.odt diff --git a/chart2/qa/extras/data/odt/multilevelcat.odt b/chart2/qa/extras/data/odt/multilevelcat.odt Binary files differnew file mode 100644 index 0000000000..8148e1be10 --- /dev/null +++ b/chart2/qa/extras/data/odt/multilevelcat.odt diff --git a/chart2/qa/extras/data/odt/scatter-plot-labels.odt b/chart2/qa/extras/data/odt/scatter-plot-labels.odt Binary files differnew file mode 100644 index 0000000000..ab8f243242 --- /dev/null +++ b/chart2/qa/extras/data/odt/scatter-plot-labels.odt 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 Binary files differnew file mode 100644 index 0000000000..06e15a6b0d --- /dev/null +++ b/chart2/qa/extras/data/odt/stock_chart_LO_6_2.odt diff --git a/chart2/qa/extras/data/odt/tdf108022.odt b/chart2/qa/extras/data/odt/tdf108022.odt Binary files differnew file mode 100644 index 0000000000..b8659ec32c --- /dev/null +++ b/chart2/qa/extras/data/odt/tdf108022.odt diff --git a/chart2/qa/extras/data/odt/tdf114657.odt b/chart2/qa/extras/data/odt/tdf114657.odt Binary files differnew file mode 100644 index 0000000000..4c99963b0d --- /dev/null +++ b/chart2/qa/extras/data/odt/tdf114657.odt diff --git a/chart2/qa/extras/data/odt/tdf128733.odt b/chart2/qa/extras/data/odt/tdf128733.odt Binary files differnew file mode 100644 index 0000000000..18aace26c0 --- /dev/null +++ b/chart2/qa/extras/data/odt/tdf128733.odt diff --git a/chart2/qa/extras/data/odt/tdf131143.odt b/chart2/qa/extras/data/odt/tdf131143.odt Binary files differnew file mode 100644 index 0000000000..e8ffeaf5a9 --- /dev/null +++ b/chart2/qa/extras/data/odt/tdf131143.odt diff --git a/chart2/qa/extras/data/odt/tdf135366_data_label_export.odt b/chart2/qa/extras/data/odt/tdf135366_data_label_export.odt Binary files differnew file mode 100644 index 0000000000..85759f2ade --- /dev/null +++ b/chart2/qa/extras/data/odt/tdf135366_data_label_export.odt diff --git a/chart2/qa/extras/data/odt/tdf135366_data_label_point.odt b/chart2/qa/extras/data/odt/tdf135366_data_label_point.odt Binary files differnew file mode 100644 index 0000000000..3c176a37ad --- /dev/null +++ b/chart2/qa/extras/data/odt/tdf135366_data_label_point.odt diff --git a/chart2/qa/extras/data/odt/testPieChartWallLineStyle.odt b/chart2/qa/extras/data/odt/testPieChartWallLineStyle.odt Binary files differnew file mode 100644 index 0000000000..0e1ab533b1 --- /dev/null +++ b/chart2/qa/extras/data/odt/testPieChartWallLineStyle.odt diff --git a/chart2/qa/extras/data/ppt/chart.ppt b/chart2/qa/extras/data/ppt/chart.ppt Binary files differnew file mode 100644 index 0000000000..0efffaf36a --- /dev/null +++ b/chart2/qa/extras/data/ppt/chart.ppt diff --git a/chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx b/chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx Binary files differnew file mode 100644 index 0000000000..3f95e932b1 --- /dev/null +++ b/chart2/qa/extras/data/pptx/PieChartWithAutomaticLayout_SizeAndPosition.pptx diff --git a/chart2/qa/extras/data/pptx/bnc864396.pptx b/chart2/qa/extras/data/pptx/bnc864396.pptx Binary files differnew file mode 100644 index 0000000000..e2e05c5161 --- /dev/null +++ b/chart2/qa/extras/data/pptx/bnc864396.pptx diff --git a/chart2/qa/extras/data/pptx/bnc882383.pptx b/chart2/qa/extras/data/pptx/bnc882383.pptx Binary files differnew file mode 100644 index 0000000000..18b44f0c1b --- /dev/null +++ b/chart2/qa/extras/data/pptx/bnc882383.pptx diff --git a/chart2/qa/extras/data/pptx/bnc889755.pptx b/chart2/qa/extras/data/pptx/bnc889755.pptx Binary files differnew file mode 100644 index 0000000000..f3af677656 --- /dev/null +++ b/chart2/qa/extras/data/pptx/bnc889755.pptx diff --git a/chart2/qa/extras/data/pptx/chart.pptx b/chart2/qa/extras/data/pptx/chart.pptx Binary files differnew file mode 100644 index 0000000000..8f11ea53d0 --- /dev/null +++ b/chart2/qa/extras/data/pptx/chart.pptx diff --git a/chart2/qa/extras/data/pptx/percentage-number-formats.pptx b/chart2/qa/extras/data/pptx/percentage-number-formats.pptx Binary files differnew file mode 100644 index 0000000000..280c7ef291 --- /dev/null +++ b/chart2/qa/extras/data/pptx/percentage-number-formats.pptx diff --git a/chart2/qa/extras/data/pptx/sparse-chart.pptx b/chart2/qa/extras/data/pptx/sparse-chart.pptx Binary files differnew file mode 100644 index 0000000000..d91e8f52f4 --- /dev/null +++ b/chart2/qa/extras/data/pptx/sparse-chart.pptx 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 Binary files differnew file mode 100644 index 0000000000..20ba89a0b7 --- /dev/null +++ b/chart2/qa/extras/data/pptx/stacked-bar-chart-hidden-series.pptx 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 Binary files differnew file mode 100644 index 0000000000..27d099d40f --- /dev/null +++ b/chart2/qa/extras/data/pptx/stacked-non-stacked-mix-y-axis.pptx diff --git a/chart2/qa/extras/data/pptx/tdf105517.pptx b/chart2/qa/extras/data/pptx/tdf105517.pptx Binary files differnew file mode 100644 index 0000000000..ff9d747f03 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf105517.pptx diff --git a/chart2/qa/extras/data/pptx/tdf106217.pptx b/chart2/qa/extras/data/pptx/tdf106217.pptx Binary files differnew file mode 100644 index 0000000000..64fb968b8a --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf106217.pptx diff --git a/chart2/qa/extras/data/pptx/tdf115107-2.pptx b/chart2/qa/extras/data/pptx/tdf115107-2.pptx Binary files differnew file mode 100644 index 0000000000..629056ecc8 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf115107-2.pptx diff --git a/chart2/qa/extras/data/pptx/tdf115107.pptx b/chart2/qa/extras/data/pptx/tdf115107.pptx Binary files differnew file mode 100644 index 0000000000..2ec5c2cd22 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf115107.pptx diff --git a/chart2/qa/extras/data/pptx/tdf115859.pptx b/chart2/qa/extras/data/pptx/tdf115859.pptx Binary files differnew file mode 100644 index 0000000000..07943041be --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf115859.pptx diff --git a/chart2/qa/extras/data/pptx/tdf116163.pptx b/chart2/qa/extras/data/pptx/tdf116163.pptx Binary files differnew file mode 100644 index 0000000000..5fbee8304a --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf116163.pptx diff --git a/chart2/qa/extras/data/pptx/tdf121205.pptx b/chart2/qa/extras/data/pptx/tdf121205.pptx Binary files differnew file mode 100644 index 0000000000..e60849ec02 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf121205.pptx diff --git a/chart2/qa/extras/data/pptx/tdf122765.pptx b/chart2/qa/extras/data/pptx/tdf122765.pptx Binary files differnew file mode 100644 index 0000000000..948190c30b --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf122765.pptx diff --git a/chart2/qa/extras/data/pptx/tdf125444.pptx b/chart2/qa/extras/data/pptx/tdf125444.pptx Binary files differnew file mode 100644 index 0000000000..e78efecd65 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf125444.pptx diff --git a/chart2/qa/extras/data/pptx/tdf127393.pptx b/chart2/qa/extras/data/pptx/tdf127393.pptx Binary files differnew file mode 100644 index 0000000000..7c4047817a --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf127393.pptx diff --git a/chart2/qa/extras/data/pptx/tdf127720.pptx b/chart2/qa/extras/data/pptx/tdf127720.pptx Binary files differnew file mode 100644 index 0000000000..b10a4c5ab4 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf127720.pptx diff --git a/chart2/qa/extras/data/pptx/tdf127811.pptx b/chart2/qa/extras/data/pptx/tdf127811.pptx Binary files differnew file mode 100644 index 0000000000..cf3fdee606 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf127811.pptx diff --git a/chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptx b/chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptx Binary files differnew file mode 100644 index 0000000000..986dbe0dfd --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf128345_ChartArea_CG_TS.pptx diff --git a/chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptx b/chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptx Binary files differnew file mode 100644 index 0000000000..63d126b78d --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf128345_ChartWall_CS_TG.pptx 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 Binary files differnew file mode 100644 index 0000000000..67e383cfb1 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf128345_Legend_CS_TG_axial.pptx diff --git a/chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptx b/chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptx Binary files differnew file mode 100644 index 0000000000..58d73fcd26 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf135366_CustomLabelText.pptx diff --git a/chart2/qa/extras/data/pptx/tdf137691_dataTable.pptx b/chart2/qa/extras/data/pptx/tdf137691_dataTable.pptx Binary files differnew file mode 100644 index 0000000000..edb465d729 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf137691_dataTable.pptx diff --git a/chart2/qa/extras/data/pptx/tdf150176.pptx b/chart2/qa/extras/data/pptx/tdf150176.pptx Binary files differnew file mode 100644 index 0000000000..fa217f92c8 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf150176.pptx diff --git a/chart2/qa/extras/data/pptx/tdf48041.pptx b/chart2/qa/extras/data/pptx/tdf48041.pptx Binary files differnew file mode 100644 index 0000000000..b0872f84f2 --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf48041.pptx diff --git a/chart2/qa/extras/data/pptx/tdf60316.pptx b/chart2/qa/extras/data/pptx/tdf60316.pptx Binary files differnew file mode 100644 index 0000000000..d1da03e5fa --- /dev/null +++ b/chart2/qa/extras/data/pptx/tdf60316.pptx diff --git a/chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptx b/chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptx Binary files differnew file mode 100644 index 0000000000..395546edb4 --- /dev/null +++ b/chart2/qa/extras/data/pptx/testChartTitlePropertiesBitmapFill.pptx diff --git a/chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptx b/chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptx Binary files differnew file mode 100644 index 0000000000..361bdd643c --- /dev/null +++ b/chart2/qa/extras/data/pptx/testChartTitlePropertiesColorFill.pptx diff --git a/chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptx b/chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptx Binary files differnew file mode 100644 index 0000000000..a77896dcdf --- /dev/null +++ b/chart2/qa/extras/data/pptx/testChartTitlePropertiesGradientFill.pptx diff --git a/chart2/qa/extras/data/xls/axis_sourceformatting.xls b/chart2/qa/extras/data/xls/axis_sourceformatting.xls Binary files differnew file mode 100644 index 0000000000..2ee38b7208 --- /dev/null +++ b/chart2/qa/extras/data/xls/axis_sourceformatting.xls diff --git a/chart2/qa/extras/data/xls/chart.xls b/chart2/qa/extras/data/xls/chart.xls Binary files differnew file mode 100644 index 0000000000..7c81d7f49e --- /dev/null +++ b/chart2/qa/extras/data/xls/chart.xls diff --git a/chart2/qa/extras/data/xls/piechart_outside.xls b/chart2/qa/extras/data/xls/piechart_outside.xls Binary files differnew file mode 100644 index 0000000000..02a4f7b855 --- /dev/null +++ b/chart2/qa/extras/data/xls/piechart_outside.xls diff --git a/chart2/qa/extras/data/xls/source_number_format_axis.xls b/chart2/qa/extras/data/xls/source_number_format_axis.xls Binary files differnew file mode 100644 index 0000000000..bc54593ac1 --- /dev/null +++ b/chart2/qa/extras/data/xls/source_number_format_axis.xls diff --git a/chart2/qa/extras/data/xlsx/ChartDataTable.xlsx b/chart2/qa/extras/data/xlsx/ChartDataTable.xlsx Binary files differnew file mode 100644 index 0000000000..fff4f00aea --- /dev/null +++ b/chart2/qa/extras/data/xlsx/ChartDataTable.xlsx diff --git a/chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx b/chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx Binary files differnew file mode 100644 index 0000000000..b077fd2e03 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/DataTable-MultipleLegendEntriesForOneDataSeries.xlsx diff --git a/chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsx b/chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsx Binary files differnew file mode 100644 index 0000000000..03d7a47f6c --- /dev/null +++ b/chart2/qa/extras/data/xlsx/add_series_secondary_axis.xlsx diff --git a/chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsx b/chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsx Binary files differnew file mode 100644 index 0000000000..c157562572 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/auto_marker_excel10.xlsx diff --git a/chart2/qa/extras/data/xlsx/autotitledel_2007.xlsx b/chart2/qa/extras/data/xlsx/autotitledel_2007.xlsx Binary files differnew file mode 100644 index 0000000000..9ce71cf4e0 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/autotitledel_2007.xlsx diff --git a/chart2/qa/extras/data/xlsx/autotitledel_2013.xlsx b/chart2/qa/extras/data/xlsx/autotitledel_2013.xlsx Binary files differnew file mode 100644 index 0000000000..a5070273a8 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/autotitledel_2013.xlsx diff --git a/chart2/qa/extras/data/xlsx/axis-label-rotation.xlsx b/chart2/qa/extras/data/xlsx/axis-label-rotation.xlsx Binary files differnew file mode 100644 index 0000000000..cc3b1df8a4 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/axis-label-rotation.xlsx diff --git a/chart2/qa/extras/data/xlsx/axis_character_properties.xlsx b/chart2/qa/extras/data/xlsx/axis_character_properties.xlsx Binary files differnew file mode 100644 index 0000000000..635aafe81b --- /dev/null +++ b/chart2/qa/extras/data/xlsx/axis_character_properties.xlsx diff --git a/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx b/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx Binary files differnew file mode 100644 index 0000000000..5cda3af37e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/axis_title_default_rotation.xlsx diff --git a/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx b/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx Binary files differnew file mode 100644 index 0000000000..29e42d8a47 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/axis_title_rotated.xlsx diff --git a/chart2/qa/extras/data/xlsx/axis_title_rotation.xlsx b/chart2/qa/extras/data/xlsx/axis_title_rotation.xlsx Binary files differnew file mode 100644 index 0000000000..fc90e2bf4c --- /dev/null +++ b/chart2/qa/extras/data/xlsx/axis_title_rotation.xlsx diff --git a/chart2/qa/extras/data/xlsx/bar_chart_simple.xlsx b/chart2/qa/extras/data/xlsx/bar_chart_simple.xlsx Binary files differnew file mode 100644 index 0000000000..52040bf2cd --- /dev/null +++ b/chart2/qa/extras/data/xlsx/bar_chart_simple.xlsx diff --git a/chart2/qa/extras/data/xlsx/barchart_outend.xlsx b/chart2/qa/extras/data/xlsx/barchart_outend.xlsx Binary files differnew file mode 100644 index 0000000000..621c0c2844 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/barchart_outend.xlsx diff --git a/chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsx b/chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsx Binary files differnew file mode 100644 index 0000000000..c87b2b3186 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/barchart_totalsrow.xlsx diff --git a/chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsx b/chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsx Binary files differnew file mode 100644 index 0000000000..d13fe5ef48 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/bubble_chart_simple.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart-area-style-background.xlsx b/chart2/qa/extras/data/xlsx/chart-area-style-background.xlsx Binary files differnew file mode 100644 index 0000000000..2baf1e2063 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart-area-style-background.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart-area-style-border.xlsx b/chart2/qa/extras/data/xlsx/chart-area-style-border.xlsx Binary files differnew file mode 100644 index 0000000000..81a6a6e606 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart-area-style-border.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart-auto-background.xlsx b/chart2/qa/extras/data/xlsx/chart-auto-background.xlsx Binary files differnew file mode 100644 index 0000000000..a4594ad4fc --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart-auto-background.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsx b/chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsx Binary files differnew file mode 100644 index 0000000000..4e3394c8ef --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart-hatch-fill.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsx b/chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsx Binary files differnew file mode 100644 index 0000000000..59f907dffe --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart-text-can-overlap.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart.xlsx b/chart2/qa/extras/data/xlsx/chart.xlsx Binary files differnew file mode 100644 index 0000000000..193bfc49d5 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart_label_text_break.xlsx b/chart2/qa/extras/data/xlsx/chart_label_text_break.xlsx Binary files differnew file mode 100644 index 0000000000..81c4958604 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart_label_text_break.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart_pie2007.xlsx b/chart2/qa/extras/data/xlsx/chart_pie2007.xlsx Binary files differnew file mode 100644 index 0000000000..583c6720a4 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart_pie2007.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart_title.xlsx b/chart2/qa/extras/data/xlsx/chart_title.xlsx Binary files differnew file mode 100644 index 0000000000..0b79855462 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart_title.xlsx diff --git a/chart2/qa/extras/data/xlsx/chart_with_name_range.xlsx b/chart2/qa/extras/data/xlsx/chart_with_name_range.xlsx Binary files differnew file mode 100644 index 0000000000..2f2b814011 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/chart_with_name_range.xlsx diff --git a/chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsx b/chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsx Binary files differnew file mode 100644 index 0000000000..e922d4df4a --- /dev/null +++ b/chart2/qa/extras/data/xlsx/combined_chart_secondary_axis.xlsx diff --git a/chart2/qa/extras/data/xlsx/custom_data_label.xlsx b/chart2/qa/extras/data/xlsx/custom_data_label.xlsx Binary files differnew file mode 100644 index 0000000000..cc69aaf0dc --- /dev/null +++ b/chart2/qa/extras/data/xlsx/custom_data_label.xlsx diff --git a/chart2/qa/extras/data/xlsx/data_label.xlsx b/chart2/qa/extras/data/xlsx/data_label.xlsx Binary files differnew file mode 100644 index 0000000000..1ccf9b6987 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/data_label.xlsx diff --git a/chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsx b/chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsx Binary files differnew file mode 100644 index 0000000000..1a55f5b868 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/data_labels_fill_color.xlsx diff --git a/chart2/qa/extras/data/xlsx/deleted_data_labels.xlsx b/chart2/qa/extras/data/xlsx/deleted_data_labels.xlsx Binary files differnew file mode 100644 index 0000000000..587c956082 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/deleted_data_labels.xlsx diff --git a/chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsx b/chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsx Binary files differnew file mode 100644 index 0000000000..06a052646f --- /dev/null +++ b/chart2/qa/extras/data/xlsx/deleted_legend_entry.xlsx diff --git a/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx b/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx Binary files differnew file mode 100644 index 0000000000..ea02464b1c --- /dev/null +++ b/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx diff --git a/chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsx b/chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsx Binary files differnew file mode 100644 index 0000000000..64e673e7c7 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/dispBlanksAs_2007.xlsx diff --git a/chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsx b/chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsx Binary files differnew file mode 100644 index 0000000000..86a0a35961 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/dispBlanksAs_2013.xlsx diff --git a/chart2/qa/extras/data/xlsx/empty_chart.xlsx b/chart2/qa/extras/data/xlsx/empty_chart.xlsx Binary files differnew file mode 100644 index 0000000000..449902146a --- /dev/null +++ b/chart2/qa/extras/data/xlsx/empty_chart.xlsx diff --git a/chart2/qa/extras/data/xlsx/external_str_ref.xlsx b/chart2/qa/extras/data/xlsx/external_str_ref.xlsx Binary files differnew file mode 100644 index 0000000000..f2dde80e1f --- /dev/null +++ b/chart2/qa/extras/data/xlsx/external_str_ref.xlsx diff --git a/chart2/qa/extras/data/xlsx/fdo54361-1.xlsx b/chart2/qa/extras/data/xlsx/fdo54361-1.xlsx Binary files differnew file mode 100644 index 0000000000..dba79ef9cf --- /dev/null +++ b/chart2/qa/extras/data/xlsx/fdo54361-1.xlsx diff --git a/chart2/qa/extras/data/xlsx/fdo54361.xlsx b/chart2/qa/extras/data/xlsx/fdo54361.xlsx Binary files differnew file mode 100644 index 0000000000..2c49802a05 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/fdo54361.xlsx diff --git a/chart2/qa/extras/data/xlsx/fdo70609.xlsx b/chart2/qa/extras/data/xlsx/fdo70609.xlsx Binary files differnew file mode 100644 index 0000000000..261ef88058 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/fdo70609.xlsx diff --git a/chart2/qa/extras/data/xlsx/fdo78080.xlsx b/chart2/qa/extras/data/xlsx/fdo78080.xlsx Binary files differnew file mode 100644 index 0000000000..c4a4e3e003 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/fdo78080.xlsx diff --git a/chart2/qa/extras/data/xlsx/gapWidth.xlsx b/chart2/qa/extras/data/xlsx/gapWidth.xlsx Binary files differnew file mode 100644 index 0000000000..0e9c0eec08 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/gapWidth.xlsx diff --git a/chart2/qa/extras/data/xlsx/hidden_cells.xlsx b/chart2/qa/extras/data/xlsx/hidden_cells.xlsx Binary files differnew file mode 100644 index 0000000000..da3e2da77e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/hidden_cells.xlsx diff --git a/chart2/qa/extras/data/xlsx/incorrect_label_position.xlsx b/chart2/qa/extras/data/xlsx/incorrect_label_position.xlsx Binary files differnew file mode 100644 index 0000000000..4f133b5581 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/incorrect_label_position.xlsx diff --git a/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx Binary files differnew file mode 100644 index 0000000000..16ea01142e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/legend_manual_layout.xlsx diff --git a/chart2/qa/extras/data/xlsx/majorTickMark.xlsx b/chart2/qa/extras/data/xlsx/majorTickMark.xlsx Binary files differnew file mode 100644 index 0000000000..2b6cdcfb36 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/majorTickMark.xlsx diff --git a/chart2/qa/extras/data/xlsx/markerColor.xlsx b/chart2/qa/extras/data/xlsx/markerColor.xlsx Binary files differnew file mode 100644 index 0000000000..65e87ff38d --- /dev/null +++ b/chart2/qa/extras/data/xlsx/markerColor.xlsx diff --git a/chart2/qa/extras/data/xlsx/minorTickMark.xlsx b/chart2/qa/extras/data/xlsx/minorTickMark.xlsx Binary files differnew file mode 100644 index 0000000000..2d68792474 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/minorTickMark.xlsx diff --git a/chart2/qa/extras/data/xlsx/no_marker.xlsx b/chart2/qa/extras/data/xlsx/no_marker.xlsx Binary files differnew file mode 100644 index 0000000000..228c4590fa --- /dev/null +++ b/chart2/qa/extras/data/xlsx/no_marker.xlsx diff --git a/chart2/qa/extras/data/xlsx/number-formats.xlsx b/chart2/qa/extras/data/xlsx/number-formats.xlsx Binary files differnew file mode 100644 index 0000000000..f5250c52ec --- /dev/null +++ b/chart2/qa/extras/data/xlsx/number-formats.xlsx diff --git a/chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsx b/chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsx Binary files differnew file mode 100644 index 0000000000..273ebeb82e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/pie_chart_datapoint_explosion.xlsx diff --git a/chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsx b/chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsx Binary files differnew file mode 100644 index 0000000000..8428686ff6 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/piechart_deleted_legendentry.xlsx diff --git a/chart2/qa/extras/data/xlsx/piechart_legend.xlsx b/chart2/qa/extras/data/xlsx/piechart_legend.xlsx Binary files differnew file mode 100644 index 0000000000..baea1de9b0 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/piechart_legend.xlsx diff --git a/chart2/qa/extras/data/xlsx/piechart_outside.xlsx b/chart2/qa/extras/data/xlsx/piechart_outside.xlsx Binary files differnew file mode 100644 index 0000000000..e90eab1e90 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/piechart_outside.xlsx diff --git a/chart2/qa/extras/data/xlsx/plotVisOnly.xlsx b/chart2/qa/extras/data/xlsx/plotVisOnly.xlsx Binary files differnew file mode 100644 index 0000000000..8e4fcbd5ea --- /dev/null +++ b/chart2/qa/extras/data/xlsx/plotVisOnly.xlsx diff --git a/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx Binary files differnew file mode 100644 index 0000000000..f0bc588134 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/plot_area_manual_layout.xlsx diff --git a/chart2/qa/extras/data/xlsx/rAngAx.xlsx b/chart2/qa/extras/data/xlsx/rAngAx.xlsx Binary files differnew file mode 100644 index 0000000000..f6d521a3ed --- /dev/null +++ b/chart2/qa/extras/data/xlsx/rAngAx.xlsx 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 Binary files differnew file mode 100644 index 0000000000..de5d0391d2 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/secondary_axis_title_default_rotation.xlsx diff --git a/chart2/qa/extras/data/xlsx/ser_labels.xlsx b/chart2/qa/extras/data/xlsx/ser_labels.xlsx Binary files differnew file mode 100644 index 0000000000..ba2315666e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/ser_labels.xlsx diff --git a/chart2/qa/extras/data/xlsx/smoothed_series.xlsx b/chart2/qa/extras/data/xlsx/smoothed_series.xlsx Binary files differnew file mode 100644 index 0000000000..bab00ce139 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/smoothed_series.xlsx diff --git a/chart2/qa/extras/data/xlsx/smoothed_series2007.xlsx b/chart2/qa/extras/data/xlsx/smoothed_series2007.xlsx Binary files differnew file mode 100644 index 0000000000..3c8f0cc460 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/smoothed_series2007.xlsx diff --git a/chart2/qa/extras/data/xlsx/strict_chart.xlsx b/chart2/qa/extras/data/xlsx/strict_chart.xlsx Binary files differnew file mode 100644 index 0000000000..43789331a5 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/strict_chart.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf100084.xlsx b/chart2/qa/extras/data/xlsx/tdf100084.xlsx Binary files differnew file mode 100644 index 0000000000..5f03f39244 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf100084.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf108107.xlsx b/chart2/qa/extras/data/xlsx/tdf108107.xlsx Binary files differnew file mode 100644 index 0000000000..3f86326fa2 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf108107.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf111173.xlsx b/chart2/qa/extras/data/xlsx/tdf111173.xlsx Binary files differnew file mode 100644 index 0000000000..e62c6747b5 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf111173.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf111824.xlsx b/chart2/qa/extras/data/xlsx/tdf111824.xlsx Binary files differnew file mode 100644 index 0000000000..ae86756c47 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf111824.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf114139.xlsx b/chart2/qa/extras/data/xlsx/tdf114139.xlsx Binary files differnew file mode 100644 index 0000000000..ef09575c1f --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf114139.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf115012.xlsx b/chart2/qa/extras/data/xlsx/tdf115012.xlsx Binary files differnew file mode 100644 index 0000000000..cf8ac7d81e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf115012.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsx b/chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsx Binary files differnew file mode 100644 index 0000000000..a20aa0bb1b --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf119138-missing-autotitledeleted.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf122031.xlsx b/chart2/qa/extras/data/xlsx/tdf122031.xlsx Binary files differnew file mode 100644 index 0000000000..ac937a8c7a --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf122031.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf122915.xlsx b/chart2/qa/extras/data/xlsx/tdf122915.xlsx Binary files differnew file mode 100644 index 0000000000..ff20e04baf --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf122915.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf124817.xlsx b/chart2/qa/extras/data/xlsx/tdf124817.xlsx Binary files differnew file mode 100644 index 0000000000..d9b09644e4 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf124817.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf126033.xlsx b/chart2/qa/extras/data/xlsx/tdf126033.xlsx Binary files differnew file mode 100644 index 0000000000..ee60103c98 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf126033.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf126115.xlsx b/chart2/qa/extras/data/xlsx/tdf126115.xlsx Binary files differnew file mode 100644 index 0000000000..f845c06e31 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf126115.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf127777.xlsx b/chart2/qa/extras/data/xlsx/tdf127777.xlsx Binary files differnew file mode 100644 index 0000000000..c04de30fc8 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf127777.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf128619.xlsx b/chart2/qa/extras/data/xlsx/tdf128619.xlsx Binary files differnew file mode 100644 index 0000000000..e6eb142593 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf128619.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf128621.xlsx b/chart2/qa/extras/data/xlsx/tdf128621.xlsx Binary files differnew file mode 100644 index 0000000000..93a6822da9 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf128621.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf128627.xlsx b/chart2/qa/extras/data/xlsx/tdf128627.xlsx Binary files differnew file mode 100644 index 0000000000..419c1ad2f9 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf128627.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf128633.xlsx b/chart2/qa/extras/data/xlsx/tdf128633.xlsx Binary files differnew file mode 100644 index 0000000000..fa186895d6 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf128633.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf128634.xlsx b/chart2/qa/extras/data/xlsx/tdf128634.xlsx Binary files differnew file mode 100644 index 0000000000..91baa780ce --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf128634.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf128732.xlsx b/chart2/qa/extras/data/xlsx/tdf128732.xlsx Binary files differnew file mode 100644 index 0000000000..b92afb1ed6 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf128732.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf130657.xlsx b/chart2/qa/extras/data/xlsx/tdf130657.xlsx Binary files differnew file mode 100644 index 0000000000..036da200ab --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf130657.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf130986.xlsx b/chart2/qa/extras/data/xlsx/tdf130986.xlsx Binary files differnew file mode 100644 index 0000000000..9674fd1ab1 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf130986.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf132076.xlsx b/chart2/qa/extras/data/xlsx/tdf132076.xlsx Binary files differnew file mode 100644 index 0000000000..799ef9c855 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf132076.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsx b/chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsx Binary files differnew file mode 100644 index 0000000000..f8cad0e8cf --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf133190_tdf133191.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf133376.xlsx b/chart2/qa/extras/data/xlsx/tdf133376.xlsx Binary files differnew file mode 100644 index 0000000000..2000733ec8 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf133376.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf134118.xlsx b/chart2/qa/extras/data/xlsx/tdf134118.xlsx Binary files differnew file mode 100644 index 0000000000..ca86fb8cf1 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf134118.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf134225.xlsx b/chart2/qa/extras/data/xlsx/tdf134225.xlsx Binary files differnew file mode 100644 index 0000000000..ae7bdc66e3 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf134225.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf134978.xlsx b/chart2/qa/extras/data/xlsx/tdf134978.xlsx Binary files differnew file mode 100644 index 0000000000..ad5522a914 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf134978.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsx b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsx Binary files differnew file mode 100644 index 0000000000..69cad0d671 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsx b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsx Binary files differnew file mode 100644 index 0000000000..ced797258a --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf135184RoundLineCap2.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf136105.xlsx b/chart2/qa/extras/data/xlsx/tdf136105.xlsx Binary files differnew file mode 100644 index 0000000000..bc3a909224 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf136105.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf136267.xlsx b/chart2/qa/extras/data/xlsx/tdf136267.xlsx Binary files differnew file mode 100644 index 0000000000..741a33c429 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf136267.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf136752.xlsx b/chart2/qa/extras/data/xlsx/tdf136752.xlsx Binary files differnew file mode 100644 index 0000000000..05fad58cff --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf136752.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf137505.xlsx b/chart2/qa/extras/data/xlsx/tdf137505.xlsx Binary files differnew file mode 100644 index 0000000000..08fa6778bb --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf137505.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf137734.xlsx b/chart2/qa/extras/data/xlsx/tdf137734.xlsx Binary files differnew file mode 100644 index 0000000000..8c177becc3 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf137734.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf137917.xlsx b/chart2/qa/extras/data/xlsx/tdf137917.xlsx Binary files differnew file mode 100644 index 0000000000..4d08a23acd --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf137917.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf138204.xlsx b/chart2/qa/extras/data/xlsx/tdf138204.xlsx Binary files differnew file mode 100644 index 0000000000..04c2e50d79 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf138204.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf140489.xlsx b/chart2/qa/extras/data/xlsx/tdf140489.xlsx Binary files differnew file mode 100644 index 0000000000..bd24f40be7 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf140489.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf142351.xlsx b/chart2/qa/extras/data/xlsx/tdf142351.xlsx Binary files differnew file mode 100644 index 0000000000..0414bb3f16 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf142351.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf143127.xlsx b/chart2/qa/extras/data/xlsx/tdf143127.xlsx Binary files differnew file mode 100644 index 0000000000..116a00b60c --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf143127.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf143942.xlsx b/chart2/qa/extras/data/xlsx/tdf143942.xlsx Binary files differnew file mode 100644 index 0000000000..33ff6696b7 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf143942.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf150434.xlsx b/chart2/qa/extras/data/xlsx/tdf150434.xlsx Binary files differnew file mode 100644 index 0000000000..309a0c4c25 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf150434.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf81396.xlsx b/chart2/qa/extras/data/xlsx/tdf81396.xlsx Binary files differnew file mode 100644 index 0000000000..2a557262a2 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf81396.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf90876.xlsx b/chart2/qa/extras/data/xlsx/tdf90876.xlsx Binary files differnew file mode 100644 index 0000000000..3cf60e8168 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf90876.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdf98690.xlsx b/chart2/qa/extras/data/xlsx/tdf98690.xlsx Binary files differnew file mode 100644 index 0000000000..4269afa9ea --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdf98690.xlsx diff --git a/chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsx b/chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsx Binary files differnew file mode 100644 index 0000000000..0835cb3332 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/tdfPieNumFormat.xlsx diff --git a/chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsx b/chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsx Binary files differnew file mode 100644 index 0000000000..01c6fe56f1 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/test3DAreaChartZAxis.xlsx diff --git a/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx b/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx Binary files differnew file mode 100644 index 0000000000..409389e23b --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx diff --git a/chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsx b/chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsx Binary files differnew file mode 100644 index 0000000000..e73d16bd2d --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testBarChartDataPointPropXLSX.xlsx diff --git a/chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsx b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsx Binary files differnew file mode 100644 index 0000000000..9d2dff9b3e --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesBitmapFill.xlsx diff --git a/chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsx b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsx Binary files differnew file mode 100644 index 0000000000..9e9aa0beaf --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesColorFill.xlsx diff --git a/chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsx b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsx Binary files differnew file mode 100644 index 0000000000..b5b6177543 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testChartTitlePropertiesGradientFill.xlsx diff --git a/chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsx b/chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsx Binary files differnew file mode 100644 index 0000000000..47f8246e23 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testCombinedChartAxis.xlsx diff --git a/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx b/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx Binary files differnew file mode 100644 index 0000000000..caa08956cd --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testCustomPosDataLabels.xlsx diff --git a/chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsx b/chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsx Binary files differnew file mode 100644 index 0000000000..69f89ec0e4 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testDataPointLabelCustomPos.xlsx diff --git a/chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsx b/chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsx Binary files differnew file mode 100644 index 0000000000..ba1c526b41 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testDataseriesOverlapStackedChart.xlsx diff --git a/chart2/qa/extras/data/xlsx/testErrorBarProp.xlsx b/chart2/qa/extras/data/xlsx/testErrorBarProp.xlsx Binary files differnew file mode 100644 index 0000000000..ac9dde9b79 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testErrorBarProp.xlsx diff --git a/chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsx b/chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsx Binary files differnew file mode 100644 index 0000000000..6faa39b294 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testSecondaryAxis.xlsx diff --git a/chart2/qa/extras/data/xlsx/testTdf130032.xlsx b/chart2/qa/extras/data/xlsx/testTdf130032.xlsx Binary files differnew file mode 100644 index 0000000000..03a3dbf403 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testTdf130032.xlsx diff --git a/chart2/qa/extras/data/xlsx/testTdf90749.xlsx b/chart2/qa/extras/data/xlsx/testTdf90749.xlsx Binary files differnew file mode 100644 index 0000000000..ca3bc806c0 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/testTdf90749.xlsx diff --git a/chart2/qa/extras/data/xlsx/title_character_properties.xlsx b/chart2/qa/extras/data/xlsx/title_character_properties.xlsx Binary files differnew file mode 100644 index 0000000000..2a239936ca --- /dev/null +++ b/chart2/qa/extras/data/xlsx/title_character_properties.xlsx diff --git a/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx Binary files differnew file mode 100644 index 0000000000..c89b2af4dc --- /dev/null +++ b/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx diff --git a/chart2/qa/extras/data/xlsx/trendline.xlsx b/chart2/qa/extras/data/xlsx/trendline.xlsx Binary files differnew file mode 100644 index 0000000000..701fcfd012 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/trendline.xlsx diff --git a/chart2/qa/extras/data/xlsx/trendline2007.xlsx b/chart2/qa/extras/data/xlsx/trendline2007.xlsx Binary files differnew file mode 100644 index 0000000000..87d4d5a9cf --- /dev/null +++ b/chart2/qa/extras/data/xlsx/trendline2007.xlsx diff --git a/chart2/qa/extras/data/xlsx/vary_color.xlsx b/chart2/qa/extras/data/xlsx/vary_color.xlsx Binary files differnew file mode 100644 index 0000000000..980cdda341 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/vary_color.xlsx diff --git a/chart2/qa/extras/data/xlsx/vary_color2007.xlsx b/chart2/qa/extras/data/xlsx/vary_color2007.xlsx Binary files differnew file mode 100644 index 0000000000..657c2176d6 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/vary_color2007.xlsx diff --git a/chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsx b/chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsx Binary files differnew file mode 100644 index 0000000000..cf511dfaf2 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/xAxisLabelsRotation.xlsx 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 Binary files differnew file mode 100644 index 0000000000..d2a1be49bf --- /dev/null +++ b/chart2/qa/extras/xshape/data/ods/fdo75075.ods diff --git a/chart2/qa/extras/xshape/data/ods/property-mapping-bar.ods b/chart2/qa/extras/xshape/data/ods/property-mapping-bar.ods Binary files differnew file mode 100644 index 0000000000..1a4e826dfb --- /dev/null +++ b/chart2/qa/extras/xshape/data/ods/property-mapping-bar.ods diff --git a/chart2/qa/extras/xshape/data/ods/tdf151424.ods b/chart2/qa/extras/xshape/data/ods/tdf151424.ods Binary files differnew file mode 100644 index 0000000000..d1f6adcc24 --- /dev/null +++ b/chart2/qa/extras/xshape/data/ods/tdf151424.ods diff --git a/chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.ods b/chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.ods Binary files differnew file mode 100644 index 0000000000..1032e960b9 --- /dev/null +++ b/chart2/qa/extras/xshape/data/ods/tdf76649_TrendLineBug.ods diff --git a/chart2/qa/extras/xshape/data/ods/tdf90839-4.ods b/chart2/qa/extras/xshape/data/ods/tdf90839-4.ods Binary files differnew file mode 100644 index 0000000000..3126ac1759 --- /dev/null +++ b/chart2/qa/extras/xshape/data/ods/tdf90839-4.ods diff --git a/chart2/qa/extras/xshape/data/ods/testChart.ods b/chart2/qa/extras/xshape/data/ods/testChart.ods Binary files differnew file mode 100644 index 0000000000..956f57d525 --- /dev/null +++ b/chart2/qa/extras/xshape/data/ods/testChart.ods diff --git a/chart2/qa/extras/xshape/data/pptx/tdf149204.pptx b/chart2/qa/extras/xshape/data/pptx/tdf149204.pptx Binary files differnew file mode 100644 index 0000000000..60d006547a --- /dev/null +++ b/chart2/qa/extras/xshape/data/pptx/tdf149204.pptx diff --git a/chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptx b/chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptx Binary files differnew file mode 100644 index 0000000000..f3af677656 --- /dev/null +++ b/chart2/qa/extras/xshape/data/pptx/tdf88154_LabelRotatedLayout.pptx 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á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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 120 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 100 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 20 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 70 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 50 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 Binary files differnew file mode 100644 index 0000000000..1044345619 --- /dev/null +++ b/chart2/qa/extras/xshape/data/xls/tdf150832.xls diff --git a/chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsx b/chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsx Binary files differnew file mode 100644 index 0000000000..05db435f60 --- /dev/null +++ b/chart2/qa/extras/xshape/data/xlsx/tdf90839-1.xlsx diff --git a/chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsx b/chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsx Binary files differnew file mode 100644 index 0000000000..d3922f7f20 --- /dev/null +++ b/chart2/qa/extras/xshape/data/xlsx/tdf90839-2.xlsx diff --git a/chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsx b/chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsx Binary files differnew file mode 100644 index 0000000000..5a3ee4cf49 --- /dev/null +++ b/chart2/qa/extras/xshape/data/xlsx/tdf90839-3.xlsx |