From b0068342398786ca50304260434a18880dddf74d Mon Sep 17 00:00:00 2001 From: Tünde Tóth Date: Fri, 11 Dec 2020 09:13:46 +0100 Subject: tdf#138777 pie chart: improve long data label width MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to avoid chart distortion. Reduce the maximum text width of data point label shape based, because in some cases the long data label flowed out of the chart. Change-Id: I045c81ecc6ce579e1f472d7ea67e04315ce9c60b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107585 Tested-by: Jenkins Tested-by: László Németh Reviewed-by: László Németh --- chart2/source/view/charttypes/PieChart.cxx | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'chart2/source') diff --git a/chart2/source/view/charttypes/PieChart.cxx b/chart2/source/view/charttypes/PieChart.cxx index 7bf2eaa2a89b..3b61cb9c46e3 100644 --- a/chart2/source/view/charttypes/PieChart.cxx +++ b/chart2/source/view/charttypes/PieChart.cxx @@ -386,14 +386,14 @@ void PieChart::createTextLabelShape( // set the maximum text width to be used when text wrapping is enabled double fTextMaximumFrameWidth = 0.8 * fPieRadius; - if( nLabelPlacement == css::chart::DataLabelPlacement::OUTSIDE && m_aAvailableOuterRect.getWidth() ) + if (nLabelPlacement == css::chart::DataLabelPlacement::OUTSIDE + && m_aAvailableOuterRect.getWidth()) { - if (fAngleDegree < 67.5 || fAngleDegree >= 292.5) - fTextMaximumFrameWidth = m_aAvailableOuterRect.getMaxX() - aPieLabelInfo.aFirstPosition.getX(); - else if (fAngleDegree < 112.5 || fAngleDegree >= 247.5) - fTextMaximumFrameWidth = m_aAvailableOuterRect.getWidth(); + if ((fAngleDegree >= 67.5 && fAngleDegree <= 112.5) + || (fAngleDegree >= 247.5 && fAngleDegree <= 292.5)) + fTextMaximumFrameWidth = m_aAvailableOuterRect.getWidth() / 3.0; else - fTextMaximumFrameWidth = aPieLabelInfo.aFirstPosition.getX() - m_aAvailableOuterRect.getMinX(); + fTextMaximumFrameWidth = 0.85 * (m_aAvailableOuterRect.getWidth() / 2.0 - fPieRadius); } sal_Int32 nTextMaximumFrameWidth = ceil(fTextMaximumFrameWidth); @@ -424,17 +424,12 @@ void PieChart::createTextLabelShape( { if (m_aAvailableOuterRect.getWidth()) { - if (fAngleDegree < 67.5 || fAngleDegree >= 292.5) - fTextMaximumFrameWidth - = 0.8 - * (m_aAvailableOuterRect.getMaxX() - aPieLabelInfo.aFirstPosition.getX()); - else if (fAngleDegree < 112.5 || fAngleDegree >= 247.5) - fTextMaximumFrameWidth = 0.8 * m_aAvailableOuterRect.getWidth(); + if ((fAngleDegree >= 67.5 && fAngleDegree <= 112.5) + || (fAngleDegree >= 247.5 && fAngleDegree <= 292.5)) + fTextMaximumFrameWidth = m_aAvailableOuterRect.getWidth() / 3.0; else fTextMaximumFrameWidth - = 0.8 - * (aPieLabelInfo.aFirstPosition.getX() - m_aAvailableOuterRect.getMinX()); - + = 0.85 * (m_aAvailableOuterRect.getWidth() / 2.0 - fPieRadius); nTextMaximumFrameWidth = ceil(fTextMaximumFrameWidth); } -- cgit