summaryrefslogtreecommitdiffstats
path: root/chart2/source/view/charttypes
diff options
context:
space:
mode:
authorKurt Nordback <kurt.nordback@protonmail.com>2023-11-16 17:09:11 -0700
committerNoel Grandin <noel.grandin@collabora.co.uk>2024-02-17 07:08:20 +0100
commit4df39957bd985af591f452439c8aa5fc5c7a0d62 (patch)
tree8e2995b20e01e736990f9e1b1a021dcd29d479c1 /chart2/source/view/charttypes
parenttdf#50934: Initial implementation of connector lines for bar-of-pie (diff)
downloadcore-4df39957bd985af591f452439c8aa5fc5c7a0d62.tar.gz
core-4df39957bd985af591f452439c8aa5fc5c7a0d62.zip
tdf#50934: Ensure of-pie connector lines are black
Change-Id: I0548b395455eb17ec06f85ffce63affa15075391 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160729 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/view/charttypes')
-rw-r--r--chart2/source/view/charttypes/PieChart.cxx46
1 files changed, 46 insertions, 0 deletions
diff --git a/chart2/source/view/charttypes/PieChart.cxx b/chart2/source/view/charttypes/PieChart.cxx
index b74a5365374a..c3d36cd186fb 100644
--- a/chart2/source/view/charttypes/PieChart.cxx
+++ b/chart2/source/view/charttypes/PieChart.cxx
@@ -922,12 +922,58 @@ void PieChart::createShapes()
xTextTarget, pSeries, pDataSrc, n3DRelativeHeight);
break;
case PieChartSubType_BAR:
+ {
pDataSrc = &ofPieSrc;
createOneRing(SubPieType::LEFT, 0, aParam, xSeriesTarget,
xTextTarget, pSeries, pDataSrc, n3DRelativeHeight);
createOneBar(SubPieType::RIGHT, aParam, xSeriesTarget,
xTextTarget, pSeries, pDataSrc, n3DRelativeHeight);
+
+ // draw connecting lines
+ double xl0, xl1, yl0, yl1, x0, y0, x1, y1, y2, y3;
+
+ if (m_aPosHelper.m_fAngleDegreeOffset < 90.0) {
+ xl0 = aParam.mfUnitCircleOuterRadius * m_fLeftScale *
+ cos(m_aPosHelper.m_fAngleDegreeOffset * M_PI / 180) +
+ m_fLeftShift;
+ yl0 = aParam.mfUnitCircleOuterRadius * m_fLeftScale *
+ sin(m_aPosHelper.m_fAngleDegreeOffset * M_PI / 180);
+ } else {
+ xl0 = m_fLeftShift;
+ yl0 = aParam.mfUnitCircleOuterRadius * m_fLeftScale;
+ }
+
+ xl1 = m_fBarLeft;
+ yl1 = m_fFullBarHeight / 2;
+
+ x0 = m_aPosHelper.transformUnitCircleToScene(0, xl0, 0).PositionX;
+ y0 = m_aPosHelper.transformUnitCircleToScene(90, yl0, 0).PositionY;
+ x1 = m_aPosHelper.transformUnitCircleToScene(0, xl1, 0).PositionX;
+ y1 = m_aPosHelper.transformUnitCircleToScene(90, yl1, 0).PositionY;
+ y2 = m_aPosHelper.transformUnitCircleToScene(90, -yl0, 0).PositionY;
+ y3 = m_aPosHelper.transformUnitCircleToScene(90, -yl1, 0).PositionY;
+
+ std::vector<std::vector<css::drawing::Position3D>> linePts;
+ linePts.resize(2);
+ linePts[0].push_back(css::drawing::Position3D(x0, y0, aParam.mfLogicZ));
+ linePts[0].push_back(css::drawing::Position3D(x1, y1, aParam.mfLogicZ));
+ linePts[1].push_back(css::drawing::Position3D(x0, y2, aParam.mfLogicZ));
+ linePts[1].push_back(css::drawing::Position3D(x1, y3, aParam.mfLogicZ));
+
+ VLineProperties aVLineProperties; // default black
+
+ //create line
+ rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes =
+ getSeriesGroupShape(pSeries, xSeriesTarget);
+ rtl::Reference<SvxShape> xShape = ShapeFactory::createLine2D(
+ xSeriesGroupShape_Shapes, linePts, &aVLineProperties);
+
+ // need to set properties?
+ //PropertyMapper::setMappedProperties( *xShape, xObjectProperties,
+ // PropertyMapper::getPropertyNameMapForLineSeriesProperties() );
+
break;
+ }
case PieChartSubType_PIE:
pDataSrc = &ofPieSrc;
createOneRing(SubPieType::LEFT, 0, aParam, xSeriesTarget,