xref: /aoo41x/main/xmloff/source/draw/ximpshap.hxx (revision cdf0e10c)
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