39 lines
1.8 KiB
Diff
39 lines
1.8 KiB
Diff
|
From 7ff2bfbf8af599bb7536721e6c221486519d7e42 Mon Sep 17 00:00:00 2001
|
||
|
From: Tamas Bunth <tamas.bunth@collabora.co.uk>
|
||
|
Date: Mon, 26 Nov 2018 07:19:41 +0100
|
||
|
Subject: [PATCH] Put text label outside of the pie if..
|
||
|
|
||
|
performLabelBestFitInnerPlacement fails.
|
||
|
|
||
|
Change-Id: Ic84e8b42e02da2023b22a9406c44d462170c5305
|
||
|
Reviewed-on: https://gerrit.libreoffice.org/64015
|
||
|
Tested-by: Jenkins
|
||
|
Reviewed-by: Tamás Bunth <btomi96@gmail.com>
|
||
|
(cherry picked from commit 3339c730f8c9a6088a2e8b335185f1bf0b232216)
|
||
|
---
|
||
|
|
||
|
diff --git a/chart2/source/view/charttypes/PieChart.cxx b/chart2/source/view/charttypes/PieChart.cxx
|
||
|
index f3f1ef3..3cc4dc3 100644
|
||
|
--- a/chart2/source/view/charttypes/PieChart.cxx
|
||
|
+++ b/chart2/source/view/charttypes/PieChart.cxx
|
||
|
@@ -1590,7 +1590,18 @@
|
||
|
|
||
|
if( !performLabelBestFitInnerPlacement(rShapeParam, rPieLabelInfo) )
|
||
|
{
|
||
|
- // TODO
|
||
|
+ // If it does not fit inside, let's put it outside
|
||
|
+ PolarLabelPositionHelper aPolarPosHelper(m_pPosHelper.get(),m_nDimension,m_xLogicTarget,m_pShapeFactory);
|
||
|
+ auto eAlignment = LABEL_ALIGN_CENTER;
|
||
|
+ awt::Point aScreenPosition2D(
|
||
|
+ aPolarPosHelper.getLabelScreenPositionAndAlignmentForUnitCircleValues(eAlignment, css::chart::DataLabelPlacement::OUTSIDE
|
||
|
+ , rShapeParam.mfUnitCircleStartAngleDegree, rShapeParam.mfUnitCircleWidthAngleDegree
|
||
|
+ , rShapeParam.mfUnitCircleInnerRadius, rShapeParam.mfUnitCircleOuterRadius, rShapeParam.mfLogicZ+0.5, 0 ));
|
||
|
+ basegfx::B2IVector aTranslationVector = rPieLabelInfo.aFirstPosition - rPieLabelInfo.aOrigin;
|
||
|
+ aTranslationVector.setLength(150);
|
||
|
+ aScreenPosition2D.X += aTranslationVector.getX();
|
||
|
+ aScreenPosition2D.Y += aTranslationVector.getY();
|
||
|
+ rPieLabelInfo.xLabelGroupShape->setPosition(aScreenPosition2D);
|
||
|
}
|
||
|
}
|
||
|
|