tdf#50934: Add a version comment, and more structure for of-pie

Change-Id: I9d7c25e47a3f4a78360f9b2deffe8650e378866d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156305
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
Kurt Nordback
2024-02-06 15:16:31 +01:00
committed by Noel Grandin
parent 23293fc6a7
commit 15633d637e
6 changed files with 34 additions and 9 deletions
@@ -78,7 +78,7 @@ ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogControlle
m_xSubTypeList->SetStyle(m_xSubTypeList->GetStyle() |
WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD | WB_FLATVALUESET | WB_3DLOOK );
m_xSubTypeList->SetColCount(4);
m_xSubTypeList->SetColCount(6);
m_xSubTypeList->SetLineCount(1);
bool bEnableComplexChartTypes = true;
@@ -405,13 +405,11 @@ rtl::Reference< ::chart::ChartTypeTemplate > ChartTypeManager::createTemplate(
break;
case TEMPLATE_BAROFPIE:
xTemplate.set( new PieChartTypeTemplate( m_xContext, aServiceSpecifier,
chart2::PieChartOffsetMode_ALL_EXPLODED, true,
chart2::PieChartSubType_BAR ));
chart2::PieChartOffsetMode_NONE, false, chart2::PieChartSubType_BAR ));
break;
case TEMPLATE_PIEOFPIE:
xTemplate.set( new PieChartTypeTemplate( m_xContext, aServiceSpecifier,
chart2::PieChartOffsetMode_ALL_EXPLODED, true,
chart2::PieChartSubType_PIE ));
chart2::PieChartOffsetMode_NONE, false, chart2::PieChartSubType_PIE ));
break;
case TEMPLATE_THREEDPIE:
xTemplate.set( new PieChartTypeTemplate( m_xContext, aServiceSpecifier,
@@ -266,6 +266,8 @@ void PieChartTypeTemplate::createChartTypes(
rtl::Reference< ChartType > xCT = new PieChartType();
xCT->setFastPropertyValue(
PROP_PIECHARTTYPE_USE_RINGS, getFastPropertyValue( PROP_PIE_TEMPLATE_USE_RINGS )); // "UseRings"
xCT->setFastPropertyValue(
PROP_PIECHARTTYPE_SUBTYPE, getFastPropertyValue( PROP_PIE_TEMPLATE_SUB_PIE_TYPE )); // "SubType"
rCoordSys[0]->setChartTypes( std::vector{xCT} );
if( !aSeriesSeq.empty() )
@@ -294,10 +296,8 @@ bool PieChartTypeTemplate::matchesTemplate2(
getFastPropertyValue( PROP_PIE_TEMPLATE_USE_RINGS ) >>= bTemplateUsesRings;
chart2::PieChartOffsetMode ePieOffsetMode;
getFastPropertyValue( PROP_PIE_TEMPLATE_OFFSET_MODE ) >>= ePieOffsetMode;
/*
chart2::PieChartSubType ePieSubType;
getFastPropertyValue( PROP_PIE_TEMPLATE_SUB_PIE_TYPE ) >>= ePieSubType;
*/
chart2::PieChartSubType eTemplateSubType;
getFastPropertyValue( PROP_PIE_TEMPLATE_SUB_PIE_TYPE ) >>= eTemplateSubType;
//check offset-mode
if( bResult )
@@ -372,6 +372,15 @@ bool PieChartTypeTemplate::matchesTemplate2(
bResult = ( bTemplateUsesRings == bUseRings );
}
}
if( bResult )
{
rtl::Reference< ChartType > xCTProp = xDiagram->getChartTypeByIndex( 0 );
chart2::PieChartSubType eSubType = chart2::PieChartSubType_NONE;
if( xCTProp->getFastPropertyValue( PROP_PIECHARTTYPE_SUBTYPE ) >>= eSubType )
{
bResult = ( eTemplateSubType == eSubType );
}
}
return bResult;
}
@@ -185,6 +185,7 @@ PieChart::PieChart( const rtl::Reference<ChartType>& xChartTypeModel
, m_aPosHelper( (m_nDimension==3) ? 0.0 : 90.0 )
, m_bUseRings(false)
, m_bSizeExcludesLabelsAndExplodedSegments(bExcludingPositioning)
, m_eSubType(PieChartSubType_NONE)
, m_fMaxOffset(std::numeric_limits<double>::quiet_NaN())
{
PlotterBase::m_pPosHelper = &m_aPosHelper;
@@ -209,6 +210,14 @@ PieChart::PieChart( const rtl::Reference<ChartType>& xChartTypeModel
{
TOOLS_WARN_EXCEPTION("chart2", "" );
}
try
{
xChartTypeModel->getFastPropertyValue(PROP_PIECHARTTYPE_SUBTYPE) >>= m_eSubType; // "SubType"
}
catch( const uno::Exception& )
{
TOOLS_WARN_EXCEPTION("chart2", "" );
}
}
PieChart::~PieChart()
@@ -277,8 +286,14 @@ rtl::Reference<SvxShape> PieChart::createDataPoint(
drawing::Position3D aNewOrigin = m_aPosHelper.transformUnitCircleToScene(fAngle, fRadius, rParam.mfLogicZ);
aOffset = aNewOrigin - aOrigin;
}
} else if (m_eSubType != PieChartSubType_NONE) {
drawing::Position3D aOrigin = m_aPosHelper.transformUnitCircleToScene(0, 0, rParam.mfLogicZ);
drawing::Position3D aNewOrigin = m_aPosHelper.transformUnitCircleToScene(180, 1.0, rParam.mfLogicZ);
aOffset = aNewOrigin - aOrigin;
fExplodedOuterRadius *= 2.0/3;
}
//create point
rtl::Reference<SvxShape> xShape;
if(m_nDimension==3)
@@ -24,6 +24,7 @@
#include <PlottingPositionHelper.hxx>
#include <basegfx/vector/b2ivector.hxx>
#include <com/sun/star/awt/Point.hpp>
#include <com/sun/star/chart2/PieChartSubType.hpp>
namespace chart
{
@@ -125,6 +126,7 @@ private: //member
PiePositionHelper m_aPosHelper;
bool m_bUseRings;
bool m_bSizeExcludesLabelsAndExplodedSegments;
::css::chart2::PieChartSubType m_eSubType;
struct PieLabelInfo
{
@@ -28,6 +28,7 @@ module chart2
/** Mode used for a pie chart template to determine the initial state
of exploded pies.
@since LibreOffice 24.8
*/
enum PieChartSubType
{