diff options
author | Tünde Tóth <toth.tunde@nisz.hu> | 2020-12-11 09:13:46 +0100 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2020-12-16 18:26:26 +0100 |
commit | b0068342398786ca50304260434a18880dddf74d (patch) | |
tree | 3ab817e39b7c9bad27a825f335008ed347ee2cf6 /chart2/source/view | |
parent | f5ab8bcbfd20ecce4a358f62ee3f81b8b968a5de (diff) |
tdf#138777 pie chart: improve long data label width
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 <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'chart2/source/view')
-rw-r--r-- | chart2/source/view/charttypes/PieChart.cxx | 25 |
1 files changed, 10 insertions, 15 deletions
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); } |