diff options
Diffstat (limited to 'chart2/source/model/template/BarChartTypeTemplate.cxx')
-rw-r--r-- | chart2/source/model/template/BarChartTypeTemplate.cxx | 171 |
1 files changed, 56 insertions, 115 deletions
diff --git a/chart2/source/model/template/BarChartTypeTemplate.cxx b/chart2/source/model/template/BarChartTypeTemplate.cxx index f4534a27071a..2b649ec43364 100644 --- a/chart2/source/model/template/BarChartTypeTemplate.cxx +++ b/chart2/source/model/template/BarChartTypeTemplate.cxx @@ -18,17 +18,16 @@ */ #include "BarChartTypeTemplate.hxx" -#include <DiagramHelper.hxx> -#include <servicenames_charttypes.hxx> +#include "ColumnChartType.hxx" +#include <Diagram.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <PropertyHelper.hxx> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/drawing/LineStyle.hpp> #include <com/sun/star/chart2/DataPointGeometry3D.hpp> -#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> #include <com/sun/star/uno/XComponentContext.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <algorithm> @@ -62,64 +61,19 @@ void lcl_AddPropertiesToVector( | beans::PropertyAttribute::MAYBEDEFAULT ); } -struct StaticBarChartTypeTemplateDefaults_Initializer +::cppu::OPropertyArrayHelper& StaticBarChartTypeTemplateInfoHelper() { - ::chart::tPropertyValueMap* operator()() - { - static ::chart::tPropertyValueMap aStaticDefaults; - lcl_AddDefaultsToMap( aStaticDefaults ); - return &aStaticDefaults; - } -private: - static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap ) - { - ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_BAR_TEMPLATE_DIMENSION, 2 ); - ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_BAR_TEMPLATE_GEOMETRY3D, ::chart2::DataPointGeometry3D::CUBOID ); - } -}; - -struct StaticBarChartTypeTemplateDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticBarChartTypeTemplateDefaults_Initializer > -{ -}; - -struct StaticBarChartTypeTemplateInfoHelper_Initializer -{ - ::cppu::OPropertyArrayHelper* operator()() - { - static ::cppu::OPropertyArrayHelper aPropHelper( lcl_GetPropertySequence() ); - return &aPropHelper; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } - -}; - -struct StaticBarChartTypeTemplateInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticBarChartTypeTemplateInfoHelper_Initializer > -{ -}; + static ::cppu::OPropertyArrayHelper aPropHelper = []() + { + std::vector< css::beans::Property > aProperties; + lcl_AddPropertiesToVector( aProperties ); -struct StaticBarChartTypeTemplateInfo_Initializer -{ - uno::Reference< beans::XPropertySetInfo >* operator()() - { - static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( - ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticBarChartTypeTemplateInfoHelper::get() ) ); - return &xPropertySetInfo; - } -}; + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); -struct StaticBarChartTypeTemplateInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticBarChartTypeTemplateInfo_Initializer > -{ + return comphelper::containerToSequence( aProperties ); + }(); + return aPropHelper; }; } // anonymous namespace @@ -135,7 +89,6 @@ BarChartTypeTemplate::BarChartTypeTemplate( BarDirection eDirection, sal_Int32 nDim /* = 2 */ ) : ChartTypeTemplate( xContext, rServiceName ), - ::property::OPropertySet( m_aMutex ), m_eStackMode( eStackMode ), m_eBarDirection( eDirection ), m_nDim( nDim ) @@ -159,19 +112,19 @@ bool BarChartTypeTemplate::isSwapXAndY() const return (m_eBarDirection == HORIZONTAL); } -// ____ XChartTypeTemplate ____ -sal_Bool SAL_CALL BarChartTypeTemplate::matchesTemplate( - const Reference< chart2::XDiagram >& xDiagram, - sal_Bool bAdaptProperties ) +// ____ ChartTypeTemplate ____ +bool BarChartTypeTemplate::matchesTemplate2( + const rtl::Reference< ::chart::Diagram >& xDiagram, + bool bAdaptProperties ) { - bool bResult = ChartTypeTemplate::matchesTemplate( xDiagram, bAdaptProperties ); + bool bResult = ChartTypeTemplate::matchesTemplate2( xDiagram, bAdaptProperties ); //check BarDirection if( bResult ) { bool bFound = false; bool bAmbiguous = false; - bool bVertical = DiagramHelper::getVertical( xDiagram, bFound, bAmbiguous ); + bool bVertical = xDiagram->getVertical( bFound, bAmbiguous ); if( m_eBarDirection == HORIZONTAL ) bResult = bVertical; else if( m_eBarDirection == VERTICAL ) @@ -185,7 +138,7 @@ sal_Bool SAL_CALL BarChartTypeTemplate::matchesTemplate( { bool bGeomFound = false, bGeomAmbiguous = false; - sal_Int32 aCommonGeom = DiagramHelper::getGeometry3D( xDiagram, bGeomFound, bGeomAmbiguous ); + sal_Int32 aCommonGeom = xDiagram->getGeometry3D( bGeomFound, bGeomAmbiguous ); if( !bGeomAmbiguous ) { @@ -196,29 +149,16 @@ sal_Bool SAL_CALL BarChartTypeTemplate::matchesTemplate( return bResult; } -Reference< chart2::XChartType > BarChartTypeTemplate::getChartTypeForIndex( sal_Int32 /*nChartTypeIndex*/ ) -{ - Reference< chart2::XChartType > xResult; - - try - { - Reference< lang::XMultiServiceFactory > xFact( - GetComponentContext()->getServiceManager(), uno::UNO_QUERY_THROW ); - xResult.set( xFact->createInstance( - CHART2_SERVICE_NAME_CHARTTYPE_COLUMN ), uno::UNO_QUERY_THROW ); - } - catch( const uno::Exception & ) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } - return xResult; +rtl::Reference< ChartType > BarChartTypeTemplate::getChartTypeForIndex( sal_Int32 /*nChartTypeIndex*/ ) +{ + return new ColumnChartType(); } -Reference< chart2::XChartType > SAL_CALL BarChartTypeTemplate::getChartTypeForNewSeries( - const uno::Sequence< Reference< chart2::XChartType > >& aFormerlyUsedChartTypes ) +rtl::Reference< ChartType > BarChartTypeTemplate::getChartTypeForNewSeries2( + const std::vector< rtl::Reference< ChartType > >& aFormerlyUsedChartTypes ) { - Reference< chart2::XChartType > xResult( getChartTypeForIndex( 0 ) ); + rtl::Reference< ChartType > xResult( getChartTypeForIndex( 0 ) ); ChartTypeTemplate::copyPropertiesFromOldToNewCoordinateSystem( aFormerlyUsedChartTypes, xResult ); return xResult; } @@ -226,9 +166,15 @@ Reference< chart2::XChartType > SAL_CALL BarChartTypeTemplate::getChartTypeForNe // ____ OPropertySet ____ void BarChartTypeTemplate::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const { - const tPropertyValueMap& rStaticDefaults = *StaticBarChartTypeTemplateDefaults::get(); - tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) ); - if( aFound == rStaticDefaults.end() ) + static ::chart::tPropertyValueMap aStaticDefaults = []() + { + ::chart::tPropertyValueMap aTmp; + ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aTmp, PROP_BAR_TEMPLATE_DIMENSION, 2 ); + ::chart::PropertyHelper::setPropertyValueDefault( aTmp, PROP_BAR_TEMPLATE_GEOMETRY3D, ::chart2::DataPointGeometry3D::CUBOID ); + return aTmp; + }(); + tPropertyValueMap::const_iterator aFound( aStaticDefaults.find( nHandle ) ); + if( aFound == aStaticDefaults.end() ) rAny.clear(); else rAny = (*aFound).second; @@ -236,22 +182,24 @@ void BarChartTypeTemplate::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) ::cppu::IPropertyArrayHelper & SAL_CALL BarChartTypeTemplate::getInfoHelper() { - return *StaticBarChartTypeTemplateInfoHelper::get(); + return StaticBarChartTypeTemplateInfoHelper(); } // ____ XPropertySet ____ Reference< beans::XPropertySetInfo > SAL_CALL BarChartTypeTemplate::getPropertySetInfo() { - return *StaticBarChartTypeTemplateInfo::get(); + static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( + ::cppu::OPropertySetHelper::createPropertySetInfo(StaticBarChartTypeTemplateInfoHelper() ) ); + return xPropertySetInfo; } -void SAL_CALL BarChartTypeTemplate::applyStyle( - const Reference< chart2::XDataSeries >& xSeries, +void BarChartTypeTemplate::applyStyle2( + const rtl::Reference< DataSeries >& xSeries, ::sal_Int32 nChartTypeIndex, ::sal_Int32 nSeriesIndex, ::sal_Int32 nSeriesCount ) { - ChartTypeTemplate::applyStyle( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount ); + ChartTypeTemplate::applyStyle2( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount ); DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, "BorderStyle", uno::Any( drawing::LineStyle_NONE ) ); if( getDimension() != 3 ) return; @@ -269,39 +217,32 @@ void SAL_CALL BarChartTypeTemplate::applyStyle( } } -void SAL_CALL BarChartTypeTemplate::resetStyles( - const Reference< chart2::XDiagram >& xDiagram ) +void BarChartTypeTemplate::resetStyles2( + const rtl::Reference< ::chart::Diagram >& xDiagram ) { - ChartTypeTemplate::resetStyles( xDiagram ); - std::vector< Reference< chart2::XDataSeries > > aSeriesVec( - DiagramHelper::getDataSeriesFromDiagram( xDiagram )); + ChartTypeTemplate::resetStyles2( xDiagram ); + std::vector< rtl::Reference< DataSeries > > aSeriesVec( + xDiagram->getDataSeries()); uno::Any aLineStyleAny( drawing::LineStyle_NONE ); for (auto const& series : aSeriesVec) { - Reference< beans::XPropertyState > xState(series, uno::UNO_QUERY); - if( xState.is()) + if( getDimension() == 3 ) + series->setPropertyToDefault( "Geometry3D"); + if( series->getPropertyValue( "BorderStyle") == aLineStyleAny ) { - if( getDimension() == 3 ) - xState->setPropertyToDefault( "Geometry3D"); - Reference< beans::XPropertySet > xProp( xState, uno::UNO_QUERY ); - if( xProp.is() && - xProp->getPropertyValue( "BorderStyle") == aLineStyleAny ) - { - xState->setPropertyToDefault( "BorderStyle"); - } + series->setPropertyToDefault( "BorderStyle"); } } - DiagramHelper::setVertical( xDiagram, false ); + xDiagram->setVertical( false ); } void BarChartTypeTemplate::createCoordinateSystems( - const Reference< chart2::XCoordinateSystemContainer > & xCooSysCnt ) + const rtl::Reference< ::chart::Diagram > & xDiagram ) { - ChartTypeTemplate::createCoordinateSystems( xCooSysCnt ); + ChartTypeTemplate::createCoordinateSystems( xDiagram ); - Reference< chart2::XDiagram > xDiagram( xCooSysCnt, uno::UNO_QUERY ); - DiagramHelper::setVertical( xDiagram, m_eBarDirection == HORIZONTAL ); + xDiagram->setVertical( m_eBarDirection == HORIZONTAL ); } IMPLEMENT_FORWARD_XINTERFACE2( BarChartTypeTemplate, ChartTypeTemplate, OPropertySet ) |