1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef com_sun_star_chart2_XRegressionCurveCalculator_idl
24*b1cdbd2cSJim Jagielski#define com_sun_star_chart2_XRegressionCurveCalculator_idl
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl>
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski#include <com/sun/star/util/XNumberFormatsSupplier.idl>
29*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
30*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/RealPoint2D.idl>
31*b1cdbd2cSJim Jagielski#include <com/sun/star/chart2/XScaling.idl>
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielskimodule com
34*b1cdbd2cSJim Jagielski{
35*b1cdbd2cSJim Jagielskimodule sun
36*b1cdbd2cSJim Jagielski{
37*b1cdbd2cSJim Jagielskimodule star
38*b1cdbd2cSJim Jagielski{
39*b1cdbd2cSJim Jagielskimodule chart2
40*b1cdbd2cSJim Jagielski{
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielskiinterface XRegressionCurveCalculator : com::sun::star::uno::XInterface
43*b1cdbd2cSJim Jagielski{
44*b1cdbd2cSJim Jagielski    /** recalculates the parameters of the internal regression curve according to
45*b1cdbd2cSJim Jagielski        the <it>x</it>- and <it>y</it>-values given.
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski        @param aXValues
48*b1cdbd2cSJim Jagielski            All x-values that represent the measurement points on
49*b1cdbd2cSJim Jagielski            which the regression is based
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski        @param aYValues
52*b1cdbd2cSJim Jagielski            All y-values that represent the measurement points on
53*b1cdbd2cSJim Jagielski            which the regression is based
54*b1cdbd2cSJim Jagielski    */
55*b1cdbd2cSJim Jagielski    void recalculateRegression( [in] sequence< double > aXValues,
56*b1cdbd2cSJim Jagielski                                [in] sequence< double > aYValues );
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski    /** calculates the value of the regression curve for <it>x</it>.
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski        @param x
62*b1cdbd2cSJim Jagielski            The abscissa value for which the value of the regression
63*b1cdbd2cSJim Jagielski            curve should be calculated.  All numbers that are part of
64*b1cdbd2cSJim Jagielski            the domain of the regression function are valid.
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski        @return
67*b1cdbd2cSJim Jagielski            If <it>x</it> is element of the domain of the regression
68*b1cdbd2cSJim Jagielski            curve function, the result is its value.
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
71*b1cdbd2cSJim Jagielski            If <it>x</it> is not part of the domain of the regression
72*b1cdbd2cSJim Jagielski            function.
73*b1cdbd2cSJim Jagielski     */
74*b1cdbd2cSJim Jagielski    double getCurveValue( [in] double x )
75*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException );
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski    /** calculate multiple points of a regression curve at once. Note
78*b1cdbd2cSJim Jagielski        that this method may optimize the output by returning less
79*b1cdbd2cSJim Jagielski        points, e.g. for a line you may get only two resulting points
80*b1cdbd2cSJim Jagielski        instead of <member>nPointCount</member> points.  This is only
81*b1cdbd2cSJim Jagielski        allowed if the parameter
82*b1cdbd2cSJim Jagielski        <member>bMaySkipPointsInCalculation</member> is set to
83*b1cdbd2cSJim Jagielski        <TRUE/>.
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski        <p>It is important that a renderer takes the scalings into
86*b1cdbd2cSJim Jagielski        account. When one of these parameters is unknown, no
87*b1cdbd2cSJim Jagielski        optimization must be done.</p>
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski        @param bMaySkipPointsInCalculation determines whether it is
90*b1cdbd2cSJim Jagielski               allowed to skip points in the calculation. When this
91*b1cdbd2cSJim Jagielski               parameter is <TRUE/> it is assumed that the underlying
92*b1cdbd2cSJim Jagielski               coordinate system is cartesian.
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski        @param xScalingX a scaling that is used for the values in
95*b1cdbd2cSJim Jagielski               x-direction
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski        @param xScalingY a scaling that is used for the values in
98*b1cdbd2cSJim Jagielski               y-direction
99*b1cdbd2cSJim Jagielski     */
100*b1cdbd2cSJim Jagielski    sequence< com::sun::star::geometry::RealPoint2D > getCurveValues(
101*b1cdbd2cSJim Jagielski        [in] double min,
102*b1cdbd2cSJim Jagielski        [in] double max,
103*b1cdbd2cSJim Jagielski        [in] long nPointCount,
104*b1cdbd2cSJim Jagielski        [in] XScaling xScalingX,
105*b1cdbd2cSJim Jagielski        [in] XScaling xScalingY,
106*b1cdbd2cSJim Jagielski        [in] boolean bMaySkipPointsInCalculation )
107*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException );
108*b1cdbd2cSJim Jagielski
109*b1cdbd2cSJim Jagielski    /** Returns the value of the correlation coefficient for the given
110*b1cdbd2cSJim Jagielski        regression.  This value is often denoted as <it>r</it> or
111*b1cdbd2cSJim Jagielski        <it>R</it>.
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski        <p>The value of <it>r</it> is signed.  Often
114*b1cdbd2cSJim Jagielski        <it>r</it><sup>2</sup> is used instead of <it>r</it> to denote
115*b1cdbd2cSJim Jagielski        a regression curve's accuray.</p>
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski        @return
118*b1cdbd2cSJim Jagielski            The return value is the fraction of the variance in the
119*b1cdbd2cSJim Jagielski            data that is explained by the regression.
120*b1cdbd2cSJim Jagielski     */
121*b1cdbd2cSJim Jagielski    double getCorrelationCoefficient();
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski    /** Retrieve a string showing the regression curve's function with
124*b1cdbd2cSJim Jagielski        calculated parameters.
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski        @return
127*b1cdbd2cSJim Jagielski            The string returned contains the regression curve's
128*b1cdbd2cSJim Jagielski            formula in a form <pre>"f(x) = ..."</pre>, where the
129*b1cdbd2cSJim Jagielski            calculated parts are filled out.  For a linear regression
130*b1cdbd2cSJim Jagielski            you might get <pre>"f(x) = 0.341 x + 1.45"</pre>.
131*b1cdbd2cSJim Jagielski     */
132*b1cdbd2cSJim Jagielski    string getRepresentation();
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski    /** Returns a representation using the given numnber format for formatting all numbers
135*b1cdbd2cSJim Jagielski        contained in the formula.
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski        @see getRepresentation
138*b1cdbd2cSJim Jagielski     */
139*b1cdbd2cSJim Jagielski    string getFormattedRepresentation( [in] com::sun::star::util::XNumberFormatsSupplier xNumFmtSupplier,
140*b1cdbd2cSJim Jagielski                                       [in] long nNumberFormatKey );
141*b1cdbd2cSJim Jagielski};
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski} ; // chart2
144*b1cdbd2cSJim Jagielski} ; // com
145*b1cdbd2cSJim Jagielski} ; // sun
146*b1cdbd2cSJim Jagielski} ; // star
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski#endif
149