merged tag ooo/OOO330_m14
[LibreOffice.git] / chart2 / source / inc / RegressionCurveHelper.hxx
blob0a8fd0315bb5ce786ebc31f08d4614917eec1c81
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
27 #ifndef CHART2_REGRESSIONCURVEHELPER_HXX
28 #define CHART2_REGRESSIONCURVEHELPER_HXX
30 #include <com/sun/star/chart2/XRegressionCurve.hpp>
31 #include <com/sun/star/chart2/XRegressionCurveCalculator.hpp>
32 #include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
33 #include <com/sun/star/chart2/data/XDataSource.hpp>
34 #include <com/sun/star/chart2/XDataSeries.hpp>
35 #include <com/sun/star/chart2/XDiagram.hpp>
36 #include <com/sun/star/uno/XComponentContext.hpp>
37 #include <com/sun/star/frame/XModel.hpp>
38 #include "charttoolsdllapi.hxx"
40 #include <vector>
42 namespace chart
45 class OOO_DLLPUBLIC_CHARTTOOLS RegressionCurveHelper
47 public:
48 /// returns a model mean-value line
49 SAL_DLLPRIVATE static ::com::sun::star::uno::Reference<
50 ::com::sun::star::chart2::XRegressionCurve >
51 createMeanValueLine(
52 const ::com::sun::star::uno::Reference<
53 ::com::sun::star::uno::XComponentContext > & xContext );
55 /// returns a model regression curve
56 SAL_DLLPRIVATE static ::com::sun::star::uno::Reference<
57 ::com::sun::star::chart2::XRegressionCurve >
58 createRegressionCurveByServiceName(
59 const ::com::sun::star::uno::Reference<
60 ::com::sun::star::uno::XComponentContext > & xContext,
61 ::rtl::OUString aServiceName );
63 // ------------------------------------------------------------
65 static bool hasMeanValueLine(
66 const ::com::sun::star::uno::Reference<
67 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
69 static bool isMeanValueLine(
70 const ::com::sun::star::uno::Reference<
71 ::com::sun::star::chart2::XRegressionCurve > & xRegCurve );
73 static ::com::sun::star::uno::Reference<
74 ::com::sun::star::chart2::XRegressionCurve >
75 getMeanValueLine(
76 const ::com::sun::star::uno::Reference<
77 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
79 /** creates a mean-value line and adds it to the container.
81 @param xSeriesProp
82 If set, this property-set will be used to apply a line color
84 static void addMeanValueLine(
85 ::com::sun::star::uno::Reference<
86 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt,
87 const ::com::sun::star::uno::Reference<
88 ::com::sun::star::uno::XComponentContext > & xContext,
89 const ::com::sun::star::uno::Reference<
90 ::com::sun::star::beans::XPropertySet > & xSeriesProp );
92 static void removeMeanValueLine(
93 ::com::sun::star::uno::Reference<
94 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
96 enum tRegressionType
98 REGRESSION_TYPE_NONE,
99 REGRESSION_TYPE_LINEAR,
100 REGRESSION_TYPE_LOG,
101 REGRESSION_TYPE_EXP,
102 REGRESSION_TYPE_POWER,
103 REGRESSION_TYPE_MEAN_VALUE,
104 REGRESSION_TYPE_UNKNOWN
107 /** Returns the first regression curve found that is not of type
108 mean-value line
110 static ::com::sun::star::uno::Reference<
111 ::com::sun::star::chart2::XRegressionCurve >
112 getFirstCurveNotMeanValueLine(
113 const ::com::sun::star::uno::Reference<
114 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
116 /** Returns the type of the first regression curve found that is not of type
117 mean-value line
119 static tRegressionType getFirstRegressTypeNotMeanValueLine(
120 const ::com::sun::star::uno::Reference<
121 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
123 static tRegressionType getRegressionType(
124 const ::com::sun::star::uno::Reference<
125 ::com::sun::star::chart2::XRegressionCurve > & xCurve );
127 /** @param xPropertySource is taken as source to copy all properties from if
128 not null
129 @param xEquationProperties is set at the new regression curve as
130 equation properties if not null
132 static void addRegressionCurve( tRegressionType eType,
133 ::com::sun::star::uno::Reference<
134 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt,
135 const ::com::sun::star::uno::Reference<
136 ::com::sun::star::uno::XComponentContext > & xContext,
137 const ::com::sun::star::uno::Reference<
138 ::com::sun::star::beans::XPropertySet >& xPropertySource =
139 ::com::sun::star::uno::Reference<
140 ::com::sun::star::beans::XPropertySet >(),
141 const ::com::sun::star::uno::Reference<
142 ::com::sun::star::beans::XPropertySet >& xEquationProperties =
143 ::com::sun::star::uno::Reference<
144 ::com::sun::star::beans::XPropertySet >()
147 static bool removeAllExceptMeanValueLine(
148 ::com::sun::star::uno::Reference<
149 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
151 static void removeEquations(
152 ::com::sun::star::uno::Reference<
153 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt );
155 /** adds the given regression curve if there was none before. If there are
156 regression curves, the first one is replaced by the one given by the
157 type. All remaining curves are remnoved.
159 <p>This fuction ignores mean-value lines.</p>
161 static void replaceOrAddCurveAndReduceToOne(
162 tRegressionType eType,
163 ::com::sun::star::uno::Reference<
164 ::com::sun::star::chart2::XRegressionCurveContainer > & xRegCnt,
165 const ::com::sun::star::uno::Reference<
166 ::com::sun::star::uno::XComponentContext > & xContext );
168 // ------------------------------------------------------------
170 /// returns a calculator object for regression curves (used by the view)
171 static ::com::sun::star::uno::Reference<
172 ::com::sun::star::chart2::XRegressionCurveCalculator >
173 createRegressionCurveCalculatorByServiceName(
174 ::rtl::OUString aServiceName );
176 /** recalculates the regression parameters according to the data given in
177 the data source.
179 A sequence having the role "values-x" will be used as x-values for the
180 calculation if found. Otherwise a sequence (1, 2, 3, ...) of category
181 indexes will be used for the recalculateRegression() method of the
182 regression curve.
184 The first sequence having the role "values-y" will be used as y-values
185 for the recalculateRegression() method of the regression curve.
187 @param bUseXValuesIfAvailable
188 If false, the sequence (1, 2, 3, ...) will always be used, even if
189 there is a data-sequence with role "values-x"
191 SAL_DLLPRIVATE static void initializeCurveCalculator(
192 const ::com::sun::star::uno::Reference<
193 ::com::sun::star::chart2::XRegressionCurveCalculator > & xOutCurveCalculator,
194 const ::com::sun::star::uno::Reference<
195 ::com::sun::star::chart2::data::XDataSource > & xSource,
196 bool bUseXValuesIfAvailable = true );
198 /** Same method as above, but uses the given XModel to determine the
199 parameter bUseXValuesIfAvailable in the above function. It is also
200 necessary that the data::XDataSource is an XDataSeries, thus this parameter
201 also changed.
203 static void initializeCurveCalculator(
204 const ::com::sun::star::uno::Reference<
205 ::com::sun::star::chart2::XRegressionCurveCalculator > & xOutCurveCalculator,
206 const ::com::sun::star::uno::Reference<
207 ::com::sun::star::chart2::XDataSeries > & xSeries,
208 const ::com::sun::star::uno::Reference<
209 ::com::sun::star::frame::XModel > & xModel );
211 static ::rtl::OUString getUINameForRegressionCurve( const ::com::sun::star::uno::Reference<
212 ::com::sun::star::chart2::XRegressionCurve >& xCurve );
214 static ::std::vector< ::com::sun::star::uno::Reference<
215 ::com::sun::star::chart2::XRegressionCurve > > getAllRegressionCurvesNotMeanValueLine(
216 const ::com::sun::star::uno::Reference<
217 ::com::sun::star::chart2::XDiagram > & xDiagram );
219 static void resetEquationPosition( const ::com::sun::star::uno::Reference<
220 ::com::sun::star::chart2::XRegressionCurve > & xCurve );
222 /// @return the index of the given curve in the given container. -1 if not contained
223 static sal_Int32 getRegressionCurveIndex(
224 const ::com::sun::star::uno::Reference<
225 ::com::sun::star::chart2::XRegressionCurveContainer > & xContainer,
226 const ::com::sun::star::uno::Reference<
227 ::com::sun::star::chart2::XRegressionCurve > & xCurve );
229 static bool hasEquation(
230 const ::com::sun::star::uno::Reference<
231 ::com::sun::star::chart2::XRegressionCurve > & xCurve );
233 private:
234 // not implemented
235 RegressionCurveHelper();
238 } // namespace chart
240 // CHART2_REGRESSIONCURVEHELPER_HXX
241 #endif