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