summaryrefslogtreecommitdiffstats
path: root/chart2/source/tools/RegressionCurveHelper.cxx
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2007-11-23 11:07:29 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2007-11-23 11:07:29 +0000
commit729b1162717ddf8eb1750ff140a2ac9e72e20023 (patch)
treee5d405fd6c7c93ae097c679e44b731b0547f6482 /chart2/source/tools/RegressionCurveHelper.cxx
parentINTEGRATION: CWS chart17 (1.1.2); FILE ADDED (diff)
downloadcore-729b1162717ddf8eb1750ff140a2ac9e72e20023.tar.gz
core-729b1162717ddf8eb1750ff140a2ac9e72e20023.zip
INTEGRATION: CWS chart17 (1.11.32); FILE MERGED
2007/10/25 12:51:42 bm 1.11.32.2: #i7998# added helpers for resetting trendline equation positions of all equations when doing new arrangement 2007/10/12 12:35:09 bm 1.11.32.1: #i7998# equations for regression curves
Diffstat (limited to 'chart2/source/tools/RegressionCurveHelper.cxx')
-rw-r--r--chart2/source/tools/RegressionCurveHelper.cxx143
1 files changed, 113 insertions, 30 deletions
diff --git a/chart2/source/tools/RegressionCurveHelper.cxx b/chart2/source/tools/RegressionCurveHelper.cxx
index 8feabaa3ea58..4b28b87da322 100644
--- a/chart2/source/tools/RegressionCurveHelper.cxx
+++ b/chart2/source/tools/RegressionCurveHelper.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: RegressionCurveHelper.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: rt $ $Date: 2007-07-25 09:00:04 $
+ * last change: $Author: ihi $ $Date: 2007-11-23 12:07:29 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -49,16 +49,12 @@
#include "PropertyHelper.hxx"
#include "ResId.hxx"
#include "Strings.hrc"
+#include "DiagramHelper.hxx"
#ifndef _COM_SUN_STAR_CHART2_XCHARTDOCUMENT_HPP_
#include <com/sun/star/chart2/XChartDocument.hpp>
#endif
-//.............................................................................
-namespace chart
-{
-//.............................................................................
-
using namespace ::com::sun::star;
using namespace ::com::sun::star::chart2;
@@ -70,6 +66,39 @@ using ::com::sun::star::beans::XPropertySet;
using ::com::sun::star::uno::Exception;
using ::rtl::OUString;
+namespace
+{
+OUString lcl_getServiceNameForType( ::chart::RegressionCurveHelper::tRegressionType eType )
+{
+ OUString aServiceName;
+ switch( eType )
+ {
+ case ::chart::RegressionCurveHelper::REGRESSION_TYPE_LINEAR:
+ aServiceName = C2U( "com.sun.star.chart2.LinearRegressionCurve" );
+ break;
+ case ::chart::RegressionCurveHelper::REGRESSION_TYPE_LOG:
+ aServiceName = C2U( "com.sun.star.chart2.LogarithmicRegressionCurve" );
+ break;
+ case ::chart::RegressionCurveHelper::REGRESSION_TYPE_EXP:
+ aServiceName = C2U( "com.sun.star.chart2.ExponentialRegressionCurve" );
+ break;
+ case ::chart::RegressionCurveHelper::REGRESSION_TYPE_POWER:
+ aServiceName = C2U( "com.sun.star.chart2.PotentialRegressionCurve" );
+ break;
+ default:
+ OSL_ENSURE(false,"unknown regression curve type - use linear instead");
+ aServiceName = C2U( "com.sun.star.chart2.LinearRegressionCurve" );
+ break;
+ }
+ return aServiceName;
+}
+} // anonymous namespace
+
+//.............................................................................
+namespace chart
+{
+//.............................................................................
+
// static
Reference< XRegressionCurve > RegressionCurveHelper::createMeanValueLine(
const Reference< XComponentContext > & xContext )
@@ -361,7 +390,8 @@ void RegressionCurveHelper::addRegressionCurve(
tRegressionType eType,
uno::Reference< XRegressionCurveContainer > & xRegCnt,
const uno::Reference< XComponentContext > & /* xContext */,
- const uno::Reference< beans::XPropertySet >& xPropertySource )
+ const uno::Reference< beans::XPropertySet >& xPropertySource,
+ const uno::Reference< beans::XPropertySet >& xEquationProperties )
{
if( !xRegCnt.is() )
return;
@@ -373,27 +403,7 @@ void RegressionCurveHelper::addRegressionCurve(
}
uno::Reference< chart2::XRegressionCurve > xCurve;
- ::rtl::OUString aServiceName;
-
- switch( eType )
- {
- case REGRESSION_TYPE_LINEAR:
- aServiceName = C2U( "com.sun.star.chart2.LinearRegressionCurve" );
- break;
- case REGRESSION_TYPE_LOG:
- aServiceName = C2U( "com.sun.star.chart2.LogarithmicRegressionCurve" );
- break;
- case REGRESSION_TYPE_EXP:
- aServiceName = C2U( "com.sun.star.chart2.ExponentialRegressionCurve" );
- break;
- case REGRESSION_TYPE_POWER:
- aServiceName = C2U( "com.sun.star.chart2.PotentialRegressionCurve" );
- break;
- default:
- OSL_ENSURE(false,"unknown regression curve type - use linear instead");
- aServiceName = C2U( "com.sun.star.chart2.LinearRegressionCurve" );
- break;
- }
+ ::rtl::OUString aServiceName( lcl_getServiceNameForType( eType ));
if( aServiceName.getLength())
{
@@ -401,6 +411,9 @@ void RegressionCurveHelper::addRegressionCurve(
xCurve.set( createRegressionCurveByServiceName(
uno::Reference< uno::XComponentContext >(), aServiceName ));
+ if( xEquationProperties.is())
+ xCurve->setEquationProperties( xEquationProperties );
+
uno::Reference< beans::XPropertySet > xProp( xCurve, uno::UNO_QUERY );
if( xProp.is())
{
@@ -414,7 +427,7 @@ void RegressionCurveHelper::addRegressionCurve(
xProp->setPropertyValue( C2U( "LineColor" ),
xSeriesProp->getPropertyValue( C2U( "Color" )));
}
- xProp->setPropertyValue( C2U( "LineWidth" ), uno::makeAny( sal_Int32( 100 )));
+// xProp->setPropertyValue( C2U( "LineWidth" ), uno::makeAny( sal_Int32( 100 )));
}
}
}
@@ -459,6 +472,29 @@ bool RegressionCurveHelper::removeAllExceptMeanValueLine(
}
// static
+void RegressionCurveHelper::replaceOrAddCurveAndReduceToOne(
+ tRegressionType eType,
+ uno::Reference< XRegressionCurveContainer > & xRegCnt,
+ const uno::Reference< XComponentContext > & xContext )
+{
+ uno::Reference< chart2::XRegressionCurve > xRegressionCurve( getFirstCurveNotMeanValueLine( xRegCnt ));
+ if( ! xRegressionCurve.is())
+ RegressionCurveHelper::addRegressionCurve( eType, xRegCnt, xContext );
+ else
+ {
+ OUString aServiceName( lcl_getServiceNameForType( eType ));
+ if( aServiceName.getLength())
+ {
+ RegressionCurveHelper::removeAllExceptMeanValueLine( xRegCnt );
+ RegressionCurveHelper::addRegressionCurve(
+ eType, xRegCnt, xContext,
+ Reference< beans::XPropertySet >( xRegressionCurve, uno::UNO_QUERY ),
+ xRegressionCurve->getEquationProperties());
+ }
+ }
+}
+
+// static
uno::Reference< chart2::XRegressionCurve > RegressionCurveHelper::getFirstCurveNotMeanValueLine(
const Reference< XRegressionCurveContainer > & xRegCnt )
{
@@ -582,6 +618,53 @@ OUString RegressionCurveHelper::getUINameForRegressionCurve( const Reference< XR
return aResult;
}
+// static
+::std::vector< Reference< chart2::XRegressionCurve > >
+ RegressionCurveHelper::getAllRegressionCurvesNotMeanValueLine(
+ const Reference< chart2::XDiagram > & xDiagram )
+{
+ ::std::vector< Reference< chart2::XRegressionCurve > > aResult;
+ ::std::vector< Reference< chart2::XDataSeries > > aSeries( DiagramHelper::getDataSeriesFromDiagram( xDiagram ));
+ for( ::std::vector< Reference< chart2::XDataSeries > >::iterator aIt( aSeries.begin());
+ aIt != aSeries.end(); ++aIt )
+ {
+ Reference< chart2::XRegressionCurveContainer > xCurveCnt( *aIt, uno::UNO_QUERY );
+ if( xCurveCnt.is())
+ {
+ uno::Sequence< uno::Reference< chart2::XRegressionCurve > > aCurves(
+ xCurveCnt->getRegressionCurves());
+ for( sal_Int32 i = 0; i < aCurves.getLength(); ++i )
+ {
+ if( ! isMeanValueLine( aCurves[i] ))
+ aResult.push_back( aCurves[i] );
+ }
+ }
+ }
+
+ return aResult;
+}
+
+// static
+void RegressionCurveHelper::resetEquationPosition(
+ const Reference< chart2::XRegressionCurve > & xCurve )
+{
+ if( xCurve.is())
+ {
+ try
+ {
+ const OUString aPosPropertyName( RTL_CONSTASCII_USTRINGPARAM( "RelativePosition" ));
+ Reference< beans::XPropertySet > xEqProp( xCurve->getEquationProperties()); // since m233: , uno::UNO_SET_THROW );
+ if( xEqProp->getPropertyValue( aPosPropertyName ).hasValue())
+ xEqProp->setPropertyValue( aPosPropertyName, uno::Any());
+ }
+ catch( const uno::Exception & ex )
+ {
+ ASSERT_EXCEPTION( ex );
+ }
+ }
+}
+
+
//.............................................................................
} //namespace chart
//.............................................................................