tdf#108021 Chart: Fix text break of column chart X axis
With this patch the text break is allowed for column chart
X axis if the text is rotated with 0, 90 or 270 degree.
(The MS Office only allowed the text break of X axis
text when the rotation is 0, 90, or 270 degree.)
Change-Id: I0914f6208d5a5c0c864dc0227032ef858b044445
Reviewed-on: https://gerrit.libreoffice.org/65165
Tested-by: Jenkins
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 64e343c..b8b9a87 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -69,6 +69,7 @@ public:
void testTdf86624(); // manually placed legends
void testTdf105517();
void testTdf106217();
void testTdf108021();
void testAutoBackgroundXLSX();
void testChartAreaStyleBackgroundXLSX();
void testChartHatchFillXLSX();
@@ -151,6 +152,7 @@ public:
CPPUNIT_TEST(testTdf86624);
CPPUNIT_TEST(testTdf105517);
CPPUNIT_TEST(testTdf106217);
CPPUNIT_TEST(testTdf108021);
CPPUNIT_TEST(testAutoBackgroundXLSX);
CPPUNIT_TEST(testChartAreaStyleBackgroundXLSX);
CPPUNIT_TEST(testChartHatchFillXLSX);
@@ -853,6 +855,24 @@ void Chart2ImportTest::testTdf106217()
CPPUNIT_ASSERT_EQUAL(sal_Int32(2700), aSize.Height);
}
void Chart2ImportTest::testTdf108021()
{
// Tdf108021 : To check TextBreak value is true.
load("/chart2/qa/extras/data/ods/", "tdf108021.ods");
uno::Reference< chart::XDiagram > mxDiagram;
uno::Reference< beans::XPropertySet > xAxisProp;
bool bTextBreak = false;
uno::Reference< chart::XChartDocument > xChartDoc ( getChartCompFromSheet( 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);
}
void Chart2ImportTest::testTransparentBackground(OUString const & filename)
{
load("/chart2/qa/extras/data/xlsx/", filename);
diff --git a/chart2/qa/extras/data/ods/tdf108021.ods b/chart2/qa/extras/data/ods/tdf108021.ods
new file mode 100755
index 0000000..ebbc5e5
--- /dev/null
+++ b/chart2/qa/extras/data/ods/tdf108021.ods
Binary files differ
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 7a02587..feaf090 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -521,7 +521,9 @@ bool VCartesianAxis::isBreakOfLabelsAllowed(
//no break for value axis
if( !m_bUseTextLabels )
return false;
if( rAxisLabelProperties.fRotationAngleDegree != 0.0 )
if( !( rAxisLabelProperties.fRotationAngleDegree == 0.0 ||
rAxisLabelProperties.fRotationAngleDegree == 90.0 ||
rAxisLabelProperties.fRotationAngleDegree == 270.0 ) )
return false;
//break only for horizontal axis
return bIsHorizontalAxis;
diff --git a/sw/qa/extras/layout/data/tdf108021.odt b/sw/qa/extras/layout/data/tdf108021.odt
new file mode 100755
index 0000000..39ef6df
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf108021.odt
Binary files differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 633a31f..f1c167f2 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -41,6 +41,7 @@ public:
void testRedlineCharAttributes();
void testTdf116830();
void testTdf114163();
void testTdf108021();
void testTdf116925();
void testTdf117028();
void testTdf106390();
@@ -77,6 +78,7 @@ public:
CPPUNIT_TEST(testRedlineCharAttributes);
CPPUNIT_TEST(testTdf116830);
CPPUNIT_TEST(testTdf114163);
CPPUNIT_TEST(testTdf108021);
CPPUNIT_TEST(testTdf116925);
CPPUNIT_TEST(testTdf117028);
CPPUNIT_TEST(testTdf106390);
@@ -2323,6 +2325,24 @@ void SwLayoutWriter::testTdf114163()
// This failed, if the legend first label is not "Data3".
}
void SwLayoutWriter::testTdf108021()
{
SwDoc* pDoc = createDoc("tdf108021.odt");
SwDocShell* pShell = pDoc->GetDocShell();
// Dump the rendering of the first page as an XML file.
std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
MetafileXmlDump dumper;
xmlDocPtr pXmlDoc = dumper.dumpAndParse(*xMetaFile);
CPPUNIT_ASSERT(pXmlDoc);
assertXPath(
pXmlDoc,
"/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/push[1]/push[1]/textarray[@length='17']",
8);
// This failed, if the textarray length of the first axis label not 17.
}
void SwLayoutWriter::testTdf116925()
{
SwDoc* pDoc = createDoc("tdf116925.docx");