// 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(u"calc8"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"Object 1/content.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
void Chart2GeometryTest::testTdf135184RoundLineCap2()
{ // It tests legend, data series sector and title.
loadFromFile(u"xlsx/tdf135184RoundLineCap2.xlsx");
save(u"calc8"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"Object 1/content.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
// 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(u"Calc Office Open XML"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"xl/charts/chart1.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
static constexpr OString sDash("/c:spPr/a:ln/a:prstDash"_ostr); // chart area
assertXPath(pXmlDoc, "/c:chartSpace" + sDash, "val", u"dashDot"); // data series line static constexpr OString sStart("/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser"_ostr);
assertXPath(pXmlDoc, sStart + sDash, "val", u"dash"); // regression-curve (trendline)
assertXPath(pXmlDoc, sStart + "/c:trendline" + sDash, "val", u"sysDot");
}
void Chart2GeometryTest::testTdf135184RoundLineCap4()
{ // It tests legend, data series sector and title.
loadFromFile(u"xlsx/tdf135184RoundLineCap2.xlsx");
save(u"Calc Office Open XML"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"xl/charts/chart1.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
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(u"Impress MS PowerPoint 2007 XML"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"ppt/charts/chart1.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
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");
// Verify the content of the opacity definition
save(u"impress8"_ustr);
xmlDocUniquePtr pXmlDoc2 = parseExport(u"Object 1/styles.xml"_ustr);
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(u"Impress MS PowerPoint 2007 XML"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"ppt/charts/chart1.xml"_ustr);
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", u"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");
// Verify content of the opacity definition
save(u"impress8"_ustr);
xmlDocUniquePtr pXmlDoc2 = parseExport(u"Object 1/styles.xml"_ustr);
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(u"Impress MS PowerPoint 2007 XML"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"ppt/charts/chart1.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
// 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", u"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");
// Verify content of the opacity definition
save(u"impress8"_ustr);
xmlDocUniquePtr pXmlDoc2 = parseExport(u"Object 1/styles.xml"_ustr);
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);
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;
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;
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");
// 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.
SetODFDefaultVersion(SvtSaveOptions::ODFVER_012);
loadFromFile(u"pptx/tdf135366_CustomLabelText.pptx");
save(u"impress8"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"Object 1/content.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);
// Find custom text. As of version 7.0 it is in a <text:span> element. static constexpr constchar* 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");
assertXPath(pXmlDoc, sCustomTextPath, 1);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.