[Libreoffice-commits] core.git: 4 commits - chart2/qa oox/source
Markus Mohrhard
markus.mohrhard at googlemail.com
Fri Apr 24 17:19:15 PDT 2015
chart2/qa/extras/chart2export.cxx | 22 ++++++
chart2/qa/extras/data/xlsx/title_manual_layout.xlsx |binary
oox/source/export/chartexport.cxx | 73 +++++++++++++++++++-
3 files changed, 92 insertions(+), 3 deletions(-)
New commits:
commit e9fbe1f7cd28de2a9da8089d89e903406165eb56
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 25 02:14:21 2015 +0200
also add a test case for title rotation, tdf#75015
Change-Id: Ie83b4fb4d7ae8a8b752dcacdaff00bfce0c72ed9
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index fcc91a2..00bec71 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -1334,6 +1334,8 @@ void Chart2ExportTest::testTitleManualLayoutXLSX()
double nY = aYVal.toDouble();
CPPUNIT_ASSERT(nY > 0 && nY < 1);
CPPUNIT_ASSERT(nX != nY);
+
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:bodyPr", "rot", "1200000");
}
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest);
commit af46ffafb73ff305e53be8768033d69ca9e6e5e1
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 25 01:54:07 2015 +0200
add test for tdf#75015
Change-Id: Idb1cbb9bf016d102705089b44486810affe7e3b0
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 87b7032..fcc91a2 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -90,6 +90,7 @@ public:
void testInvertIfNegativeXLSX();
void testBubble3DXLSX();
void testNoMarkerXLSX();
+ void testTitleManualLayoutXLSX();
CPPUNIT_TEST_SUITE(Chart2ExportTest);
CPPUNIT_TEST(testErrorBarXLSX);
@@ -144,6 +145,7 @@ public:
CPPUNIT_TEST(testInvertIfNegativeXLSX);
CPPUNIT_TEST(testBubble3DXLSX);
CPPUNIT_TEST(testNoMarkerXLSX);
+ CPPUNIT_TEST(testTitleManualLayoutXLSX);
CPPUNIT_TEST_SUITE_END();
protected:
@@ -1316,6 +1318,24 @@ void Chart2ExportTest::testNoMarkerXLSX()
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:marker", "val", "0");
}
+void Chart2ExportTest::testTitleManualLayoutXLSX()
+{
+ load("/chart2/qa/extras/data/xlsx/", "title_manual_layout.xlsx");
+ xmlDocPtr pXmlDoc = parseExport("xl/charts/chart", "Calc Office Open XML");
+ CPPUNIT_ASSERT(pXmlDoc);
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:xMode", "val", "edge");
+ assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:yMode", "val", "edge");
+
+ OUString aXVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:x", "val");
+ double nX = aXVal.toDouble();
+ CPPUNIT_ASSERT(nX > 0 && nX < 1);
+
+ OUString aYVal = getXPath(pXmlDoc, "/c:chartSpace/c:chart/c:title/c:layout/c:manualLayout/c:y", "val");
+ double nY = aYVal.toDouble();
+ CPPUNIT_ASSERT(nY > 0 && nY < 1);
+ CPPUNIT_ASSERT(nX != nY);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx b/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx
new file mode 100644
index 0000000..c89b2af
Binary files /dev/null and b/chart2/qa/extras/data/xlsx/title_manual_layout.xlsx differ
commit d55cb0845a094601dcc0149e9a59e360021d231c
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 25 01:23:36 2015 +0200
export title rotation, tdf#75015
Change-Id: I4ab3aeefb7ce58786a034798aa09b92a81791770
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index e53540e..80bcfba 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -1011,6 +1011,26 @@ void ChartExport::exportLegend( Reference< ::com::sun::star::chart::XChartDocume
pFS->endElement( FSNS( XML_c, XML_legend ) );
}
+namespace {
+
+/**
+ * nRotation is a 100th of a degree and the return value is
+ * in a 60,000th of a degree
+ *
+ * Also rotation is in opposite directions so multiply with -1
+ */
+OString calcRotationValue(sal_Int32 nRotation)
+{
+ if (nRotation > 18000) // 180 degree
+ {
+ nRotation -= 36000;
+ }
+ nRotation *= -600;
+ return OString::number(nRotation);
+}
+
+}
+
void ChartExport::exportTitle( Reference< XShape > xShape )
{
OUString sText;
@@ -1038,8 +1058,12 @@ void ChartExport::exportTitle( Reference< XShape > xShape )
if( bVertical )
sWritingMode = "wordArtVert";
+ sal_Int32 nRotation;
+ xPropSet->getPropertyValue("TextRotation") >>= nRotation;
+
pFS->singleElement( FSNS( XML_a, XML_bodyPr ),
XML_vert, sWritingMode,
+ XML_rot, nRotation == 0 ? NULL : calcRotationValue(nRotation).getStr(),
FSEND );
// TODO: lstStyle
pFS->singleElement( FSNS( XML_a, XML_lstStyle ),
commit bee3934bb68f38e89bb33f75f405099ca08d59a9
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 25 00:51:37 2015 +0200
first part for axis title manual position export, tdf#75015
Change-Id: Ib49ea2e76805e68ff71a52d9308258969454aaca
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 5a51066..e53540e 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -83,6 +83,8 @@
#include <com/sun/star/text/WritingMode.hpp>
#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/embed/XVisualObject.hpp>
+#include <com/sun/star/embed/Aspects.hpp>
#include <comphelper/processfactory.hxx>
#include <comphelper/random.hxx>
@@ -1066,9 +1068,50 @@ void ChartExport::exportTitle( Reference< XShape > xShape )
pFS->endElement( FSNS( XML_c, XML_rich ) );
pFS->endElement( FSNS( XML_c, XML_tx ) );
- // TODO:customize layout
- pFS->singleElement( FSNS( XML_c, XML_layout ),
- FSEND );
+ uno::Any aManualLayout = xPropSet->getPropertyValue("RelativePosition");
+ if (aManualLayout.hasValue())
+ {
+ pFS->startElement(FSNS( XML_c, XML_layout ), FSEND);
+ pFS->startElement(FSNS(XML_c, XML_manualLayout), FSEND);
+ pFS->singleElement(FSNS(XML_c, XML_xMode),
+ XML_val, "edge",
+ FSEND);
+ pFS->singleElement(FSNS(XML_c, XML_yMode),
+ XML_val, "edge",
+ FSEND);
+
+ Reference<embed::XVisualObject> xVisObject(mxChartModel, uno::UNO_QUERY);
+ awt::Size aPageSize = xVisObject->getVisualAreaSize(embed::Aspects::MSOLE_CONTENT);
+
+ // awt::Size aSize = xShape->getSize();
+ awt::Point aPos2 = xShape->getPosition();
+ double x = (double)aPos2.X / (double) aPageSize.Width;
+ double y = (double)aPos2.Y / (double) aPageSize.Height;
+ /*
+ pFS->singleElement(FSNS(XML_c, XML_wMode),
+ XML_val, "edge",
+ FSEND);
+ pFS->singleElement(FSNS(XML_c, XML_hMode),
+ XML_val, "edge",
+ FSEND);
+ */
+ pFS->singleElement(FSNS(XML_c, XML_x),
+ XML_val, IS(x),
+ FSEND);
+ pFS->singleElement(FSNS(XML_c, XML_y),
+ XML_val, IS(y),
+ FSEND);
+ /*
+ pFS->singleElement(FSNS(XML_c, XML_w),
+ XML_val, "",
+ FSEND);
+ pFS->singleElement(FSNS(XML_c, XML_h),
+ XML_val, "",
+ FSEND);
+ */
+ pFS->endElement(FSNS(XML_c, XML_manualLayout));
+ pFS->endElement(FSNS(XML_c, XML_layout));
+ }
pFS->singleElement( FSNS(XML_c, XML_overlay),
XML_val, "0",
More information about the Libreoffice-commits
mailing list