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