xref: /trunk/main/starmath/source/mathmlimport.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _MATHMLIMPORT_HXX_
25 #define _MATHMLIMPORT_HXX_
26 
27 #include <xmloff/xmlimp.hxx>
28 #include <xmloff/xmlexp.hxx>
29 #include <xmloff/DocumentSettingsContext.hxx>
30 #include <xmloff/xmltoken.hxx>
31 
32 #include <node.hxx>
33 
34 class SfxMedium;
35 namespace com { namespace sun { namespace star {
36     namespace io {
37         class XInputStream;
38         class XOutputStream; }
39     namespace beans {
40         class XPropertySet; }
41 } } }
42 
43 ////////////////////////////////////////////////////////////
44 
45 class SmXMLImportWrapper
46 {
47     com::sun::star::uno::Reference<com::sun::star::frame::XModel> xModel;
48 
49 public:
SmXMLImportWrapper(com::sun::star::uno::Reference<com::sun::star::frame::XModel> & rRef)50     SmXMLImportWrapper(com::sun::star::uno::Reference<com::sun::star::frame::XModel> &rRef)
51         : xModel(rRef) {}
52 
53     sal_uLong Import(SfxMedium &rMedium);
54 
55     sal_uLong ReadThroughComponent(
56         ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > xInputStream,
57         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > xModelComponent,
58         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rFactory,
59         ::com::sun::star::uno::Reference<
60             ::com::sun::star::beans::XPropertySet > & rPropSet,
61         const sal_Char* pFilterName,
62         sal_Bool bEncrypted );
63 
64     sal_uLong ReadThroughComponent(
65          const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
66                 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > xModelComponent,
67         const sal_Char* pStreamName,
68         const sal_Char* pCompatibilityStreamName,
69         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rFactory,
70         ::com::sun::star::uno::Reference<
71             ::com::sun::star::beans::XPropertySet > & rPropSet,
72         const sal_Char* pFilterName );
73 };
74 
75 ////////////////////////////////////////////////////////////
76 
77 class SmXMLImport : public SvXMLImport
78 {
79         SvXMLTokenMap *pPresLayoutElemTokenMap;
80         SvXMLTokenMap *pPresLayoutAttrTokenMap;
81         SvXMLTokenMap *pFencedAttrTokenMap;
82         SvXMLTokenMap *pOperatorAttrTokenMap;
83         SvXMLTokenMap *pAnnotationAttrTokenMap;
84         SvXMLTokenMap *pPresElemTokenMap;
85         SvXMLTokenMap *pPresScriptEmptyElemTokenMap;
86         SvXMLTokenMap *pPresTableElemTokenMap;
87         SvXMLTokenMap *pColorTokenMap;
88 
89         SmNodeStack aNodeStack;
90         sal_Bool bSuccess;
91         String aText;
92 
93 public:
94     // #110680#
95     SmXMLImport(
96         const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceFactory,
97         sal_uInt16 nImportFlags=IMPORT_ALL);
98     virtual ~SmXMLImport() throw ();
99 
100     // XServiceInfo (override parent method)
101     ::rtl::OUString SAL_CALL getImplementationName();
102 
103     // XUnoTunnel
104     sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId );
105     static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw();
106 
107     void SAL_CALL endDocument(void);
108 
109     SvXMLImportContext *CreateContext(sal_uInt16 nPrefix,
110         const rtl::OUString &rLocalName,
111         const com::sun::star::uno::Reference <
112         com::sun::star::xml::sax::XAttributeList> &xAttrList);
113     SvXMLImportContext *CreateMathContext(sal_uInt16 nPrefix,
114         const rtl::OUString &rLocalName,
115         const com::sun::star::uno::Reference <
116         com::sun::star::xml::sax::XAttributeList> &xAttrList);
117     SvXMLImportContext *CreateRowContext(sal_uInt16 nPrefix,
118         const rtl::OUString &rLocalName,
119         const com::sun::star::uno::Reference <
120         com::sun::star::xml::sax::XAttributeList> &xAttrList);
121     SvXMLImportContext *CreateFracContext(sal_uInt16 nPrefix,
122         const rtl::OUString &rLocalName,
123         const com::sun::star::uno::Reference <
124         com::sun::star::xml::sax::XAttributeList> &xAttrList);
125     SvXMLImportContext *CreateNumberContext(sal_uInt16 nPrefix,
126         const rtl::OUString &rLocalName,
127         const com::sun::star::uno::Reference <
128         com::sun::star::xml::sax::XAttributeList> &xAttrList);
129     SvXMLImportContext *CreateTextContext(sal_uInt16 nPrefix,
130         const rtl::OUString &rLocalName,
131         const com::sun::star::uno::Reference <
132         com::sun::star::xml::sax::XAttributeList> &xAttrList);
133     SvXMLImportContext *CreateAnnotationContext(sal_uInt16 nPrefix,
134         const rtl::OUString &rLocalName,
135         const com::sun::star::uno::Reference <
136         com::sun::star::xml::sax::XAttributeList> &xAttrList);
137     SvXMLImportContext *CreateStringContext(sal_uInt16 nPrefix,
138         const rtl::OUString &rLocalName,
139         const com::sun::star::uno::Reference <
140         com::sun::star::xml::sax::XAttributeList> &xAttrList);
141     SvXMLImportContext *CreateIdentifierContext(sal_uInt16 nPrefix,
142         const rtl::OUString &rLocalName,
143         const com::sun::star::uno::Reference <
144         com::sun::star::xml::sax::XAttributeList> &xAttrList);
145     SvXMLImportContext *CreateOperatorContext(sal_uInt16 nPrefix,
146         const rtl::OUString &rLocalName,
147         const com::sun::star::uno::Reference <
148         com::sun::star::xml::sax::XAttributeList> &xAttrList);
149     SvXMLImportContext *CreateSpaceContext(sal_uInt16 nPrefix,
150         const rtl::OUString &rLocalName,
151         const com::sun::star::uno::Reference <
152         com::sun::star::xml::sax::XAttributeList> &xAttrList);
153     SvXMLImportContext *CreateSqrtContext(sal_uInt16 nPrefix,
154         const rtl::OUString &rLocalName,
155         const com::sun::star::uno::Reference <
156         com::sun::star::xml::sax::XAttributeList> &xAttrList);
157     SvXMLImportContext *CreateRootContext(sal_uInt16 nPrefix,
158         const rtl::OUString &rLocalName,
159         const com::sun::star::uno::Reference <
160         com::sun::star::xml::sax::XAttributeList> &xAttrList);
161     SvXMLImportContext *CreateStyleContext(sal_uInt16 nPrefix,
162         const rtl::OUString &rLocalName,
163         const com::sun::star::uno::Reference <
164         com::sun::star::xml::sax::XAttributeList> &xAttrList);
165     SvXMLImportContext *CreatePaddedContext(sal_uInt16 nPrefix,
166         const rtl::OUString &rLocalName,
167         const com::sun::star::uno::Reference <
168         com::sun::star::xml::sax::XAttributeList> &xAttrList);
169     SvXMLImportContext *CreatePhantomContext(sal_uInt16 nPrefix,
170         const rtl::OUString &rLocalName,
171         const com::sun::star::uno::Reference <
172         com::sun::star::xml::sax::XAttributeList> &xAttrList);
173     SvXMLImportContext *CreateFencedContext(sal_uInt16 nPrefix,
174         const rtl::OUString &rLocalName,
175         const com::sun::star::uno::Reference <
176         com::sun::star::xml::sax::XAttributeList> &xAttrList);
177     SvXMLImportContext *CreateErrorContext(sal_uInt16 nPrefix,
178         const rtl::OUString &rLocalName,
179         const com::sun::star::uno::Reference <
180         com::sun::star::xml::sax::XAttributeList> &xAttrList);
181     SvXMLImportContext *CreateSubContext(sal_uInt16 nPrefix,
182         const rtl::OUString &rLocalName,
183         const com::sun::star::uno::Reference <
184         com::sun::star::xml::sax::XAttributeList> &xAttrList);
185     SvXMLImportContext *CreateSupContext(sal_uInt16 nPrefix,
186         const rtl::OUString &rLocalName,
187         const com::sun::star::uno::Reference <
188         com::sun::star::xml::sax::XAttributeList> &xAttrList);
189     SvXMLImportContext *CreateSubSupContext(sal_uInt16 nPrefix,
190         const rtl::OUString &rLocalName,
191         const com::sun::star::uno::Reference <
192         com::sun::star::xml::sax::XAttributeList> &xAttrList);
193     SvXMLImportContext *CreateUnderContext(sal_uInt16 nPrefix,
194         const rtl::OUString &rLocalName,
195         const com::sun::star::uno::Reference <
196         com::sun::star::xml::sax::XAttributeList> &xAttrList);
197     SvXMLImportContext *CreateOverContext(sal_uInt16 nPrefix,
198         const rtl::OUString &rLocalName,
199         const com::sun::star::uno::Reference <
200         com::sun::star::xml::sax::XAttributeList> &xAttrList);
201     SvXMLImportContext *CreateUnderOverContext(sal_uInt16 nPrefix,
202         const rtl::OUString &rLocalName,
203         const com::sun::star::uno::Reference <
204         com::sun::star::xml::sax::XAttributeList> &xAttrList);
205     SvXMLImportContext *CreateMultiScriptsContext(sal_uInt16 nPrefix,
206         const rtl::OUString &rLocalName,
207         const com::sun::star::uno::Reference <
208         com::sun::star::xml::sax::XAttributeList> &xAttrList);
209     SvXMLImportContext *CreateNoneContext(sal_uInt16 nPrefix,
210         const rtl::OUString &rLocalName,
211         const com::sun::star::uno::Reference <
212         com::sun::star::xml::sax::XAttributeList> &xAttrList);
213     SvXMLImportContext *CreatePrescriptsContext(sal_uInt16 nPrefix,
214         const rtl::OUString &rLocalName,
215         const com::sun::star::uno::Reference <
216         com::sun::star::xml::sax::XAttributeList> &xAttrList);
217     SvXMLImportContext *CreateTableContext(sal_uInt16 nPrefix,
218         const rtl::OUString &rLocalName,
219         const com::sun::star::uno::Reference <
220         com::sun::star::xml::sax::XAttributeList> &xAttrList);
221     SvXMLImportContext *CreateTableRowContext(sal_uInt16 nPrefix,
222         const rtl::OUString &rLocalName,
223         const com::sun::star::uno::Reference <
224         com::sun::star::xml::sax::XAttributeList> &xAttrList);
225     SvXMLImportContext *CreateTableCellContext(sal_uInt16 nPrefix,
226         const rtl::OUString &rLocalName,
227         const com::sun::star::uno::Reference <
228         com::sun::star::xml::sax::XAttributeList> &xAttrList);
229     SvXMLImportContext *CreateAlignGroupContext(sal_uInt16 nPrefix,
230         const rtl::OUString &rLocalName,
231         const com::sun::star::uno::Reference <
232         com::sun::star::xml::sax::XAttributeList> &xAttrList);
233     SvXMLImportContext *CreateActionContext(sal_uInt16 nPrefix,
234         const rtl::OUString &rLocalName,
235         const com::sun::star::uno::Reference <
236         com::sun::star::xml::sax::XAttributeList> &xAttrList);
237 
238     const SvXMLTokenMap &GetPresLayoutElemTokenMap();
239     const SvXMLTokenMap &GetPresLayoutAttrTokenMap();
240     const SvXMLTokenMap &GetFencedAttrTokenMap();
241     const SvXMLTokenMap &GetOperatorAttrTokenMap();
242     const SvXMLTokenMap &GetAnnotationAttrTokenMap();
243     const SvXMLTokenMap &GetPresElemTokenMap();
244     const SvXMLTokenMap &GetPresScriptEmptyElemTokenMap();
245     const SvXMLTokenMap &GetPresTableElemTokenMap();
246     const SvXMLTokenMap &GetColorTokenMap();
247 
GetNodeStack()248     SmNodeStack & GetNodeStack()    { return aNodeStack; }
GetTree()249     SmNode *GetTree()               { return aNodeStack.Pop(); }
GetSuccess()250     sal_Bool GetSuccess()           { return bSuccess; }
GetText()251     String &GetText()               { return aText; }
252 
253     virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps);
254     virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps);
255 };
256 
257 ////////////////////////////////////////////////////////////
258 
259 enum SmXMLMathElemTokenMap
260 {
261     XML_TOK_MATH
262 };
263 
264 enum SmXMLPresLayoutElemTokenMap
265 {
266     XML_TOK_SEMANTICS,
267     XML_TOK_MSTYLE,
268     XML_TOK_MERROR,
269     XML_TOK_MPHANTOM,
270     XML_TOK_MROW,
271     XML_TOK_MFRAC,
272     XML_TOK_MSQRT,
273     XML_TOK_MROOT,
274     XML_TOK_MSUB,
275     XML_TOK_MSUP,
276     XML_TOK_MSUBSUP,
277     XML_TOK_MMULTISCRIPTS,
278     XML_TOK_MUNDER,
279     XML_TOK_MOVER,
280     XML_TOK_MUNDEROVER,
281     XML_TOK_MTABLE,
282     XML_TOK_MACTION,
283     XML_TOK_MFENCED,
284     XML_TOK_MPADDED
285 };
286 
287 enum SmXMLPresLayoutAttrTokenMap
288 {
289     XML_TOK_FONTWEIGHT,
290     XML_TOK_FONTSTYLE,
291     XML_TOK_FONTSIZE,
292     XML_TOK_FONTFAMILY,
293     XML_TOK_COLOR,
294     XML_TOK_MATHCOLOR
295 };
296 
297 
298 enum SmXMLFencedAttrTokenMap
299 {
300     XML_TOK_OPEN,
301     XML_TOK_CLOSE
302 };
303 
304 
305 enum SmXMLPresTableElemTokenMap
306 {
307     XML_TOK_MTR,
308     XML_TOK_MTD
309 };
310 
311 enum SmXMLPresElemTokenMap
312 {
313     XML_TOK_ANNOTATION,
314     XML_TOK_MI,
315     XML_TOK_MN,
316     XML_TOK_MO,
317     XML_TOK_MTEXT,
318     XML_TOK_MSPACE,
319     XML_TOK_MS,
320     XML_TOK_MALIGNGROUP
321 };
322 
323 enum SmXMLPresScriptEmptyElemTokenMap
324 {
325     XML_TOK_MPRESCRIPTS,
326     XML_TOK_NONE
327 };
328 
329 enum SmXMLOperatorAttrTokenMap
330 {
331     XML_TOK_STRETCHY
332 };
333 
334 enum SmXMLAnnotationAttrTokenMap
335 {
336     XML_TOK_ENCODING
337 };
338 
339 ////////////////////////////////////////////////////////////
340 
341 #endif
342