xref: /AOO41X/main/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx (revision cde9e8dc2218e857da4894ecba5c903312256674)
1*cde9e8dcSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*cde9e8dcSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*cde9e8dcSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*cde9e8dcSAndrew Rist  * distributed with this work for additional information
6*cde9e8dcSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*cde9e8dcSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*cde9e8dcSAndrew Rist  * "License"); you may not use this file except in compliance
9*cde9e8dcSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*cde9e8dcSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*cde9e8dcSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*cde9e8dcSAndrew Rist  * software distributed under the License is distributed on an
15*cde9e8dcSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*cde9e8dcSAndrew Rist  * KIND, either express or implied.  See the License for the
17*cde9e8dcSAndrew Rist  * specific language governing permissions and limitations
18*cde9e8dcSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*cde9e8dcSAndrew Rist  *************************************************************/
21*cde9e8dcSAndrew Rist 
22*cde9e8dcSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_chart2.hxx"
26cdf0e10cSrcweir #include "MultipleChartConverters.hxx"
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include "chartview/ChartSfxItemIds.hxx"
29cdf0e10cSrcweir #include "SchWhichPairs.hxx"
30cdf0e10cSrcweir #include "AxisItemConverter.hxx"
31cdf0e10cSrcweir #include "StatisticsItemConverter.hxx"
32cdf0e10cSrcweir #include "GraphicPropertyItemConverter.hxx"
33cdf0e10cSrcweir #include "DataPointItemConverter.hxx"
34cdf0e10cSrcweir #include "ChartModelHelper.hxx"
35cdf0e10cSrcweir #include "TitleHelper.hxx"
36cdf0e10cSrcweir #include "TitleItemConverter.hxx"
37cdf0e10cSrcweir #include "AxisHelper.hxx"
38cdf0e10cSrcweir #include "chartview/ExplicitValueProvider.hxx"
39cdf0e10cSrcweir #include "DiagramHelper.hxx"
40cdf0e10cSrcweir 
41cdf0e10cSrcweir using namespace ::com::sun::star;
42cdf0e10cSrcweir using namespace ::com::sun::star::chart2;
43cdf0e10cSrcweir using ::com::sun::star::uno::Reference;
44cdf0e10cSrcweir using ::com::sun::star::uno::Sequence;
45cdf0e10cSrcweir 
46cdf0e10cSrcweir namespace chart
47cdf0e10cSrcweir {
48cdf0e10cSrcweir namespace wrapper
49cdf0e10cSrcweir {
50cdf0e10cSrcweir 
51cdf0e10cSrcweir //-----------------------------------------------------------------------------
52cdf0e10cSrcweir 
AllAxisItemConverter(const uno::Reference<frame::XModel> & xChartModel,SfxItemPool & rItemPool,SdrModel & rDrawModel,const uno::Reference<lang::XMultiServiceFactory> &,::std::auto_ptr<awt::Size> pRefSize)53cdf0e10cSrcweir AllAxisItemConverter::AllAxisItemConverter(
54cdf0e10cSrcweir     const uno::Reference< frame::XModel > & xChartModel,
55cdf0e10cSrcweir     SfxItemPool& rItemPool,
56cdf0e10cSrcweir     SdrModel& rDrawModel,
57cdf0e10cSrcweir     const uno::Reference< lang::XMultiServiceFactory > & /*xNamedPropertyContainerFactory*/,
58cdf0e10cSrcweir     ::std::auto_ptr< awt::Size > pRefSize )
59cdf0e10cSrcweir         : MultipleItemConverter( rItemPool )
60cdf0e10cSrcweir {
61cdf0e10cSrcweir     Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
62cdf0e10cSrcweir     Sequence< Reference< XAxis > > aElementList( AxisHelper::getAllAxesOfDiagram( xDiagram ) );
63cdf0e10cSrcweir     for( sal_Int32 nA = 0; nA < aElementList.getLength(); nA++ )
64cdf0e10cSrcweir     {
65cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xObjectProperties(aElementList[nA], uno::UNO_QUERY);
66cdf0e10cSrcweir         if( pRefSize.get())
67cdf0e10cSrcweir             m_aConverters.push_back( new ::chart::wrapper::AxisItemConverter(
68cdf0e10cSrcweir                                          xObjectProperties, rItemPool, rDrawModel,
69cdf0e10cSrcweir                                          uno::Reference< chart2::XChartDocument >( xChartModel, uno::UNO_QUERY ), 0, 0,
70cdf0e10cSrcweir                                          ::std::auto_ptr< awt::Size >( new awt::Size( *pRefSize )) ));
71cdf0e10cSrcweir         else
72cdf0e10cSrcweir             m_aConverters.push_back( new ::chart::wrapper::AxisItemConverter(
73cdf0e10cSrcweir                                          xObjectProperties, rItemPool, rDrawModel,
74cdf0e10cSrcweir                                          uno::Reference< chart2::XChartDocument >( xChartModel, uno::UNO_QUERY ), 0, 0 ) );
75cdf0e10cSrcweir     }
76cdf0e10cSrcweir }
77cdf0e10cSrcweir 
~AllAxisItemConverter()78cdf0e10cSrcweir AllAxisItemConverter::~AllAxisItemConverter()
79cdf0e10cSrcweir {
80cdf0e10cSrcweir }
81cdf0e10cSrcweir 
GetWhichPairs() const82cdf0e10cSrcweir const sal_uInt16 * AllAxisItemConverter::GetWhichPairs() const
83cdf0e10cSrcweir {
84cdf0e10cSrcweir     // must span all used items!
85cdf0e10cSrcweir     return nAllAxisWhichPairs;
86cdf0e10cSrcweir }
87cdf0e10cSrcweir 
88cdf0e10cSrcweir //-----------------------------------------------------------------------------
89cdf0e10cSrcweir 
AllGridItemConverter(const uno::Reference<frame::XModel> & xChartModel,SfxItemPool & rItemPool,SdrModel & rDrawModel,const uno::Reference<lang::XMultiServiceFactory> & xNamedPropertyContainerFactory)90cdf0e10cSrcweir AllGridItemConverter::AllGridItemConverter(
91cdf0e10cSrcweir     const uno::Reference< frame::XModel > & xChartModel,
92cdf0e10cSrcweir     SfxItemPool& rItemPool,
93cdf0e10cSrcweir     SdrModel& rDrawModel,
94cdf0e10cSrcweir     const uno::Reference< lang::XMultiServiceFactory > & xNamedPropertyContainerFactory )
95cdf0e10cSrcweir         : MultipleItemConverter( rItemPool )
96cdf0e10cSrcweir {
97cdf0e10cSrcweir     Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) );
98cdf0e10cSrcweir     Sequence< Reference< beans::XPropertySet > > aElementList( AxisHelper::getAllGrids( xDiagram ) );
99cdf0e10cSrcweir     for( sal_Int32 nA = 0; nA < aElementList.getLength(); nA++ )
100cdf0e10cSrcweir     {
101cdf0e10cSrcweir         Reference< beans::XPropertySet > xObjectProperties(aElementList[nA]);
102cdf0e10cSrcweir         m_aConverters.push_back( new ::chart::wrapper::GraphicPropertyItemConverter(
103cdf0e10cSrcweir                                         xObjectProperties, rItemPool, rDrawModel, xNamedPropertyContainerFactory,
104cdf0e10cSrcweir                                         ::chart::wrapper::GraphicPropertyItemConverter::LINE_PROPERTIES ) );
105cdf0e10cSrcweir     }
106cdf0e10cSrcweir }
107cdf0e10cSrcweir 
~AllGridItemConverter()108cdf0e10cSrcweir AllGridItemConverter::~AllGridItemConverter()
109cdf0e10cSrcweir {
110cdf0e10cSrcweir }
111cdf0e10cSrcweir 
GetWhichPairs() const112cdf0e10cSrcweir const sal_uInt16 * AllGridItemConverter::GetWhichPairs() const
113cdf0e10cSrcweir {
114cdf0e10cSrcweir     // must span all used items!
115cdf0e10cSrcweir     return nGridWhichPairs;
116cdf0e10cSrcweir }
117cdf0e10cSrcweir 
118cdf0e10cSrcweir //-----------------------------------------------------------------------------
119cdf0e10cSrcweir 
AllDataLabelItemConverter(const uno::Reference<frame::XModel> & xChartModel,SfxItemPool & rItemPool,SdrModel & rDrawModel,const uno::Reference<lang::XMultiServiceFactory> & xNamedPropertyContainerFactory,::std::auto_ptr<awt::Size> pRefSize)120cdf0e10cSrcweir AllDataLabelItemConverter::AllDataLabelItemConverter(
121cdf0e10cSrcweir     const uno::Reference< frame::XModel > & xChartModel,
122cdf0e10cSrcweir     SfxItemPool& rItemPool,
123cdf0e10cSrcweir     SdrModel& rDrawModel,
124cdf0e10cSrcweir     const uno::Reference< lang::XMultiServiceFactory > & xNamedPropertyContainerFactory,
125cdf0e10cSrcweir     ::std::auto_ptr< awt::Size > pRefSize )
126cdf0e10cSrcweir         : MultipleItemConverter( rItemPool )
127cdf0e10cSrcweir {
128cdf0e10cSrcweir     ::std::vector< uno::Reference< chart2::XDataSeries > > aSeriesList(
129cdf0e10cSrcweir         ::chart::ChartModelHelper::getDataSeries( xChartModel ));
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     ::std::vector< uno::Reference< chart2::XDataSeries > >::const_iterator aIt;
132cdf0e10cSrcweir     for( aIt = aSeriesList.begin(); aIt != aSeriesList.end(); ++aIt )
133cdf0e10cSrcweir     {
134cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xObjectProperties( *aIt, uno::UNO_QUERY);
135cdf0e10cSrcweir         uno::Reference< uno::XComponentContext>	xContext(0);//do not need Context for label properties
136cdf0e10cSrcweir 
137cdf0e10cSrcweir         sal_Int32 nNumberFormat=ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( xObjectProperties, *aIt, -1/*nPointIndex*/, ChartModelHelper::findDiagram( xChartModel ) );
138cdf0e10cSrcweir         sal_Int32 nPercentNumberFormat=ExplicitValueProvider::getExplicitPercentageNumberFormatKeyForDataLabel(
139cdf0e10cSrcweir                 xObjectProperties,uno::Reference< util::XNumberFormatsSupplier >(xChartModel, uno::UNO_QUERY));
140cdf0e10cSrcweir 
141cdf0e10cSrcweir         m_aConverters.push_back( new ::chart::wrapper::DataPointItemConverter(
142cdf0e10cSrcweir                                          xChartModel, xContext,
143cdf0e10cSrcweir                                          xObjectProperties, *aIt, rItemPool, rDrawModel, NULL,
144cdf0e10cSrcweir                                          xNamedPropertyContainerFactory,
145cdf0e10cSrcweir                                          GraphicPropertyItemConverter::FILLED_DATA_POINT,
146cdf0e10cSrcweir                                          ::std::auto_ptr< awt::Size >( pRefSize.get() ? new awt::Size( *pRefSize ) : 0),
147cdf0e10cSrcweir                                          true, /*bDataSeries*/
148cdf0e10cSrcweir                                          false, /*bUseSpecialFillColor*/
149cdf0e10cSrcweir                                          0, /*nSpecialFillColor*/
150cdf0e10cSrcweir                                          true /*bOverwriteLabelsForAttributedDataPointsAlso*/,
151cdf0e10cSrcweir                                          nNumberFormat, nPercentNumberFormat
152cdf0e10cSrcweir                                          ));
153cdf0e10cSrcweir     }
154cdf0e10cSrcweir }
155cdf0e10cSrcweir 
~AllDataLabelItemConverter()156cdf0e10cSrcweir AllDataLabelItemConverter::~AllDataLabelItemConverter()
157cdf0e10cSrcweir {
158cdf0e10cSrcweir }
159cdf0e10cSrcweir 
GetWhichPairs() const160cdf0e10cSrcweir const sal_uInt16 * AllDataLabelItemConverter::GetWhichPairs() const
161cdf0e10cSrcweir {
162cdf0e10cSrcweir     // must span all used items!
163cdf0e10cSrcweir     return nDataLabelWhichPairs;
164cdf0e10cSrcweir }
165cdf0e10cSrcweir 
166cdf0e10cSrcweir //-----------------------------------------------------------------------------
167cdf0e10cSrcweir 
AllTitleItemConverter(const uno::Reference<frame::XModel> & xChartModel,SfxItemPool & rItemPool,SdrModel & rDrawModel,const uno::Reference<lang::XMultiServiceFactory> & xNamedPropertyContainerFactory,::std::auto_ptr<awt::Size> pRefSize)168cdf0e10cSrcweir AllTitleItemConverter::AllTitleItemConverter(
169cdf0e10cSrcweir     const uno::Reference< frame::XModel > & xChartModel,
170cdf0e10cSrcweir     SfxItemPool& rItemPool,
171cdf0e10cSrcweir     SdrModel& rDrawModel,
172cdf0e10cSrcweir     const uno::Reference< lang::XMultiServiceFactory > & xNamedPropertyContainerFactory,
173cdf0e10cSrcweir     ::std::auto_ptr< awt::Size > pRefSize )
174cdf0e10cSrcweir         : MultipleItemConverter( rItemPool )
175cdf0e10cSrcweir {
176cdf0e10cSrcweir     for(sal_Int32 nTitle = TitleHelper::TITLE_BEGIN; nTitle < TitleHelper::NORMAL_TITLE_END; nTitle++ )
177cdf0e10cSrcweir     {
178cdf0e10cSrcweir         uno::Reference< chart2::XTitle > xTitle( TitleHelper::getTitle( TitleHelper::eTitleType(nTitle), xChartModel ) );
179cdf0e10cSrcweir         if(!xTitle.is())
180cdf0e10cSrcweir             continue;
181cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xObjectProperties( xTitle, uno::UNO_QUERY);
182cdf0e10cSrcweir         ::std::auto_ptr< awt::Size > pSingleRefSize(0);
183cdf0e10cSrcweir         if( pRefSize.get())
184cdf0e10cSrcweir             pSingleRefSize = ::std::auto_ptr< awt::Size >( new awt::Size( *pRefSize ));
185cdf0e10cSrcweir         m_aConverters.push_back( new ::chart::wrapper::TitleItemConverter(
186cdf0e10cSrcweir                                      xObjectProperties, rItemPool, rDrawModel, xNamedPropertyContainerFactory, pSingleRefSize ));
187cdf0e10cSrcweir     }
188cdf0e10cSrcweir }
189cdf0e10cSrcweir 
~AllTitleItemConverter()190cdf0e10cSrcweir AllTitleItemConverter::~AllTitleItemConverter()
191cdf0e10cSrcweir {
192cdf0e10cSrcweir }
193cdf0e10cSrcweir 
GetWhichPairs() const194cdf0e10cSrcweir const sal_uInt16 * AllTitleItemConverter::GetWhichPairs() const
195cdf0e10cSrcweir {
196cdf0e10cSrcweir     // must span all used items!
197cdf0e10cSrcweir     return nTitleWhichPairs;
198cdf0e10cSrcweir }
199cdf0e10cSrcweir 
200cdf0e10cSrcweir //-----------------------------------------------------------------------------
201cdf0e10cSrcweir 
AllSeriesStatisticsConverter(const uno::Reference<frame::XModel> & xChartModel,SfxItemPool & rItemPool)202cdf0e10cSrcweir AllSeriesStatisticsConverter::AllSeriesStatisticsConverter(
203cdf0e10cSrcweir     const uno::Reference< frame::XModel > & xChartModel,
204cdf0e10cSrcweir     SfxItemPool& rItemPool )
205cdf0e10cSrcweir         : MultipleItemConverter( rItemPool )
206cdf0e10cSrcweir {
207cdf0e10cSrcweir     ::std::vector< uno::Reference< chart2::XDataSeries > > aSeriesList(
208cdf0e10cSrcweir         ::chart::ChartModelHelper::getDataSeries( xChartModel ));
209cdf0e10cSrcweir 
210cdf0e10cSrcweir     ::std::vector< uno::Reference< chart2::XDataSeries > >::const_iterator aIt;
211cdf0e10cSrcweir     for( aIt = aSeriesList.begin(); aIt != aSeriesList.end(); ++aIt )
212cdf0e10cSrcweir     {
213cdf0e10cSrcweir         uno::Reference< beans::XPropertySet > xObjectProperties( *aIt, uno::UNO_QUERY);
214cdf0e10cSrcweir         m_aConverters.push_back( new ::chart::wrapper::StatisticsItemConverter(
215cdf0e10cSrcweir                                      xChartModel, xObjectProperties, rItemPool ));
216cdf0e10cSrcweir     }
217cdf0e10cSrcweir }
218cdf0e10cSrcweir 
~AllSeriesStatisticsConverter()219cdf0e10cSrcweir AllSeriesStatisticsConverter::~AllSeriesStatisticsConverter()
220cdf0e10cSrcweir {}
221cdf0e10cSrcweir 
GetWhichPairs() const222cdf0e10cSrcweir const sal_uInt16 * AllSeriesStatisticsConverter::GetWhichPairs() const
223cdf0e10cSrcweir {
224cdf0e10cSrcweir     // must span all used items!
225cdf0e10cSrcweir     return nStatWhichPairs;
226cdf0e10cSrcweir }
227cdf0e10cSrcweir 
228cdf0e10cSrcweir } //  namespace wrapper
229cdf0e10cSrcweir } //  namespace chart
230