1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "RegressionCurveHelper.hxx"
21 #include "MeanValueRegressionCurveCalculator.hxx"
22 #include "LinearRegressionCurveCalculator.hxx"
23 #include "PolynomialRegressionCurveCalculator.hxx"
24 #include "MovingAverageRegressionCurveCalculator.hxx"
25 #include "LogarithmicRegressionCurveCalculator.hxx"
26 #include "ExponentialRegressionCurveCalculator.hxx"
27 #include "PotentialRegressionCurveCalculator.hxx"
28 #include "CommonConverters.hxx"
29 #include "RegressionCurveModel.hxx"
30 #include "ChartTypeHelper.hxx"
31 #include "ChartModelHelper.hxx"
33 #include "PropertyHelper.hxx"
35 #include "Strings.hrc"
36 #include "DiagramHelper.hxx"
37 #include <com/sun/star/chart2/XChartDocument.hpp>
39 using namespace ::com::sun::star
;
40 using namespace ::com::sun::star::chart2
;
42 using ::com::sun::star::uno::Reference
;
43 using ::com::sun::star::uno::Sequence
;
44 using ::com::sun::star::uno::XComponentContext
;
45 using ::com::sun::star::lang::XServiceName
;
46 using ::com::sun::star::beans::XPropertySet
;
47 using ::com::sun::star::uno::Exception
;
51 OUString
lcl_getServiceNameForType(SvxChartRegress eType
)
53 OUString aServiceName
;
56 case CHREGRESS_LINEAR
:
57 aServiceName
= "com.sun.star.chart2.LinearRegressionCurve";
60 aServiceName
= "com.sun.star.chart2.LogarithmicRegressionCurve";
63 aServiceName
= "com.sun.star.chart2.ExponentialRegressionCurve";
66 aServiceName
= "com.sun.star.chart2.PotentialRegressionCurve";
68 case CHREGRESS_POLYNOMIAL
:
69 aServiceName
= "com.sun.star.chart2.PolynomialRegressionCurve";
71 case CHREGRESS_MOVING_AVERAGE
:
72 aServiceName
= "com.sun.star.chart2.MovingAverageRegressionCurve";
75 OSL_FAIL("unknown regression curve type - use linear instead");
76 aServiceName
= "com.sun.star.chart2.LinearRegressionCurve";
82 } // anonymous namespace
87 Reference
< XRegressionCurve
> RegressionCurveHelper::createMeanValueLine(
88 const Reference
< XComponentContext
> & xContext
)
90 return Reference
< XRegressionCurve
>(
91 new MeanValueRegressionCurve( xContext
));
94 Reference
< XRegressionCurve
> RegressionCurveHelper::createRegressionCurveByServiceName(
95 const Reference
< XComponentContext
> & xContext
,
96 const OUString
& aServiceName
)
98 Reference
< XRegressionCurve
> xResult
;
100 // todo: use factory methods with service name
101 if( aServiceName
== "com.sun.star.chart2.LinearRegressionCurve" )
103 xResult
.set( new LinearRegressionCurve( xContext
) );
105 else if( aServiceName
== "com.sun.star.chart2.LogarithmicRegressionCurve" )
107 xResult
.set( new LogarithmicRegressionCurve( xContext
) );
109 else if( aServiceName
== "com.sun.star.chart2.ExponentialRegressionCurve" )
111 xResult
.set( new ExponentialRegressionCurve( xContext
) );
113 else if( aServiceName
== "com.sun.star.chart2.PotentialRegressionCurve" )
115 xResult
.set( new PotentialRegressionCurve( xContext
) );
117 else if( aServiceName
== "com.sun.star.chart2.PolynomialRegressionCurve" )
119 xResult
.set( new PolynomialRegressionCurve( xContext
) );
121 else if( aServiceName
== "com.sun.star.chart2.MovingAverageRegressionCurve" )
123 xResult
.set( new MovingAverageRegressionCurve( xContext
) );
129 Reference
< XRegressionCurveCalculator
> RegressionCurveHelper::createRegressionCurveCalculatorByServiceName(
130 const OUString
& aServiceName
)
132 Reference
< XRegressionCurveCalculator
> xResult
;
134 // todo: use factory methods with service name
135 if( aServiceName
== "com.sun.star.chart2.MeanValueRegressionCurve" )
137 xResult
.set( new MeanValueRegressionCurveCalculator() );
139 if( aServiceName
== "com.sun.star.chart2.LinearRegressionCurve" )
141 xResult
.set( new LinearRegressionCurveCalculator() );
143 else if( aServiceName
== "com.sun.star.chart2.LogarithmicRegressionCurve" )
145 xResult
.set( new LogarithmicRegressionCurveCalculator() );
147 else if( aServiceName
== "com.sun.star.chart2.ExponentialRegressionCurve" )
149 xResult
.set( new ExponentialRegressionCurveCalculator() );
151 else if( aServiceName
== "com.sun.star.chart2.PotentialRegressionCurve" )
153 xResult
.set( new PotentialRegressionCurveCalculator() );
155 else if( aServiceName
== "com.sun.star.chart2.PolynomialRegressionCurve" )
157 xResult
.set( new PolynomialRegressionCurveCalculator() );
159 else if( aServiceName
== "com.sun.star.chart2.MovingAverageRegressionCurve" )
161 xResult
.set( new MovingAverageRegressionCurveCalculator() );
167 void RegressionCurveHelper::initializeCurveCalculator(
168 const Reference
< XRegressionCurveCalculator
> & xOutCurveCalculator
,
169 const Reference
< data::XDataSource
> & xSource
,
170 bool bUseXValuesIfAvailable
/* = true */ )
172 if( ! (xOutCurveCalculator
.is() &&
176 Sequence
< double > aXValues
, aYValues
;
177 bool bXValuesFound
= false, bYValuesFound
= false;
179 Sequence
< Reference
< data::XLabeledDataSequence
> > aDataSeqs( xSource
->getDataSequences());
182 ! (bXValuesFound
&& bYValuesFound
) && i
<aDataSeqs
.getLength();
187 Reference
< data::XDataSequence
> xSeq( aDataSeqs
[i
]->getValues());
188 Reference
< XPropertySet
> xProp( xSeq
, uno::UNO_QUERY_THROW
);
190 if( xProp
->getPropertyValue( "Role" ) >>= aRole
)
192 if( bUseXValuesIfAvailable
&& !bXValuesFound
&& aRole
== "values-x" )
194 aXValues
= DataSequenceToDoubleSequence( xSeq
);
195 bXValuesFound
= true;
197 else if( !bYValuesFound
&& aRole
== "values-y" )
199 aYValues
= DataSequenceToDoubleSequence( xSeq
);
200 bYValuesFound
= true;
204 catch( const Exception
& ex
)
206 ASSERT_EXCEPTION( ex
);
210 if( ! bXValuesFound
&&
213 // initialize with 1, 2, ...
214 //first category (index 0) matches with real number 1.0
215 aXValues
.realloc( aYValues
.getLength());
216 for( i
=0; i
<aXValues
.getLength(); ++i
)
218 bXValuesFound
= true;
221 if( bXValuesFound
&& bYValuesFound
&&
222 aXValues
.getLength() > 0 &&
223 aYValues
.getLength() > 0 )
224 xOutCurveCalculator
->recalculateRegression( aXValues
, aYValues
);
227 void RegressionCurveHelper::initializeCurveCalculator(
228 const Reference
< XRegressionCurveCalculator
> & xOutCurveCalculator
,
229 const Reference
< XDataSeries
> & xSeries
,
230 const Reference
< frame::XModel
> & xModel
)
232 sal_Int32 nAxisType
= ChartTypeHelper::getAxisType(
233 ChartModelHelper::getChartTypeOfSeries( xModel
, xSeries
), 0 ); // x-axis
235 initializeCurveCalculator( xOutCurveCalculator
,
236 uno::Reference
< data::XDataSource
>( xSeries
, uno::UNO_QUERY
),
237 (nAxisType
== AxisType::REALNUMBER
) );
240 bool RegressionCurveHelper::hasMeanValueLine(
241 const uno::Reference
< XRegressionCurveContainer
> & xRegCnt
)
248 uno::Sequence
< uno::Reference
< XRegressionCurve
> > aCurves(
249 xRegCnt
->getRegressionCurves());
250 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
252 if( isMeanValueLine( aCurves
[i
] ))
256 catch( const Exception
& ex
)
258 ASSERT_EXCEPTION( ex
);
264 bool RegressionCurveHelper::isMeanValueLine(
265 const uno::Reference
< chart2::XRegressionCurve
> & xRegCurve
)
267 uno::Reference
< XServiceName
> xServName( xRegCurve
, uno::UNO_QUERY
);
268 if( xServName
.is() &&
269 xServName
->getServiceName() ==
270 "com.sun.star.chart2.MeanValueRegressionCurve" )
275 uno::Reference
< chart2::XRegressionCurve
>
276 RegressionCurveHelper::getMeanValueLine(
277 const uno::Reference
< chart2::XRegressionCurveContainer
> & xRegCnt
)
283 uno::Sequence
< uno::Reference
< XRegressionCurve
> > aCurves(
284 xRegCnt
->getRegressionCurves());
285 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
287 if( isMeanValueLine( aCurves
[i
] ))
291 catch( const Exception
& ex
)
293 ASSERT_EXCEPTION( ex
);
297 return uno::Reference
< chart2::XRegressionCurve
>();
300 void RegressionCurveHelper::addMeanValueLine(
301 uno::Reference
< XRegressionCurveContainer
> & xRegCnt
,
302 const uno::Reference
< XComponentContext
> & xContext
,
303 const uno::Reference
< XPropertySet
> & xSeriesProp
)
306 ::chart::RegressionCurveHelper::hasMeanValueLine( xRegCnt
) )
309 // todo: use a valid context
310 uno::Reference
< XRegressionCurve
> xCurve( createMeanValueLine( xContext
));
311 xRegCnt
->addRegressionCurve( xCurve
);
313 if( xSeriesProp
.is())
315 uno::Reference
< XPropertySet
> xProp( xCurve
, uno::UNO_QUERY
);
318 xProp
->setPropertyValue( "LineColor",
319 xSeriesProp
->getPropertyValue( "Color"));
324 void RegressionCurveHelper::removeMeanValueLine(
325 Reference
< XRegressionCurveContainer
> & xRegCnt
)
332 Sequence
< Reference
< XRegressionCurve
> > aCurves(
333 xRegCnt
->getRegressionCurves());
334 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
336 if( isMeanValueLine( aCurves
[i
] ))
338 xRegCnt
->removeRegressionCurve( aCurves
[i
] );
339 // attention: the iterator i has become invalid now
341 // note: assume that there is only one mean-value curve
342 // to remove multiple mean-value curves remove the break
347 catch( const Exception
& ex
)
349 ASSERT_EXCEPTION( ex
);
353 uno::Reference
< chart2::XRegressionCurve
> RegressionCurveHelper::addRegressionCurve(
354 SvxChartRegress eType
,
355 uno::Reference
< XRegressionCurveContainer
>& xRegressionCurveContainer
,
356 const uno::Reference
< XComponentContext
>& /* xContext */,
357 const uno::Reference
< beans::XPropertySet
>& xPropertySource
,
358 const uno::Reference
< beans::XPropertySet
>& xEquationProperties
)
360 uno::Reference
< chart2::XRegressionCurve
> xCurve
;
362 if( !xRegressionCurveContainer
.is() )
365 if( eType
== CHREGRESS_NONE
)
367 OSL_FAIL("don't create a regression curve of type none");
371 OUString
aServiceName( lcl_getServiceNameForType( eType
));
372 if( !aServiceName
.isEmpty())
374 // todo: use a valid context
375 xCurve
.set( createRegressionCurveByServiceName(
376 uno::Reference
< uno::XComponentContext
>(), aServiceName
));
378 if( xEquationProperties
.is())
379 xCurve
->setEquationProperties( xEquationProperties
);
381 uno::Reference
< beans::XPropertySet
> xProperties( xCurve
, uno::UNO_QUERY
);
382 if( xProperties
.is())
384 if( xPropertySource
.is())
385 comphelper::copyProperties( xPropertySource
, xProperties
);
388 uno::Reference
< XPropertySet
> xSeriesProp( xRegressionCurveContainer
, uno::UNO_QUERY
);
389 if( xSeriesProp
.is())
391 xProperties
->setPropertyValue( "LineColor",
392 xSeriesProp
->getPropertyValue( "Color"));
397 xRegressionCurveContainer
->addRegressionCurve( xCurve
);
402 /** removes all regression curves that are not of type mean value
403 and returns true, if anything was removed
405 bool RegressionCurveHelper::removeAllExceptMeanValueLine(
406 uno::Reference
< chart2::XRegressionCurveContainer
> & xRegCnt
)
408 bool bRemovedSomething
= false;
413 uno::Sequence
< uno::Reference
< chart2::XRegressionCurve
> > aCurves(
414 xRegCnt
->getRegressionCurves());
415 ::std::vector
< uno::Reference
< chart2::XRegressionCurve
> > aCurvesToDelete
;
416 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
418 if( ! isMeanValueLine( aCurves
[i
] ))
420 aCurvesToDelete
.push_back( aCurves
[ i
] );
424 for( ::std::vector
< uno::Reference
< chart2::XRegressionCurve
> >::const_iterator aIt
= aCurvesToDelete
.begin();
425 aIt
!= aCurvesToDelete
.end(); ++aIt
)
427 xRegCnt
->removeRegressionCurve( *aIt
);
428 bRemovedSomething
= true;
431 catch( const uno::Exception
& ex
)
433 ASSERT_EXCEPTION( ex
);
436 return bRemovedSomething
;
439 void RegressionCurveHelper::removeEquations(
440 uno::Reference
< chart2::XRegressionCurveContainer
> & xRegCnt
)
446 uno::Sequence
< uno::Reference
< chart2::XRegressionCurve
> > aCurves(
447 xRegCnt
->getRegressionCurves());
448 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
450 if( !isMeanValueLine( aCurves
[i
] ) )
452 uno::Reference
< chart2::XRegressionCurve
> xRegCurve( aCurves
[ i
] );
455 uno::Reference
< beans::XPropertySet
> xEqProp( xRegCurve
->getEquationProperties() ) ;
458 xEqProp
->setPropertyValue( "ShowEquation", uno::makeAny( false ));
459 xEqProp
->setPropertyValue( "ShowCorrelationCoefficient", uno::makeAny( false ));
465 catch( const uno::Exception
& ex
)
467 ASSERT_EXCEPTION( ex
);
472 uno::Reference
< XRegressionCurve
> RegressionCurveHelper::changeRegressionCurveType(
473 SvxChartRegress eType
,
474 uno::Reference
< XRegressionCurveContainer
> & xRegressionCurveContainer
,
475 uno::Reference
< XRegressionCurve
> & xRegressionCurve
,
476 const uno::Reference
< XComponentContext
> & xContext
)
478 xRegressionCurveContainer
->removeRegressionCurve( xRegressionCurve
);
479 return RegressionCurveHelper::addRegressionCurve(
481 xRegressionCurveContainer
,
483 uno::Reference
< beans::XPropertySet
>( xRegressionCurve
, uno::UNO_QUERY
),
484 xRegressionCurve
->getEquationProperties());
487 uno::Reference
< chart2::XRegressionCurve
> RegressionCurveHelper::getFirstCurveNotMeanValueLine(
488 const Reference
< XRegressionCurveContainer
> & xRegCnt
)
495 uno::Sequence
< uno::Reference
< chart2::XRegressionCurve
> > aCurves(
496 xRegCnt
->getRegressionCurves());
497 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
499 if( ! isMeanValueLine( aCurves
[i
] ))
505 catch( const Exception
& ex
)
507 ASSERT_EXCEPTION( ex
);
513 uno::Reference
< chart2::XRegressionCurve
> RegressionCurveHelper::getRegressionCurveAtIndex(
514 const Reference
< XRegressionCurveContainer
>& xCurveContainer
,
517 if( !xCurveContainer
.is())
522 uno::Sequence
< uno::Reference
< chart2::XRegressionCurve
> > aCurves(xCurveContainer
->getRegressionCurves());
523 if(0 <= aIndex
&& aIndex
< aCurves
.getLength())
525 if(!isMeanValueLine(aCurves
[aIndex
]))
526 return aCurves
[aIndex
];
529 catch( const Exception
& ex
)
531 ASSERT_EXCEPTION( ex
);
537 SvxChartRegress
RegressionCurveHelper::getRegressionType(
538 const Reference
< XRegressionCurve
> & xCurve
)
540 SvxChartRegress eResult
= CHREGRESS_UNKNOWN
;
544 Reference
< lang::XServiceName
> xServName( xCurve
, uno::UNO_QUERY
);
547 OUString
aServiceName( xServName
->getServiceName() );
549 if( aServiceName
== "com.sun.star.chart2.LinearRegressionCurve" )
551 eResult
= CHREGRESS_LINEAR
;
553 else if( aServiceName
== "com.sun.star.chart2.LogarithmicRegressionCurve" )
555 eResult
= CHREGRESS_LOG
;
557 else if( aServiceName
== "com.sun.star.chart2.ExponentialRegressionCurve" )
559 eResult
= CHREGRESS_EXP
;
561 else if( aServiceName
== "com.sun.star.chart2.PotentialRegressionCurve" )
563 eResult
= CHREGRESS_POWER
;
565 else if( aServiceName
== "com.sun.star.chart2.MeanValueRegressionCurve" )
567 eResult
= CHREGRESS_MEAN_VALUE
;
569 else if( aServiceName
== "com.sun.star.chart2.PolynomialRegressionCurve" )
571 eResult
= CHREGRESS_POLYNOMIAL
;
573 else if( aServiceName
== "com.sun.star.chart2.MovingAverageRegressionCurve" )
575 eResult
= CHREGRESS_MOVING_AVERAGE
;
579 catch( const Exception
& ex
)
581 ASSERT_EXCEPTION( ex
);
587 SvxChartRegress
RegressionCurveHelper::getFirstRegressTypeNotMeanValueLine(
588 const Reference
< XRegressionCurveContainer
> & xRegCnt
)
590 SvxChartRegress eResult
= CHREGRESS_NONE
;
594 Sequence
< Reference
< XRegressionCurve
> > aCurves(
595 xRegCnt
->getRegressionCurves());
596 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
598 SvxChartRegress eType
= getRegressionType( aCurves
[i
] );
599 if( eType
!= CHREGRESS_MEAN_VALUE
&&
600 eType
!= CHREGRESS_UNKNOWN
)
611 OUString
RegressionCurveHelper::getUINameForRegressionCurve( const Reference
< XRegressionCurve
>& xRegressionCurve
)
613 OUString aResult
= getRegressionCurveSpecificName(xRegressionCurve
);
614 if (aResult
.isEmpty())
616 aResult
= getRegressionCurveGenericName(xRegressionCurve
);
617 if (!aResult
.isEmpty())
619 aResult
+= " (%SERIESNAME)";
625 OUString
RegressionCurveHelper::getRegressionCurveGenericName(const Reference
< XRegressionCurve
>& xRegressionCurve
)
628 if(!xRegressionCurve
.is())
631 Reference
< lang::XServiceName
> xServiceName( xRegressionCurve
, uno::UNO_QUERY
);
632 if(!xServiceName
.is())
635 OUString
aServiceName(xServiceName
->getServiceName());
637 if( aServiceName
== "com.sun.star.chart2.MeanValueRegressionCurve" )
639 aResult
= SCH_RESSTR(STR_REGRESSION_MEAN
);
641 else if( aServiceName
== "com.sun.star.chart2.LinearRegressionCurve" )
643 aResult
= SCH_RESSTR(STR_REGRESSION_LINEAR
);
645 else if( aServiceName
== "com.sun.star.chart2.LogarithmicRegressionCurve" )
647 aResult
= SCH_RESSTR(STR_REGRESSION_LOG
);
649 else if( aServiceName
== "com.sun.star.chart2.ExponentialRegressionCurve" )
651 aResult
= SCH_RESSTR(STR_REGRESSION_EXP
);
653 else if( aServiceName
== "com.sun.star.chart2.PotentialRegressionCurve" )
655 aResult
= SCH_RESSTR(STR_REGRESSION_POWER
);
657 else if( aServiceName
== "com.sun.star.chart2.PolynomialRegressionCurve" )
659 aResult
= SCH_RESSTR(STR_REGRESSION_POLYNOMIAL
);
661 else if( aServiceName
== "com.sun.star.chart2.MovingAverageRegressionCurve" )
663 aResult
= SCH_RESSTR(STR_REGRESSION_MOVING_AVERAGE
);
668 OUString
RegressionCurveHelper::getRegressionCurveSpecificName(const Reference
< XRegressionCurve
>& xRegressionCurve
)
672 if(!xRegressionCurve
.is())
675 Reference
<XPropertySet
> xProperties( xRegressionCurve
, uno::UNO_QUERY
);
676 if(!xProperties
.is())
679 xProperties
->getPropertyValue("CurveName") >>= aResult
;
684 OUString
RegressionCurveHelper::getRegressionCurveName( const Reference
< XRegressionCurve
>& xRegressionCurve
)
686 OUString aResult
= getRegressionCurveSpecificName(xRegressionCurve
);
687 if (aResult
.isEmpty())
688 return getRegressionCurveGenericName(xRegressionCurve
);
692 std::vector
< Reference
< chart2::XRegressionCurve
> >
693 RegressionCurveHelper::getAllRegressionCurvesNotMeanValueLine(
694 const Reference
< chart2::XDiagram
> & xDiagram
)
696 std::vector
< Reference
< chart2::XRegressionCurve
> > aResult
;
697 std::vector
< Reference
< chart2::XDataSeries
> > aSeries( DiagramHelper::getDataSeriesFromDiagram( xDiagram
));
698 for( std::vector
< Reference
< chart2::XDataSeries
> >::iterator
aIt( aSeries
.begin());
699 aIt
!= aSeries
.end(); ++aIt
)
701 Reference
< chart2::XRegressionCurveContainer
> xContainer( *aIt
, uno::UNO_QUERY
);
704 uno::Sequence
< uno::Reference
< chart2::XRegressionCurve
> > aCurves(xContainer
->getRegressionCurves());
705 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
707 if( ! isMeanValueLine( aCurves
[i
] ))
708 aResult
.push_back( aCurves
[i
] );
716 void RegressionCurveHelper::resetEquationPosition(
717 const Reference
< chart2::XRegressionCurve
> & xCurve
)
723 const OUString
aPosPropertyName( "RelativePosition" );
724 Reference
< beans::XPropertySet
> xEqProp( xCurve
->getEquationProperties()); // since m233: , uno::UNO_SET_THROW );
725 if( xEqProp
->getPropertyValue( aPosPropertyName
).hasValue())
726 xEqProp
->setPropertyValue( aPosPropertyName
, uno::Any());
728 catch( const uno::Exception
& ex
)
730 ASSERT_EXCEPTION( ex
);
735 sal_Int32
RegressionCurveHelper::getRegressionCurveIndex(
736 const Reference
< chart2::XRegressionCurveContainer
>& xContainer
,
737 const Reference
< chart2::XRegressionCurve
>& xCurve
)
741 uno::Sequence
< uno::Reference
< XRegressionCurve
> > aCurves(
742 xContainer
->getRegressionCurves());
744 for( sal_Int32 i
= 0; i
< aCurves
.getLength(); ++i
)
746 if( xCurve
== aCurves
[i
] )
753 bool RegressionCurveHelper::hasEquation( const Reference
< chart2::XRegressionCurve
> & xCurve
)
755 bool bHasEquation
= false;
758 uno::Reference
< beans::XPropertySet
> xEquationProp( xCurve
->getEquationProperties());
759 if( xEquationProp
.is())
761 bool bShowEquation
= false;
762 bool bShowCoefficient
= false;
763 xEquationProp
->getPropertyValue( "ShowEquation") >>= bShowEquation
;
764 xEquationProp
->getPropertyValue( "ShowCorrelationCoefficient") >>= bShowCoefficient
;
765 bHasEquation
= bShowEquation
|| bShowCoefficient
;
773 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */