diff options
author | Kurt Nordback <kurt.nordback@protonmail.com> | 2023-11-16 17:09:11 -0700 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2024-02-17 07:08:20 +0100 |
commit | 4df39957bd985af591f452439c8aa5fc5c7a0d62 (patch) | |
tree | 8e2995b20e01e736990f9e1b1a021dcd29d479c1 /chart2/source/view/charttypes | |
parent | tdf#50934: Initial implementation of connector lines for bar-of-pie (diff) | |
download | core-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.cxx | 46 |
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, |