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_chart_XChartTypeTemplate_idl
24*b1cdbd2cSJim Jagielski#define com_sun_star_chart_XChartTypeTemplate_idl
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
34*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
35*b1cdbd2cSJim Jagielski#endif
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski#include <com/sun/star/chart2/XDiagram.idl>
38*b1cdbd2cSJim Jagielski#include <com/sun/star/chart2/data/XDataSource.idl>
39*b1cdbd2cSJim Jagielski#include <com/sun/star/chart2/XChartType.idl>
40*b1cdbd2cSJim Jagielski#include <com/sun/star/chart2/XDataInterpreter.idl>
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielskimodule com
43*b1cdbd2cSJim Jagielski{
44*b1cdbd2cSJim Jagielskimodule sun
45*b1cdbd2cSJim Jagielski{
46*b1cdbd2cSJim Jagielskimodule star
47*b1cdbd2cSJim Jagielski{
48*b1cdbd2cSJim Jagielskimodule chart2
49*b1cdbd2cSJim Jagielski{
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielskiinterface XChartTypeTemplate : ::com::sun::star::uno::XInterface
52*b1cdbd2cSJim Jagielski{
53*b1cdbd2cSJim Jagielski    /** Creates a new diagram based upon the given data .
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski        @param xDataSource
56*b1cdbd2cSJim Jagielski            This data source will be interpreted in a chart-type
57*b1cdbd2cSJim Jagielski            specific way and appropriate <type>DataSeries</type> will
58*b1cdbd2cSJim Jagielski            be created which serve as input for the new diagram.
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski        @param aArguments
61*b1cdbd2cSJim Jagielski            Arguments that tell the template how to slice the given
62*b1cdbd2cSJim Jagielski            range.  The properties should be defined in a separate
63*b1cdbd2cSJim Jagielski            service.
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski            <p>For standard parameters that may be used, see the
66*b1cdbd2cSJim Jagielski            service <type>StandardDiagramCreationParameters</type>.
67*b1cdbd2cSJim Jagielski            </p>
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski        @return
70*b1cdbd2cSJim Jagielski            The new diagram which represents this
71*b1cdbd2cSJim Jagielski            <type>ChartTypeTemplate</type>.
72*b1cdbd2cSJim Jagielski     */
73*b1cdbd2cSJim Jagielski    XDiagram createDiagramByDataSource(
74*b1cdbd2cSJim Jagielski        [in] data::XDataSource xDataSource,
75*b1cdbd2cSJim Jagielski        [in] sequence< com::sun::star::beans::PropertyValue > aArguments );
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski    /** @return
78*b1cdbd2cSJim Jagielski            <TRUE/> if the template does support categories
79*b1cdbd2cSJim Jagielski     */
80*b1cdbd2cSJim Jagielski    boolean supportsCategories();
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski    /** Analyses the given diagram and reinterprets its
83*b1cdbd2cSJim Jagielski        <type>DataSeries</type> and <type>Categories</type> and
84*b1cdbd2cSJim Jagielski        creates a new diagram based on these series.
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski        <p>Note, that if <member>matchesTemplate</member> returns
87*b1cdbd2cSJim Jagielski        <TRUE/> for the given <type>XDiagram</type>, the latter should
88*b1cdbd2cSJim Jagielski        not be changed.</p>
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski        @param xDiagram
91*b1cdbd2cSJim Jagielski            The diagram given will be modified such that it represents
92*b1cdbd2cSJim Jagielski            this <type>ChartTypeTemplate</type>.
93*b1cdbd2cSJim Jagielski     */
94*b1cdbd2cSJim Jagielski    void changeDiagram( [in] XDiagram xDiagram );
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski    /** Changes the given diagram <code>xDiagram</code> by using the
97*b1cdbd2cSJim Jagielski        new data given in <code>xDataSource</code>.
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski        <p>Note that the data is interpreted in a way that fits this
100*b1cdbd2cSJim Jagielski        template, but not necessarily the chart-types of the diagram.
101*b1cdbd2cSJim Jagielski        This method should only be called if the data-format of the
102*b1cdbd2cSJim Jagielski        diagram is compatible with the data-format of this
103*b1cdbd2cSJim Jagielski        template.</p>
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski        <p>Ideally a <member>matchesTemplate</member> call for the
106*b1cdbd2cSJim Jagielski        given diagram should return <TRUE/> before this method is
107*b1cdbd2cSJim Jagielski        called.</p>
108*b1cdbd2cSJim Jagielski
109*b1cdbd2cSJim Jagielski        @param xDataSource
110*b1cdbd2cSJim Jagielski            This data source will be interpreted in a chart-type
111*b1cdbd2cSJim Jagielski            specific way and the <type>DataSeries</type> found in
112*b1cdbd2cSJim Jagielski            <code>xDiagram</code> will be adapted to the new data.
113*b1cdbd2cSJim Jagielski            Missing data series will be created and unused ones will
114*b1cdbd2cSJim Jagielski            be deleted in <code>xDiagram</code>.
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski        @param aArguments
117*b1cdbd2cSJim Jagielski            Arguments that tell the template how to slice the given
118*b1cdbd2cSJim Jagielski            range.  The properties should be defined in a separate
119*b1cdbd2cSJim Jagielski            service.
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski            <p>For standard parameters that may be used, see the
122*b1cdbd2cSJim Jagielski            service <type>StandardDiagramCreationParameters</type>.
123*b1cdbd2cSJim Jagielski            </p>
124*b1cdbd2cSJim Jagielski     */
125*b1cdbd2cSJim Jagielski    void changeDiagramData(
126*b1cdbd2cSJim Jagielski        [in] XDiagram xDiagram,
127*b1cdbd2cSJim Jagielski        [in] data::XDataSource xDataSource,
128*b1cdbd2cSJim Jagielski        [in] sequence< com::sun::star::beans::PropertyValue > aArguments );
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim Jagielski    /** States whether the given diagram could have been created by
131*b1cdbd2cSJim Jagielski        the template.
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski        <p>The template will parse the <type>DataSeriesTree</type> of
134*b1cdbd2cSJim Jagielski        the diagram to determine if the structure matches the one
135*b1cdbd2cSJim Jagielski        which would have been created by
136*b1cdbd2cSJim Jagielski        <member>createDiagramByDataSource</member>.</p>
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski        <p>For analysis all parts of the diagram may be used,
139*b1cdbd2cSJim Jagielski        e.g. also properties set at the data series (like symbols)./p>
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski        @param xDiagram
142*b1cdbd2cSJim Jagielski            The diagram to be analyzed.
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski        @param bAdaptProperties
145*b1cdbd2cSJim Jagielski            If <TRUE/> the properties of the template are set, such
146*b1cdbd2cSJim Jagielski            that the template matches more accurately.  E.g. for a
147*b1cdbd2cSJim Jagielski            line-chart with symbols the property "Symbol" would be set
148*b1cdbd2cSJim Jagielski            to <TRUE/>.  If this parameter is <FALSE/> the template
149*b1cdbd2cSJim Jagielski            itselfs stays unmodified.
150*b1cdbd2cSJim Jagielski
151*b1cdbd2cSJim Jagielski        @return
152*b1cdbd2cSJim Jagielski            <TRUE/> if the diagram given is structurally identical to
153*b1cdbd2cSJim Jagielski            a diagram that was created using
154*b1cdbd2cSJim Jagielski            <member>createDiagramByDataSource</member> or
155*b1cdbd2cSJim Jagielski            <member>changeDiagram</member>.  If <FALSE/> is returned
156*b1cdbd2cSJim Jagielski            the template stays unmodified even if
157*b1cdbd2cSJim Jagielski            <code>bAdaptProperties</code> is <TRUE/>.
158*b1cdbd2cSJim Jagielski     */
159*b1cdbd2cSJim Jagielski    boolean matchesTemplate( [in] XDiagram xDiagram,
160*b1cdbd2cSJim Jagielski                             [in] boolean bAdaptProperties );
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski    /** Provides a chart type object that can be used to create new
163*b1cdbd2cSJim Jagielski        series.
164*b1cdbd2cSJim Jagielski
165*b1cdbd2cSJim Jagielski        @param aFormerlyUsedChartTypes
166*b1cdbd2cSJim Jagielski            The list can be used to copy some aspects from old charttypes during the creation of a new chart type.
167*b1cdbd2cSJim Jagielski            The list might be empty.
168*b1cdbd2cSJim Jagielski     */
169*b1cdbd2cSJim Jagielski    XChartType getChartTypeForNewSeries( [in] sequence< XChartType > aFormerlyUsedChartTypes );
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski    /**
172*b1cdbd2cSJim Jagielski     */
173*b1cdbd2cSJim Jagielski    XDataInterpreter getDataInterpreter();
174*b1cdbd2cSJim Jagielski
175*b1cdbd2cSJim Jagielski    /** Applies default styles to the given XDataSeries.
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski        The default implementation assigns the system-wide chart-color defaults
178*b1cdbd2cSJim Jagielski        as "Color" property to all series.
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski        @param nIndex
181*b1cdbd2cSJim Jagielski            The index of the series.  This is used to obtain a default style
182*b1cdbd2cSJim Jagielski            (e.g. color) for the nth series.
183*b1cdbd2cSJim Jagielski     */
184*b1cdbd2cSJim Jagielski//     void applyDefaultStyle( [in] XDataSeries xSeries,
185*b1cdbd2cSJim Jagielski//                             [in] long nSeriesIndex );
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski    /** Applies a chart-type specific style (e.g. symbols) to all series in the
188*b1cdbd2cSJim Jagielski        sequence aSeries.
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski        @param xSeries
191*b1cdbd2cSJim Jagielski            a single data series to which a style will be applied
192*b1cdbd2cSJim Jagielski
193*b1cdbd2cSJim Jagielski        @param nChartTypeGroupIndex
194*b1cdbd2cSJim Jagielski            Denotes in which chart-type group the series lies, such this method
195*b1cdbd2cSJim Jagielski            can apply different styles for different chart-type groups
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski        @param nSeriesIndex
198*b1cdbd2cSJim Jagielski            The index of the series inside the current chart-type group.
199*b1cdbd2cSJim Jagielski            nSeriesIndex does not uniquely identify a data series alone, but
200*b1cdbd2cSJim Jagielski            only together with nChartTypeGroupIndex
201*b1cdbd2cSJim Jagielski
202*b1cdbd2cSJim Jagielski        @param nSeriesCount
203*b1cdbd2cSJim Jagielski            The number of series in the current chart-type group.
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski        @todo In the future, this should only change the "Style" property and no
206*b1cdbd2cSJim Jagielski              hard attributes.
207*b1cdbd2cSJim Jagielski     */
208*b1cdbd2cSJim Jagielski    void applyStyle( [in] XDataSeries xSeries,
209*b1cdbd2cSJim Jagielski                     [in] long nChartTypeGroupIndex,
210*b1cdbd2cSJim Jagielski                     [in] long nSeriesIndex,
211*b1cdbd2cSJim Jagielski                     [in] long nSeriesCount );
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski    /** Resets all styles that were changed from the default at any
214*b1cdbd2cSJim Jagielski        object in the chart and have not been later modified.
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski        <p>In <member>createDiagramByDataSource</member> or
217*b1cdbd2cSJim Jagielski        <member>changeDiagram</member> a template might e.g. change
218*b1cdbd2cSJim Jagielski        the page background color or the line style of all data
219*b1cdbd2cSJim Jagielski        series.  This method should reset all objects that still have
220*b1cdbd2cSJim Jagielski        the changed settings to the default.</p>
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski        <p>If for example the template changed the
223*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::drawing">LineStyle</type> of all
224*b1cdbd2cSJim Jagielski        series to NONE, this method should reset all series with
225*b1cdbd2cSJim Jagielski        LineStyle NONE back to SOLID.  If a series has a style DASH,
226*b1cdbd2cSJim Jagielski        it must not be changed.</p>
227*b1cdbd2cSJim Jagielski     */
228*b1cdbd2cSJim Jagielski    void resetStyles( [in] XDiagram xDiagram );
229*b1cdbd2cSJim Jagielski};
230*b1cdbd2cSJim Jagielski
231*b1cdbd2cSJim Jagielski} ; // chart2
232*b1cdbd2cSJim Jagielski} ; // com
233*b1cdbd2cSJim Jagielski} ; // sun
234*b1cdbd2cSJim Jagielski} ; // star
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim Jagielski#endif
237