diff options
Diffstat (limited to 'chart2/source/model/template/ScatterChartTypeTemplate.cxx')
-rw-r--r-- | chart2/source/model/template/ScatterChartTypeTemplate.cxx | 430 |
1 files changed, 0 insertions, 430 deletions
diff --git a/chart2/source/model/template/ScatterChartTypeTemplate.cxx b/chart2/source/model/template/ScatterChartTypeTemplate.cxx deleted file mode 100644 index 729290254..000000000 --- a/chart2/source/model/template/ScatterChartTypeTemplate.cxx +++ /dev/null @@ -1,430 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_chart2.hxx" -#include "ScatterChartTypeTemplate.hxx" -#include "macros.hxx" -#include "XYDataInterpreter.hxx" -#include "CartesianCoordinateSystem.hxx" -#include "DiagramHelper.hxx" -#include "servicenames_charttypes.hxx" -#include "ContainerHelper.hxx" -#include "DataSeriesHelper.hxx" -#include <com/sun/star/chart2/SymbolStyle.hpp> -#include <com/sun/star/chart2/Symbol.hpp> -#include <com/sun/star/drawing/LineStyle.hpp> -#include "PropertyHelper.hxx" -#include <com/sun/star/beans/PropertyAttribute.hpp> - -#include <algorithm> - -using namespace ::com::sun::star; - -using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::Sequence; -using ::rtl::OUString; -using ::com::sun::star::beans::Property; -using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::Any; -using ::osl::MutexGuard; - -namespace -{ - -static const OUString lcl_aServiceName( - RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.chart2.ScatterChartTypeTemplate" )); - -enum -{ - PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_STYLE, - PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_RESOLUTION, - PROP_SCATTERCHARTTYPE_TEMPLATE_SPLINE_ORDER - -}; - -void lcl_AddPropertiesToVector( - ::std::vector< Property > & rOutProperties ) -{ - rOutProperties.push_back( - Property( C2U( "CurveStyle" ), - PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_STYLE, - ::getCppuType( reinterpret_cast< const chart2::CurveStyle * >(0)), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT )); - rOutProperties.push_back( - Property( C2U( "CurveResolution" ), - PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_RESOLUTION, - ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT )); - rOutProperties.push_back( - Property( C2U( "SplineOrder" ), - PROP_SCATTERCHARTTYPE_TEMPLATE_SPLINE_ORDER, - ::getCppuType( reinterpret_cast< const sal_Int32 * >(0)), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT )); -} - -struct StaticScatterChartTypeTemplateDefaults_Initializer -{ - ::chart::tPropertyValueMap* operator()() - { - static ::chart::tPropertyValueMap aStaticDefaults; - lcl_AddDefaultsToMap( aStaticDefaults ); - return &aStaticDefaults; - } -private: - void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap ) - { - ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_STYLE, chart2::CurveStyle_LINES ); - ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_RESOLUTION, 20 ); - - // todo: check whether order 3 means polygons of order 3 or 2. (see - // http://www.people.nnov.ru/fractal/Splines/Basis.htm ) - ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_SCATTERCHARTTYPE_TEMPLATE_SPLINE_ORDER, 3 ); - } -}; - -struct StaticScatterChartTypeTemplateDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticScatterChartTypeTemplateDefaults_Initializer > -{ -}; - -struct StaticScatterChartTypeTemplateInfoHelper_Initializer -{ - ::cppu::OPropertyArrayHelper* operator()() - { - static ::cppu::OPropertyArrayHelper aPropHelper( lcl_GetPropertySequence() ); - return &aPropHelper; - } - -private: - Sequence< Property > lcl_GetPropertySequence() - { - ::std::vector< ::com::sun::star::beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - - ::std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return ::chart::ContainerHelper::ContainerToSequence( aProperties ); - } - -}; - -struct StaticScatterChartTypeTemplateInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticScatterChartTypeTemplateInfoHelper_Initializer > -{ -}; - -struct StaticScatterChartTypeTemplateInfo_Initializer -{ - uno::Reference< beans::XPropertySetInfo >* operator()() - { - static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( - ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticScatterChartTypeTemplateInfoHelper::get() ) ); - return &xPropertySetInfo; - } -}; - -struct StaticScatterChartTypeTemplateInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticScatterChartTypeTemplateInfo_Initializer > -{ -}; - -} // anonymous namespace - -namespace chart -{ - -ScatterChartTypeTemplate::ScatterChartTypeTemplate( - Reference< - uno::XComponentContext > const & xContext, - const OUString & rServiceName, - bool bSymbols, - bool bHasLines /* = true */, - sal_Int32 nDim /* = 2 */ ) : - ChartTypeTemplate( xContext, rServiceName ), - ::property::OPropertySet( m_aMutex ), - m_bHasSymbols( bSymbols ), - m_bHasLines( bHasLines ), - m_nDim( nDim ) -{ - if( nDim == 3 ) - m_bHasSymbols = false; -} - -ScatterChartTypeTemplate::~ScatterChartTypeTemplate() -{} - -// ____ OPropertySet ____ -uno::Any ScatterChartTypeTemplate::GetDefaultValue( sal_Int32 nHandle ) const - throw(beans::UnknownPropertyException) -{ - const tPropertyValueMap& rStaticDefaults = *StaticScatterChartTypeTemplateDefaults::get(); - tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) ); - if( aFound == rStaticDefaults.end() ) - return uno::Any(); - return (*aFound).second; -} - -::cppu::IPropertyArrayHelper & SAL_CALL ScatterChartTypeTemplate::getInfoHelper() -{ - return *StaticScatterChartTypeTemplateInfoHelper::get(); -} - -// ____ XPropertySet ____ -uno::Reference< beans::XPropertySetInfo > SAL_CALL ScatterChartTypeTemplate::getPropertySetInfo() - throw (uno::RuntimeException) -{ - return *StaticScatterChartTypeTemplateInfo::get(); -} - -sal_Int32 ScatterChartTypeTemplate::getDimension() const -{ - return m_nDim; -} - -StackMode ScatterChartTypeTemplate::getStackMode( sal_Int32 /* nChartTypeIndex */ ) const -{ - if( m_nDim == 3 ) - return StackMode_Z_STACKED; - return StackMode_NONE; -} - -void SAL_CALL ScatterChartTypeTemplate::applyStyle( - const Reference< chart2::XDataSeries >& xSeries, - ::sal_Int32 nChartTypeIndex, - ::sal_Int32 nSeriesIndex, - ::sal_Int32 nSeriesCount ) - throw (uno::RuntimeException) -{ - ChartTypeTemplate::applyStyle( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount ); - - try - { - Reference< beans::XPropertySet > xProp( xSeries, uno::UNO_QUERY_THROW ); - - DataSeriesHelper::switchSymbolsOnOrOff( xProp, m_bHasSymbols, nSeriesIndex ); - DataSeriesHelper::switchLinesOnOrOff( xProp, m_bHasLines ); - DataSeriesHelper::makeLinesThickOrThin( xProp, m_nDim==2 ); - if( m_nDim==3 ) - DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) ); - } - catch( uno::Exception & ex ) - { - ASSERT_EXCEPTION( ex ); - } -} - -// ____ XChartTypeTemplate ____ -sal_Bool SAL_CALL ScatterChartTypeTemplate::supportsCategories() - throw (uno::RuntimeException) -{ - return sal_False; -} - -sal_Bool SAL_CALL ScatterChartTypeTemplate::matchesTemplate( - const Reference< chart2::XDiagram >& xDiagram, - sal_Bool bAdaptProperties ) - throw (uno::RuntimeException) -{ - sal_Bool bResult = ChartTypeTemplate::matchesTemplate( xDiagram, bAdaptProperties ); - - // check symbol-style and line-style - // for a template with symbols (or with lines) it is ok, if there is at least one series - // with symbols (or with lines) - if( bResult ) - { - bool bSymbolFound = false; - bool bLineFound = false; - - ::std::vector< Reference< chart2::XDataSeries > > aSeriesVec( - DiagramHelper::getDataSeriesFromDiagram( xDiagram )); - - for( ::std::vector< Reference< chart2::XDataSeries > >::const_iterator aIt = - aSeriesVec.begin(); aIt != aSeriesVec.end(); ++aIt ) - { - try - { - chart2::Symbol aSymbProp; - drawing::LineStyle eLineStyle; - Reference< beans::XPropertySet > xProp( *aIt, uno::UNO_QUERY_THROW ); - - bool bCurrentHasSymbol = (xProp->getPropertyValue( C2U( "Symbol" )) >>= aSymbProp) && - (aSymbProp.Style != chart2::SymbolStyle_NONE); - - if( bCurrentHasSymbol ) - bSymbolFound = true; - - if( bCurrentHasSymbol && (!m_bHasSymbols) ) - { - bResult = false; - break; - } - - bool bCurrentHasLine = (xProp->getPropertyValue( C2U( "LineStyle" )) >>= eLineStyle) && - ( eLineStyle != drawing::LineStyle_NONE ); - - if( bCurrentHasLine ) - bLineFound = true; - - if( bCurrentHasLine && (!m_bHasLines) ) - { - bResult = false; - break; - } - } - catch( uno::Exception & ex ) - { - ASSERT_EXCEPTION( ex ); - } - } - - if(bResult) - { - if( !bLineFound && m_bHasLines && bSymbolFound ) - bResult = false; - else if( !bSymbolFound && m_bHasSymbols && bLineFound ) - bResult = false; - else if( !bLineFound && !bSymbolFound ) - return m_bHasLines && m_bHasSymbols; - } - } - - // adapt curve style, spline order and resolution - if( bResult && bAdaptProperties ) - { - try - { - uno::Reference< beans::XPropertySet > xChartTypeProp( - DiagramHelper::getChartTypeByIndex( xDiagram, 0 ), - uno::UNO_QUERY_THROW ); - setFastPropertyValue_NoBroadcast( PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_STYLE, xChartTypeProp->getPropertyValue(C2U("CurveStyle" )) ); - setFastPropertyValue_NoBroadcast( PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_RESOLUTION, xChartTypeProp->getPropertyValue(C2U("CurveResolution" )) ); - setFastPropertyValue_NoBroadcast( PROP_SCATTERCHARTTYPE_TEMPLATE_SPLINE_ORDER, xChartTypeProp->getPropertyValue(C2U("SplineOrder" )) ); - } - catch( uno::Exception & ex ) - { - ASSERT_EXCEPTION( ex ); - } - } - - return bResult; -} - -Reference< chart2::XChartType > ScatterChartTypeTemplate::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_SCATTER ), uno::UNO_QUERY_THROW ); - - Reference< beans::XPropertySet > xCTProp( xResult, uno::UNO_QUERY ); - if( xCTProp.is()) - { - xCTProp->setPropertyValue( - C2U( "CurveStyle" ), getFastPropertyValue( PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_STYLE )); - xCTProp->setPropertyValue( - C2U( "CurveResolution" ), getFastPropertyValue( PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_RESOLUTION )); - xCTProp->setPropertyValue( - C2U( "SplineOrder" ), getFastPropertyValue( PROP_SCATTERCHARTTYPE_TEMPLATE_SPLINE_ORDER )); - } - } - catch( uno::Exception & ex ) - { - ASSERT_EXCEPTION( ex ); - } - - return xResult; -} - -Reference< chart2::XChartType > SAL_CALL ScatterChartTypeTemplate::getChartTypeForNewSeries( - const uno::Sequence< Reference< chart2::XChartType > >& aFormerlyUsedChartTypes ) - throw (uno::RuntimeException) -{ - Reference< chart2::XChartType > xResult; - - try - { - Reference< lang::XMultiServiceFactory > xFact( - GetComponentContext()->getServiceManager(), uno::UNO_QUERY_THROW ); - xResult.set( xFact->createInstance( - CHART2_SERVICE_NAME_CHARTTYPE_SCATTER ), uno::UNO_QUERY_THROW ); - - ChartTypeTemplate::copyPropertiesFromOldToNewCoordianteSystem( aFormerlyUsedChartTypes, xResult ); - - Reference< beans::XPropertySet > xCTProp( xResult, uno::UNO_QUERY ); - if( xCTProp.is()) - { - xCTProp->setPropertyValue( - C2U( "CurveStyle" ), getFastPropertyValue( PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_STYLE )); - xCTProp->setPropertyValue( - C2U( "CurveResolution" ), getFastPropertyValue( PROP_SCATTERCHARTTYPE_TEMPLATE_CURVE_RESOLUTION )); - xCTProp->setPropertyValue( - C2U( "SplineOrder" ), getFastPropertyValue( PROP_SCATTERCHARTTYPE_TEMPLATE_SPLINE_ORDER )); - } - } - catch( uno::Exception & ex ) - { - ASSERT_EXCEPTION( ex ); - } - - return xResult; -} - -Reference< chart2::XDataInterpreter > SAL_CALL ScatterChartTypeTemplate::getDataInterpreter() - throw (uno::RuntimeException) -{ - if( ! m_xDataInterpreter.is()) - m_xDataInterpreter.set( new XYDataInterpreter( GetComponentContext()) ); - - return m_xDataInterpreter; -} - -// ---------------------------------------- - -Sequence< OUString > ScatterChartTypeTemplate::getSupportedServiceNames_Static() -{ - Sequence< OUString > aServices( 2 ); - aServices[ 0 ] = lcl_aServiceName; - aServices[ 1 ] = C2U( "com.sun.star.chart2.ChartTypeTemplate" ); - return aServices; -} - -// implement XServiceInfo methods basing upon getSupportedServiceNames_Static -APPHELPER_XSERVICEINFO_IMPL( ScatterChartTypeTemplate, lcl_aServiceName ); - -IMPLEMENT_FORWARD_XINTERFACE2( ScatterChartTypeTemplate, ChartTypeTemplate, OPropertySet ) -IMPLEMENT_FORWARD_XTYPEPROVIDER2( ScatterChartTypeTemplate, ChartTypeTemplate, OPropertySet ) - -} // namespace chart - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |