xref: /AOO41X/main/xmloff/source/chart/SchXMLPlotAreaContext.hxx (revision ecfe53c5d1886e1e0d215b0d140d05282ab1c477)
1*ecfe53c5SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*ecfe53c5SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*ecfe53c5SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*ecfe53c5SAndrew Rist  * distributed with this work for additional information
6*ecfe53c5SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*ecfe53c5SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*ecfe53c5SAndrew Rist  * "License"); you may not use this file except in compliance
9*ecfe53c5SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*ecfe53c5SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*ecfe53c5SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*ecfe53c5SAndrew Rist  * software distributed under the License is distributed on an
15*ecfe53c5SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ecfe53c5SAndrew Rist  * KIND, either express or implied.  See the License for the
17*ecfe53c5SAndrew Rist  * specific language governing permissions and limitations
18*ecfe53c5SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*ecfe53c5SAndrew Rist  *************************************************************/
21*ecfe53c5SAndrew Rist 
22*ecfe53c5SAndrew Rist 
23cdf0e10cSrcweir #ifndef _SCH_XMLPLOTAREACONTEXT_HXX_
24cdf0e10cSrcweir #define _SCH_XMLPLOTAREACONTEXT_HXX_
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include "SchXMLImport.hxx"
27cdf0e10cSrcweir #include "SchXMLChartContext.hxx"
28cdf0e10cSrcweir #include <xmloff/xmlictxt.hxx>
29cdf0e10cSrcweir #include <xmloff/shapeimport.hxx>
30cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
31cdf0e10cSrcweir #include <com/sun/star/chart/ChartSeriesAddress.hpp>
32cdf0e10cSrcweir #include <com/sun/star/chart/ChartDataRowSource.hpp>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include "transporttypes.hxx"
35cdf0e10cSrcweir 
36cdf0e10cSrcweir class SvXMLImport;
37cdf0e10cSrcweir 
38cdf0e10cSrcweir namespace com { namespace sun { namespace star {
39cdf0e10cSrcweir 	namespace chart {
40cdf0e10cSrcweir 		class XDiagram;
41cdf0e10cSrcweir 		class X3DDisplay;
42cdf0e10cSrcweir         class XStatisticDisplay;
43cdf0e10cSrcweir 	}
44cdf0e10cSrcweir     namespace chart2 {
45cdf0e10cSrcweir         class XChartDocument;
46cdf0e10cSrcweir     }
47cdf0e10cSrcweir 	namespace xml { namespace sax {
48cdf0e10cSrcweir 		class XAttributeList;
49cdf0e10cSrcweir }}}}}
50cdf0e10cSrcweir 
51cdf0e10cSrcweir // ----------------------------------------
52cdf0e10cSrcweir 
53cdf0e10cSrcweir class SchXML3DSceneAttributesHelper : public SdXML3DSceneAttributesHelper
54cdf0e10cSrcweir {
55cdf0e10cSrcweir public:
56cdf0e10cSrcweir     SchXML3DSceneAttributesHelper( SvXMLImport& rImporter );
57cdf0e10cSrcweir     virtual ~SchXML3DSceneAttributesHelper();
58cdf0e10cSrcweir 
59cdf0e10cSrcweir     void getCameraDefaultFromDiagram( const ::com::sun::star::uno::Reference< com::sun::star::chart::XDiagram >& xDiagram );
60cdf0e10cSrcweir 
61cdf0e10cSrcweir private:
62cdf0e10cSrcweir     SchXML3DSceneAttributesHelper();
63cdf0e10cSrcweir };
64cdf0e10cSrcweir 
65cdf0e10cSrcweir // ----------------------------------------
66cdf0e10cSrcweir 
67cdf0e10cSrcweir class SchXMLPositonAttributesHelper
68cdf0e10cSrcweir {
69cdf0e10cSrcweir public:
70cdf0e10cSrcweir 	SchXMLPositonAttributesHelper( SvXMLImport& rImporter );
71cdf0e10cSrcweir 	~SchXMLPositonAttributesHelper();
72cdf0e10cSrcweir 
73cdf0e10cSrcweir 	bool readPositioningAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
74cdf0e10cSrcweir     void readAutomaticPositioningProperties( XMLPropStyleContext* pPropStyleContext, const SvXMLStylesContext* pStylesCtxt );
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     bool hasPosSize() const;
77cdf0e10cSrcweir     bool isAutomatic() const;
78cdf0e10cSrcweir     ::com::sun::star::awt::Rectangle getRectangle() const;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 
81cdf0e10cSrcweir private:
82cdf0e10cSrcweir     bool hasSize() const;
83cdf0e10cSrcweir     bool hasPosition() const;
84cdf0e10cSrcweir     ::com::sun::star::awt::Size getSize() const;
85cdf0e10cSrcweir     ::com::sun::star::awt::Point getPosition() const;
86cdf0e10cSrcweir 
87cdf0e10cSrcweir 	SvXMLImport& m_rImport;
88cdf0e10cSrcweir 
89cdf0e10cSrcweir 	::com::sun::star::awt::Point m_aPosition;
90cdf0e10cSrcweir     ::com::sun::star::awt::Size m_aSize;
91cdf0e10cSrcweir 
92cdf0e10cSrcweir     bool m_bHasSizeWidth;
93cdf0e10cSrcweir     bool m_bHasSizeHeight;
94cdf0e10cSrcweir     bool m_bHasPositionX;
95cdf0e10cSrcweir     bool m_bHasPositionY;
96cdf0e10cSrcweir     sal_Bool m_bAutoSize;
97cdf0e10cSrcweir     sal_Bool m_bAutoPosition;
98cdf0e10cSrcweir };
99cdf0e10cSrcweir 
100cdf0e10cSrcweir // ----------------------------------------
101cdf0e10cSrcweir 
102cdf0e10cSrcweir class SchXMLPlotAreaContext : public SvXMLImportContext
103cdf0e10cSrcweir {
104cdf0e10cSrcweir public:
105cdf0e10cSrcweir 	SchXMLPlotAreaContext( SchXMLImportHelper& rImpHelper,
106cdf0e10cSrcweir 						   SvXMLImport& rImport, const rtl::OUString& rLocalName,
107cdf0e10cSrcweir                            const rtl::OUString& rXLinkHRefAttributeToIndicateDataProvider,
108cdf0e10cSrcweir 						   ::com::sun::star::uno::Sequence<
109cdf0e10cSrcweir 						       ::com::sun::star::chart::ChartSeriesAddress >& rSeriesAddresses,
110cdf0e10cSrcweir 						   ::rtl::OUString& rCategoriesAddress,
111cdf0e10cSrcweir                            ::rtl::OUString& rChartAddress,
112cdf0e10cSrcweir                            bool& bHasRangeAtPlotArea,
113cdf0e10cSrcweir                            sal_Bool & rAllRangeAddressesAvailable,
114cdf0e10cSrcweir                            sal_Bool & rColHasLabels,
115cdf0e10cSrcweir                            sal_Bool & rRowHasLabels,
116cdf0e10cSrcweir                            ::com::sun::star::chart::ChartDataRowSource & rDataRowSource,
117cdf0e10cSrcweir                            SeriesDefaultsAndStyles& rSeriesDefaultsAndStyles,
118cdf0e10cSrcweir                            const ::rtl::OUString& aChartTypeServiceName,
119cdf0e10cSrcweir                            tSchXMLLSequencesPerIndex & rLSequencesPerIndex,
120cdf0e10cSrcweir                            const ::com::sun::star::awt::Size & rChartSize );
121cdf0e10cSrcweir 	virtual ~SchXMLPlotAreaContext();
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 	virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
124cdf0e10cSrcweir 	virtual SvXMLImportContext* CreateChildContext(
125cdf0e10cSrcweir 		sal_uInt16 nPrefix,
126cdf0e10cSrcweir 		const rtl::OUString& rLocalName,
127cdf0e10cSrcweir 		const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
128cdf0e10cSrcweir 	virtual void EndElement();
129cdf0e10cSrcweir 
130cdf0e10cSrcweir private:
131cdf0e10cSrcweir 	SchXMLImportHelper& mrImportHelper;
132cdf0e10cSrcweir 	::com::sun::star::uno::Reference< com::sun::star::chart::XDiagram > mxDiagram;
133cdf0e10cSrcweir 	::com::sun::star::uno::Reference< com::sun::star::chart2::XChartDocument > mxNewDoc;
134cdf0e10cSrcweir 	::std::vector< SchXMLAxis > maAxes;
135cdf0e10cSrcweir 	::com::sun::star::uno::Sequence< ::com::sun::star::chart::ChartSeriesAddress >& mrSeriesAddresses;
136cdf0e10cSrcweir 	rtl::OUString& mrCategoriesAddress;
137cdf0e10cSrcweir     SeriesDefaultsAndStyles& mrSeriesDefaultsAndStyles;
138cdf0e10cSrcweir     sal_Int32 mnNumOfLinesProp;
139cdf0e10cSrcweir     sal_Bool  mbStockHasVolume;
140cdf0e10cSrcweir 	sal_Int32 mnSeries;
141cdf0e10cSrcweir     GlobalSeriesImportInfo m_aGlobalSeriesImportInfo;
142cdf0e10cSrcweir 
143cdf0e10cSrcweir 	SchXML3DSceneAttributesHelper maSceneImportHelper;
144cdf0e10cSrcweir 	SchXMLPositonAttributesHelper m_aOuterPositioning;//including axes and axes titles
145cdf0e10cSrcweir     SchXMLPositonAttributesHelper m_aInnerPositioning;//excluding axes and axes titles
146cdf0e10cSrcweir     bool mbPercentStacked;
147cdf0e10cSrcweir     bool m_bAxisPositionAttributeImported;
148cdf0e10cSrcweir 	::rtl::OUString msAutoStyleName;
149cdf0e10cSrcweir     const ::rtl::OUString& m_rXLinkHRefAttributeToIndicateDataProvider;
150cdf0e10cSrcweir     ::rtl::OUString& mrChartAddress;
151cdf0e10cSrcweir     bool& m_rbHasRangeAtPlotArea;
152cdf0e10cSrcweir     sal_Bool & mrColHasLabels;
153cdf0e10cSrcweir     sal_Bool & mrRowHasLabels;
154cdf0e10cSrcweir     ::com::sun::star::chart::ChartDataRowSource & mrDataRowSource;
155cdf0e10cSrcweir     ::rtl::OUString maChartTypeServiceName;
156cdf0e10cSrcweir 
157cdf0e10cSrcweir     tSchXMLLSequencesPerIndex & mrLSequencesPerIndex;
158cdf0e10cSrcweir 
159cdf0e10cSrcweir     bool mbGlobalChartTypeUsedBySeries;
160cdf0e10cSrcweir     ::com::sun::star::awt::Size maChartSize;
161cdf0e10cSrcweir };
162cdf0e10cSrcweir 
163cdf0e10cSrcweir //----------------------------------------
164cdf0e10cSrcweir 
165cdf0e10cSrcweir class SchXMLDataPointContext : public SvXMLImportContext
166cdf0e10cSrcweir {
167cdf0e10cSrcweir private:
168cdf0e10cSrcweir 	SchXMLImportHelper& mrImportHelper;
169cdf0e10cSrcweir 	::std::list< DataRowPointStyle >& mrStyleList;
170cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
171cdf0e10cSrcweir                 ::com::sun::star::chart2::XDataSeries > m_xSeries;
172cdf0e10cSrcweir     sal_Int32& mrIndex;
173cdf0e10cSrcweir     bool mbSymbolSizeForSeriesIsMissingInFile;
174cdf0e10cSrcweir 
175cdf0e10cSrcweir public:
176cdf0e10cSrcweir 	SchXMLDataPointContext(  SchXMLImportHelper& rImpHelper,
177cdf0e10cSrcweir 							 SvXMLImport& rImport, const rtl::OUString& rLocalName,
178cdf0e10cSrcweir 							 ::std::list< DataRowPointStyle >& rStyleList,
179cdf0e10cSrcweir                              const ::com::sun::star::uno::Reference<
180cdf0e10cSrcweir                                 ::com::sun::star::chart2::XDataSeries >& xSeries, sal_Int32& rIndex,
181cdf0e10cSrcweir                                 bool bSymbolSizeForSeriesIsMissingInFile );
182cdf0e10cSrcweir 	virtual ~SchXMLDataPointContext();
183cdf0e10cSrcweir 
184cdf0e10cSrcweir 	virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
185cdf0e10cSrcweir };
186cdf0e10cSrcweir 
187cdf0e10cSrcweir // ----------------------------------------
188cdf0e10cSrcweir 
189cdf0e10cSrcweir class SchXMLCoordinateRegionContext : public SvXMLImportContext
190cdf0e10cSrcweir {
191cdf0e10cSrcweir public:
192cdf0e10cSrcweir     SchXMLCoordinateRegionContext(
193cdf0e10cSrcweir             SvXMLImport& rImport
194cdf0e10cSrcweir             , sal_uInt16 nPrefix
195cdf0e10cSrcweir             , const rtl::OUString& rLocalName
196cdf0e10cSrcweir             , SchXMLPositonAttributesHelper& rPositioning );
197cdf0e10cSrcweir     virtual ~SchXMLCoordinateRegionContext();
198cdf0e10cSrcweir     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
199cdf0e10cSrcweir 
200cdf0e10cSrcweir private:
201cdf0e10cSrcweir 	SchXMLPositonAttributesHelper& m_rPositioning;
202cdf0e10cSrcweir };
203cdf0e10cSrcweir 
204cdf0e10cSrcweir // ----------------------------------------
205cdf0e10cSrcweir 
206cdf0e10cSrcweir class SchXMLWallFloorContext : public SvXMLImportContext
207cdf0e10cSrcweir {
208cdf0e10cSrcweir public:
209cdf0e10cSrcweir 	enum ContextType
210cdf0e10cSrcweir 	{
211cdf0e10cSrcweir 		CONTEXT_TYPE_WALL,
212cdf0e10cSrcweir 		CONTEXT_TYPE_FLOOR
213cdf0e10cSrcweir 	};
214cdf0e10cSrcweir 
215cdf0e10cSrcweir private:
216cdf0e10cSrcweir 	SchXMLImportHelper& mrImportHelper;
217cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::chart::X3DDisplay > mxWallFloorSupplier;
218cdf0e10cSrcweir 	ContextType meContextType;
219cdf0e10cSrcweir 
220cdf0e10cSrcweir public:
221cdf0e10cSrcweir 	SchXMLWallFloorContext( SchXMLImportHelper& rImportHelper,
222cdf0e10cSrcweir 							SvXMLImport& rImport,
223cdf0e10cSrcweir 							sal_uInt16 nPrefix,
224cdf0e10cSrcweir 							const rtl::OUString& rLocalName,
225cdf0e10cSrcweir 							::com::sun::star::uno::Reference< ::com::sun::star::chart::XDiagram >& xDiagram,
226cdf0e10cSrcweir 							ContextType eContextType );
227cdf0e10cSrcweir 	virtual ~SchXMLWallFloorContext();
228cdf0e10cSrcweir 	virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
229cdf0e10cSrcweir };
230cdf0e10cSrcweir 
231cdf0e10cSrcweir // ----------------------------------------
232cdf0e10cSrcweir 
233cdf0e10cSrcweir class SchXMLStockContext : public SvXMLImportContext
234cdf0e10cSrcweir {
235cdf0e10cSrcweir public:
236cdf0e10cSrcweir 	enum ContextType
237cdf0e10cSrcweir 	{
238cdf0e10cSrcweir 		CONTEXT_TYPE_GAIN,
239cdf0e10cSrcweir 		CONTEXT_TYPE_LOSS,
240cdf0e10cSrcweir 		CONTEXT_TYPE_RANGE
241cdf0e10cSrcweir 	};
242cdf0e10cSrcweir 
243cdf0e10cSrcweir private:
244cdf0e10cSrcweir 	SchXMLImportHelper& mrImportHelper;
245cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::chart::XStatisticDisplay > mxStockPropProvider;
246cdf0e10cSrcweir 	ContextType meContextType;
247cdf0e10cSrcweir 
248cdf0e10cSrcweir public:
249cdf0e10cSrcweir 	SchXMLStockContext( SchXMLImportHelper& rImportHelper,
250cdf0e10cSrcweir                         SvXMLImport& rImport,
251cdf0e10cSrcweir                         sal_uInt16 nPrefix,
252cdf0e10cSrcweir                         const rtl::OUString& rLocalName,
253cdf0e10cSrcweir                         ::com::sun::star::uno::Reference< ::com::sun::star::chart::XDiagram >& xDiagram,
254cdf0e10cSrcweir                         ContextType eContextType );
255cdf0e10cSrcweir 	virtual ~SchXMLStockContext();
256cdf0e10cSrcweir 	virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
257cdf0e10cSrcweir };
258cdf0e10cSrcweir 
259cdf0e10cSrcweir // ----------------------------------------
260cdf0e10cSrcweir 
261cdf0e10cSrcweir class SchXMLStatisticsObjectContext : public SvXMLImportContext
262cdf0e10cSrcweir {
263cdf0e10cSrcweir public:
264cdf0e10cSrcweir     enum ContextType
265cdf0e10cSrcweir     {
266cdf0e10cSrcweir         CONTEXT_TYPE_MEAN_VALUE_LINE,
267cdf0e10cSrcweir         CONTEXT_TYPE_REGRESSION_CURVE,
268cdf0e10cSrcweir         CONTEXT_TYPE_ERROR_INDICATOR
269cdf0e10cSrcweir     };
270cdf0e10cSrcweir 
271cdf0e10cSrcweir     SchXMLStatisticsObjectContext(
272cdf0e10cSrcweir         SchXMLImportHelper& rImportHelper,
273cdf0e10cSrcweir         SvXMLImport& rImport,
274cdf0e10cSrcweir         sal_uInt16 nPrefix,
275cdf0e10cSrcweir         const rtl::OUString& rLocalName,
276cdf0e10cSrcweir         ::std::list< DataRowPointStyle >& rStyleList,
277cdf0e10cSrcweir         const ::com::sun::star::uno::Reference<
278cdf0e10cSrcweir                 ::com::sun::star::chart2::XDataSeries >& xSeries,
279cdf0e10cSrcweir         ContextType eContextType,
280cdf0e10cSrcweir         const ::com::sun::star::awt::Size & rChartSize );
281cdf0e10cSrcweir 
282cdf0e10cSrcweir     virtual ~SchXMLStatisticsObjectContext();
283cdf0e10cSrcweir 
284cdf0e10cSrcweir 	virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
285cdf0e10cSrcweir 	virtual SvXMLImportContext* CreateChildContext(
286cdf0e10cSrcweir 		sal_uInt16 nPrefix,
287cdf0e10cSrcweir 		const rtl::OUString& rLocalName,
288cdf0e10cSrcweir 		const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
289cdf0e10cSrcweir 
290cdf0e10cSrcweir private:
291cdf0e10cSrcweir     SchXMLImportHelper &                           mrImportHelper;
292cdf0e10cSrcweir 	::std::list< DataRowPointStyle > &             mrStyleList;
293cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
294cdf0e10cSrcweir                 ::com::sun::star::chart2::XDataSeries > m_xSeries;
295cdf0e10cSrcweir 	ContextType                                    meContextType;
296cdf0e10cSrcweir     ::com::sun::star::awt::Size                    maChartSize;
297cdf0e10cSrcweir };
298cdf0e10cSrcweir 
299cdf0e10cSrcweir // ----------------------------------------
300cdf0e10cSrcweir 
301cdf0e10cSrcweir class SchXMLEquationContext : public SvXMLImportContext
302cdf0e10cSrcweir {
303cdf0e10cSrcweir public:
304cdf0e10cSrcweir     SchXMLEquationContext(
305cdf0e10cSrcweir         SchXMLImportHelper& rImportHelper,
306cdf0e10cSrcweir         SvXMLImport& rImport,
307cdf0e10cSrcweir         sal_uInt16 nPrefix,
308cdf0e10cSrcweir         const rtl::OUString& rLocalName,
309cdf0e10cSrcweir         const ::com::sun::star::uno::Reference<
310cdf0e10cSrcweir                 ::com::sun::star::chart2::XDataSeries >& xSeries,
311cdf0e10cSrcweir         const ::com::sun::star::awt::Size & rChartSize,
312cdf0e10cSrcweir         DataRowPointStyle & rRegressionStyle );
313cdf0e10cSrcweir 
314cdf0e10cSrcweir     virtual ~SchXMLEquationContext();
315cdf0e10cSrcweir 
316cdf0e10cSrcweir 	virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
317cdf0e10cSrcweir 
318cdf0e10cSrcweir private:
319cdf0e10cSrcweir     SchXMLImportHelper &                           mrImportHelper;
320cdf0e10cSrcweir     DataRowPointStyle &                            mrRegressionStyle;
321cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
322cdf0e10cSrcweir                 ::com::sun::star::chart2::XDataSeries > m_xSeries;
323cdf0e10cSrcweir     ::com::sun::star::awt::Size maChartSize;
324cdf0e10cSrcweir };
325cdf0e10cSrcweir 
326cdf0e10cSrcweir #endif	// _SCH_XMLPLOTAREACONTEXT_HXX_
327