From 55136439e71b7adc62a46a3d3dc8de26d54d989d Mon Sep 17 00:00:00 2001 From: Balazs Varga Date: Thu, 5 Sep 2019 16:43:23 +0200 Subject: [PATCH] tdf127448 Chart: Avoid distortion of charts with multilevel axis labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit and too long tickmark lines. Note: larger chart distortion is a regression from commit: 4b3a648a2fd7d733674f95bb7f20670c57e99252 (tdf#127304 Chart: fix rotation of multilevel axis labels) Change-Id: Idbcd40d93c21a685e9ad1e49eb8c088a20ecae15 Reviewed-on: https://gerrit.libreoffice.org/78662 Reviewed-by: László Németh Tested-by: László Németh --- chart2/source/view/axes/VCartesianAxis.cxx | 17 +++++++++++++++-- .../layout/data/horizontal_multilevel.odt | Bin 0 -> 13425 bytes sw/qa/extras/layout/layout.cxx | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 sw/qa/extras/layout/data/horizontal_multilevel.odt diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx index 4874f7f9575f..ce795abb17d0 100644 --- a/chart2/source/view/axes/VCartesianAxis.cxx +++ b/chart2/source/view/axes/VCartesianAxis.cxx @@ -1619,7 +1619,11 @@ void VCartesianAxis::doStaggeringOfLabels( const AxisLabelProperties& rAxisLabel if( nTextLevel>0 ) { lcl_shiftLabels(*apTickIter, aCummulatedLabelsDistance); - fRotationAngleDegree = 0.0; + //multilevel labels: 0 or 90 by default + if( m_aAxisProperties.m_bSwapXAndY ) + fRotationAngleDegree = 90.0; + else + fRotationAngleDegree = 0.0; } aCummulatedLabelsDistance += lcl_getLabelsDistance( *apTickIter, pTickFactory2D->getDistanceAxisTickToText(m_aAxisProperties), @@ -1682,6 +1686,7 @@ void VCartesianAxis::createLabels() aComplexProps.bOverlapAllowed = aComplexProps.fRotationAngleDegree != 0.0; if( nTextLevel > 0 ) { + //multilevel labels: 0 or 90 by default if( m_aAxisProperties.m_bSwapXAndY ) aComplexProps.fRotationAngleDegree = 90.0; else @@ -1769,7 +1774,7 @@ void VCartesianAxis::updatePositions() double fRotationAngleDegree = m_aAxisLabelProperties.fRotationAngleDegree; if( nDepth > 0 ) { - /* Multi-level Labels: default to 0 or 90 */ + //multilevel labels: 0 or 90 by default if( pTickFactory2D->isHorizontalAxis() ) fRotationAngleDegree = 0.0; else @@ -1863,6 +1868,14 @@ void VCartesianAxis::createShapes() if( apTickIter ) { double fRotationAngleDegree = m_aAxisLabelProperties.fRotationAngleDegree; + if( nTextLevel > 0 ) + { + //Multi-level Labels: default to 0 or 90 + if( m_aAxisProperties.m_bSwapXAndY ) + fRotationAngleDegree = 90.0; + else + fRotationAngleDegree = 0.0; + } B2DVector aLabelsDistance(lcl_getLabelsDistance( *apTickIter, pTickFactory2D->getDistanceAxisTickToText(m_aAxisProperties), fRotationAngleDegree)); diff --git a/sw/qa/extras/layout/data/horizontal_multilevel.odt b/sw/qa/extras/layout/data/horizontal_multilevel.odt new file mode 100644 index 0000000000000000000000000000000000000000..9bd12586500a459aa3de8fd9b9aefd3e1ea7d40a GIT binary patch literal 13425 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 Ze`LhLU+RT`mxU4qK=QI|GSK|E`d{rVLFE7d literal 0 HcmV?d00001 diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 6fd861d68dc8..43f2381ada5b 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -2341,6 +2341,21 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf127304) "0"); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testHorizontal_multilevel) +{ + SwDoc* pDoc = createDoc("horizontal_multilevel.odt"); + SwDocShell* pShell = pDoc->GetDocShell(); + + // Dump the rendering of the first page as an XML file. + std::shared_ptr xMetaFile = pShell->GetPreviewMetaFile(); + MetafileXmlDump dumper; + xmlDocPtr pXmlDoc = dumpAndParse(dumper, *xMetaFile); + CPPUNIT_ASSERT(pXmlDoc); + // Test the Y position of horizontal category axis label. + assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/push[1]/push[3]/push[1]/textarray[7]", "y", + "7945"); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf124796) { SwDoc* pDoc = createDoc("tdf124796.odt");