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