xref: /trunk/main/xmloff/source/draw/ximpshap.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _XIMPSHAPE_HXX
29 #define _XIMPSHAPE_HXX
30 
31 #include <com/sun/star/io/XOutputStream.hpp>
32 #include <com/sun/star/document/XActionLockable.hpp>
33 #include <com/sun/star/container/XIdentifierContainer.hpp>
34 #include <xmloff/xmlictxt.hxx>
35 #include "sdxmlimp_impl.hxx"
36 #include <xmloff/nmspmap.hxx>
37 #include <com/sun/star/drawing/XShapes.hpp>
38 #include <com/sun/star/text/XTextCursor.hpp>
39 #include <com/sun/star/awt/Point.hpp>
40 #include <tools/rtti.hxx>
41 #include "xexptran.hxx"
42 
43 #include <vector>
44 #include <xmloff/shapeimport.hxx>
45 
46 //////////////////////////////////////////////////////////////////////////////
47 // common shape context
48 
49 class SdXMLShapeContext : public SvXMLShapeContext
50 {
51 protected:
52     // the shape group this object should be created inside
53     com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >  mxShapes;
54     com::sun::star::uno::Reference< com::sun::star::text::XTextCursor > mxCursor;
55     com::sun::star::uno::Reference< com::sun::star::text::XTextCursor > mxOldCursor;
56     com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList> mxAttrList;
57     com::sun::star::uno::Reference< com::sun::star::container::XIdentifierContainer > mxGluePoints;
58     com::sun::star::uno::Reference< com::sun::star::document::XActionLockable > mxLockable;
59 
60     rtl::OUString               maDrawStyleName;
61     rtl::OUString               maTextStyleName;
62     rtl::OUString               maPresentationClass;
63     rtl::OUString               maShapeName;
64     rtl::OUString               maThumbnailURL;
65 
66     /// whether to restore list context (#91964#)
67     bool                        mbListContextPushed;
68 
69     sal_uInt16                  mnStyleFamily;
70     sal_uInt16                  mnClass;
71     sal_Bool                    mbIsPlaceholder;
72     bool                        mbClearDefaultAttributes;
73     sal_Bool                    mbIsUserTransformed;
74     sal_Int32                   mnZOrder;
75     rtl::OUString               maShapeId;
76     rtl::OUString               maLayerName;
77 
78     // #i68101#
79     rtl::OUString               maShapeTitle;
80     rtl::OUString               maShapeDescription;
81 
82     SdXMLImExTransform2D        mnTransform;
83     com::sun::star::awt::Size   maSize;
84     com::sun::star::awt::Point  maPosition;
85 
86     bool                        mbVisible;
87     bool                        mbPrintable;
88 
89     /** if bSupportsStyle is false, auto styles will be set but not a style */
90     void SetStyle( bool bSupportsStyle = true );
91     void SetLayer();
92     void SetThumbnail();
93 
94     void AddShape(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& xShape);
95     void AddShape(const char* pServiceName );
96     void SetTransformation();
97 
98     SvXMLImport& GetImport() { return SvXMLImportContext::GetImport(); }
99     const SvXMLImport& GetImport() const { return SvXMLImportContext::GetImport(); }
100 
101     void addGluePoint( const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
102 
103     sal_Bool isPresentationShape() const;
104 
105 public:
106     TYPEINFO();
107 
108     SdXMLShapeContext( SvXMLImport& rImport,
109         sal_uInt16 nPrfx,
110         const rtl::OUString& rLocalName,
111         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
112         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
113         sal_Bool bTemporaryShape);
114     virtual ~SdXMLShapeContext();
115 
116     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
117     virtual void EndElement();
118 
119     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
120         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
121 
122     // this is called from the parent group for each unparsed attribute in the attribute list
123     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
124 };
125 
126 //////////////////////////////////////////////////////////////////////////////
127 // draw:rect context
128 
129 class SdXMLRectShapeContext : public SdXMLShapeContext
130 {
131     sal_Int32                   mnRadius;
132 
133 public:
134     TYPEINFO();
135 
136     SdXMLRectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
137         const rtl::OUString& rLocalName,
138         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
139         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
140         sal_Bool bTemporaryShape);
141     virtual ~SdXMLRectShapeContext();
142     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
143 
144     // this is called from the parent group for each unparsed attribute in the attribute list
145     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
146 };
147 
148 //////////////////////////////////////////////////////////////////////////////
149 // draw:line context
150 
151 class SdXMLLineShapeContext : public SdXMLShapeContext
152 {
153     sal_Int32                   mnX1;
154     sal_Int32                   mnY1;
155     sal_Int32                   mnX2;
156     sal_Int32                   mnY2;
157 
158 public:
159     TYPEINFO();
160 
161     SdXMLLineShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
162         const rtl::OUString& rLocalName,
163         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
164         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
165         sal_Bool bTemporaryShape);
166     virtual ~SdXMLLineShapeContext();
167     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
168 
169     // this is called from the parent group for each unparsed attribute in the attribute list
170     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
171 };
172 
173 //////////////////////////////////////////////////////////////////////////////
174 // draw:ellipse and draw:circle context
175 
176 class SdXMLEllipseShapeContext : public SdXMLShapeContext
177 {
178     sal_Int32                   mnCX;
179     sal_Int32                   mnCY;
180     sal_Int32                   mnRX;
181     sal_Int32                   mnRY;
182 
183     sal_uInt16                      meKind;
184     sal_Int32                   mnStartAngle;
185     sal_Int32                   mnEndAngle;
186 public:
187     TYPEINFO();
188 
189     SdXMLEllipseShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
190         const rtl::OUString& rLocalName,
191         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
192         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
193         sal_Bool bTemporaryShape);
194     virtual ~SdXMLEllipseShapeContext();
195     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
196 
197     // this is called from the parent group for each unparsed attribute in the attribute list
198     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
199 };
200 
201 //////////////////////////////////////////////////////////////////////////////
202 // draw:polyline and draw:polygon context
203 
204 class SdXMLPolygonShapeContext : public SdXMLShapeContext
205 {
206     rtl::OUString               maPoints;
207     rtl::OUString               maViewBox;
208     sal_Bool                    mbClosed;
209 
210 public:
211     TYPEINFO();
212 
213     SdXMLPolygonShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
214         const rtl::OUString& rLocalName,
215         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
216         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes, sal_Bool bClosed, sal_Bool bTemporaryShape);
217     virtual ~SdXMLPolygonShapeContext();
218     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
219 
220     // this is called from the parent group for each unparsed attribute in the attribute list
221     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
222 };
223 
224 //////////////////////////////////////////////////////////////////////////////
225 // draw:path context
226 
227 class SdXMLPathShapeContext : public SdXMLShapeContext
228 {
229     rtl::OUString               maD;
230     rtl::OUString               maViewBox;
231     sal_Bool                    mbClosed;
232 
233 public:
234     TYPEINFO();
235 
236     SdXMLPathShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
237         const rtl::OUString& rLocalName,
238         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
239         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
240         sal_Bool bTemporaryShape);
241     virtual ~SdXMLPathShapeContext();
242     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
243 
244     // this is called from the parent group for each unparsed attribute in the attribute list
245     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
246 };
247 
248 //////////////////////////////////////////////////////////////////////////////
249 // draw:text-box context
250 
251 class SdXMLTextBoxShapeContext : public SdXMLShapeContext
252 {
253     sal_Int32                   mnRadius;
254 
255 public:
256     TYPEINFO();
257 
258     SdXMLTextBoxShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
259         const rtl::OUString& rLocalName,
260         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
261         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
262         sal_Bool bTemporaryShape);
263     virtual ~SdXMLTextBoxShapeContext();
264     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
265 
266     // this is called from the parent group for each unparsed attribute in the attribute list
267     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
268 };
269 
270 //////////////////////////////////////////////////////////////////////////////
271 // draw:control context
272 
273 class SdXMLControlShapeContext : public SdXMLShapeContext
274 {
275 private:
276     rtl::OUString maFormId;
277 
278 public:
279     TYPEINFO();
280 
281     SdXMLControlShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
282         const rtl::OUString& rLocalName,
283         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
284         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
285         sal_Bool bTemporaryShape);
286     virtual ~SdXMLControlShapeContext();
287     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
288 
289     // this is called from the parent group for each unparsed attribute in the attribute list
290     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
291 };
292 
293 //////////////////////////////////////////////////////////////////////////////
294 // draw:connector context
295 
296 class SdXMLConnectorShapeContext : public SdXMLShapeContext
297 {
298 private:
299     ::com::sun::star::awt::Point maStart;
300     ::com::sun::star::awt::Point maEnd;
301 
302     sal_uInt16      mnType;
303 
304     rtl::OUString   maStartShapeId;
305     sal_Int32       mnStartGlueId;
306     rtl::OUString   maEndShapeId;
307     sal_Int32       mnEndGlueId;
308 
309     sal_Int32   mnDelta1;
310     sal_Int32   mnDelta2;
311     sal_Int32   mnDelta3;
312 
313     com::sun::star::uno::Any maPath;
314 
315 public:
316     TYPEINFO();
317 
318     SdXMLConnectorShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
319         const rtl::OUString& rLocalName,
320         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
321         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
322         sal_Bool bTemporaryShape);
323     virtual ~SdXMLConnectorShapeContext();
324     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
325 
326     // this is called from the parent group for each unparsed attribute in the attribute list
327     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
328 };
329 
330 //////////////////////////////////////////////////////////////////////////////
331 // draw:measure context
332 
333 class SdXMLMeasureShapeContext : public SdXMLShapeContext
334 {
335 private:
336     ::com::sun::star::awt::Point maStart;
337     ::com::sun::star::awt::Point maEnd;
338 
339 public:
340     TYPEINFO();
341 
342     SdXMLMeasureShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
343         const rtl::OUString& rLocalName,
344         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
345         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
346         sal_Bool bTemporaryShape);
347     virtual ~SdXMLMeasureShapeContext();
348     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
349     virtual void EndElement();
350 
351     // this is called from the parent group for each unparsed attribute in the attribute list
352     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
353 };
354 
355 //////////////////////////////////////////////////////////////////////////////
356 // draw:page context
357 
358 class SdXMLPageShapeContext : public SdXMLShapeContext
359 {
360 private:
361     sal_Int32   mnPageNumber;
362 public:
363     TYPEINFO();
364 
365     SdXMLPageShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
366         const rtl::OUString& rLocalName,
367         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
368         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
369         sal_Bool bTemporaryShape);
370     virtual ~SdXMLPageShapeContext();
371     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
372 
373     // this is called from the parent group for each unparsed attribute in the attribute list
374     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
375 };
376 
377 //////////////////////////////////////////////////////////////////////////////
378 // draw:caption context
379 
380 class SdXMLCaptionShapeContext : public SdXMLShapeContext
381 {
382 private:
383     com::sun::star::awt::Point maCaptionPoint;
384     sal_Int32 mnRadius;
385 
386 public:
387     TYPEINFO();
388 
389     SdXMLCaptionShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
390         const rtl::OUString& rLocalName,
391         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
392         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
393         sal_Bool bTemporaryShape);
394     virtual ~SdXMLCaptionShapeContext();
395     virtual void StartElement(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList);
396 
397     // this is called from the parent group for each unparsed attribute in the attribute list
398     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
399 };
400 
401 //////////////////////////////////////////////////////////////////////////////
402 // office:image context
403 
404 class SdXMLGraphicObjectShapeContext : public SdXMLShapeContext
405 {
406 private:
407     ::rtl::OUString maURL;
408     ::com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > mxBase64Stream;
409 
410 public:
411     TYPEINFO();
412 
413     SdXMLGraphicObjectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
414         const rtl::OUString& rLocalName,
415         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
416         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
417         sal_Bool bTemporaryShape);
418     virtual ~SdXMLGraphicObjectShapeContext();
419 
420     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
421     virtual void EndElement();
422     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
423         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
424 
425     // this is called from the parent group for each unparsed attribute in the attribute list
426     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
427 };
428 
429 //////////////////////////////////////////////////////////////////////////////
430 // chart:chart context
431 
432 class SdXMLChartShapeContext : public SdXMLShapeContext
433 {
434     SvXMLImportContext*         mpChartContext;
435 
436 public:
437     TYPEINFO();
438 
439     SdXMLChartShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
440         const rtl::OUString& rLocalName,
441         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
442         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
443         sal_Bool bTemporaryShape);
444     virtual ~SdXMLChartShapeContext();
445 
446     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
447     virtual void EndElement();
448     virtual void Characters( const ::rtl::OUString& rChars );
449     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
450         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
451 };
452 
453 //////////////////////////////////////////////////////////////////////////////
454 // draw:object and draw:object_ole context
455 
456 class SdXMLObjectShapeContext : public SdXMLShapeContext
457 {
458 private:
459     rtl::OUString maCLSID;
460     rtl::OUString maHref;
461 
462     // #100592#
463     ::com::sun::star::uno::Reference < ::com::sun::star::io::XOutputStream > mxBase64Stream;
464 
465 public:
466     TYPEINFO();
467 
468     SdXMLObjectShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
469         const rtl::OUString& rLocalName,
470         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
471         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
472         sal_Bool bTemporaryShape);
473     virtual ~SdXMLObjectShapeContext();
474 
475     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
476     virtual void EndElement();
477 
478     // #100592#
479     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
480         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
481 
482     // this is called from the parent group for each unparsed attribute in the attribute list
483     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
484 };
485 
486 //////////////////////////////////////////////////////////////////////////////
487 // draw:applet
488 
489 class SdXMLAppletShapeContext : public SdXMLShapeContext
490 {
491 private:
492     rtl::OUString maAppletName;
493     rtl::OUString maAppletCode;
494     rtl::OUString maHref;
495     sal_Bool mbIsScript;
496 
497     com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > maParams;
498 
499 public:
500     TYPEINFO();
501 
502     SdXMLAppletShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
503         const rtl::OUString& rLocalName,
504         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
505         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
506         sal_Bool bTemporaryShape);
507     virtual ~SdXMLAppletShapeContext();
508 
509     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
510     virtual void EndElement();
511 
512     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
513         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
514 
515     // this is called from the parent group for each unparsed attribute in the attribute list
516     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
517 };
518 
519 //////////////////////////////////////////////////////////////////////////////
520 // draw:plugin
521 
522 class SdXMLPluginShapeContext : public SdXMLShapeContext
523 {
524 private:
525     rtl::OUString   maMimeType;
526     rtl::OUString   maHref;
527     bool            mbMedia;
528 
529     com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > maParams;
530 
531 public:
532     TYPEINFO();
533 
534     SdXMLPluginShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
535         const rtl::OUString& rLocalName,
536         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
537         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
538         sal_Bool bTemporaryShape);
539     virtual ~SdXMLPluginShapeContext();
540 
541     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
542     virtual void EndElement();
543 
544     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
545         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
546 
547     // this is called from the parent group for each unparsed attribute in the attribute list
548     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
549 };
550 
551 //////////////////////////////////////////////////////////////////////////////
552 // draw:floating-frame
553 
554 class SdXMLFloatingFrameShapeContext : public SdXMLShapeContext
555 {
556 private:
557     rtl::OUString maFrameName;
558     rtl::OUString maHref;
559 
560 public:
561     TYPEINFO();
562 
563     SdXMLFloatingFrameShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
564         const rtl::OUString& rLocalName,
565         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
566         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
567         sal_Bool bTemporaryShape);
568     virtual ~SdXMLFloatingFrameShapeContext();
569 
570     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
571     virtual void EndElement();
572 
573     // this is called from the parent group for each unparsed attribute in the attribute list
574     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
575 };
576 
577 //////////////////////////////////////////////////////////////////////////////
578 // draw:-frame
579 
580 class SdXMLFrameShapeContext : public SdXMLShapeContext
581 {
582 private:
583     sal_Bool mbSupportsReplacement;
584     SvXMLImportContextRef mxImplContext;
585     SvXMLImportContextRef mxReplImplContext;
586 
587 public:
588     TYPEINFO();
589 
590     SdXMLFrameShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
591         const rtl::OUString& rLocalName,
592         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
593         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
594         sal_Bool bTemporaryShape);
595     virtual ~SdXMLFrameShapeContext();
596 
597     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
598         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
599 
600     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
601     virtual void EndElement();
602 
603     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
604 };
605 
606 class SdXMLCustomShapeContext : public SdXMLShapeContext
607 {
608 
609 protected :
610 
611     rtl::OUString maCustomShapeEngine;
612     rtl::OUString maCustomShapeData;
613 
614     std::vector< com::sun::star::beans::PropertyValue > maCustomShapeGeometry;
615 
616 public:
617 
618     TYPEINFO();
619 
620     SdXMLCustomShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName,
621         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
622         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes,
623         sal_Bool bTemporaryShape);
624     virtual ~SdXMLCustomShapeContext();
625 
626     virtual void StartElement( const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
627     virtual void EndElement();
628 
629     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
630         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
631 
632     // this is called from the parent group for each unparsed attribute in the attribute list
633     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
634 };
635 
636 //////////////////////////////////////////////////////////////////////////////
637 // draw:table
638 
639 class SdXMLTableShapeContext : public SdXMLShapeContext
640 {
641 public:
642     TYPEINFO();
643 
644     SdXMLTableShapeContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
645         const rtl::OUString& rLocalName,
646         const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList,
647         com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >& rShapes );
648     virtual ~SdXMLTableShapeContext();
649 
650     virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
651     virtual void EndElement();
652 
653     virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList );
654 
655     // this is called from the parent group for each unparsed attribute in the attribute list
656     virtual void processAttribute( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const ::rtl::OUString& rValue );
657 
658 private:
659     SvXMLImportContextRef mxTableImportContext;
660     rtl::OUString msTemplateStyleName;
661     sal_Bool maTemplateStylesUsed[6];
662 };
663 
664 #endif  //  _XIMPSHAPE_HXX
665