1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3 * This file is part of the libetonyek 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
10 #include "IWORKOutputElements.h"
11
12 #include <memory>
13
14 #include "IWORKDocumentInterface.h"
15 #include "IWORKFormula.h"
16
17 namespace libetonyek
18 {
19
20 using std::make_shared;
21
22 class IWORKOutputElement
23 {
24 // disable copying
25 IWORKOutputElement(const IWORKOutputElement &);
26 IWORKOutputElement &operator=(const IWORKOutputElement &);
27
28 public:
IWORKOutputElement()29 IWORKOutputElement() {}
~IWORKOutputElement()30 virtual ~IWORKOutputElement() {}
31 virtual void write(IWORKDocumentInterface *iface) const = 0;
32 };
33
34 namespace
35 {
36
37 class CloseCommentElement : public IWORKOutputElement
38 {
39 public:
CloseCommentElement()40 CloseCommentElement() {}
~CloseCommentElement()41 ~CloseCommentElement() override {}
42 void write(IWORKDocumentInterface *iface) const override;
43 };
44
45 class CloseEndnoteElement : public IWORKOutputElement
46 {
47 public:
CloseEndnoteElement()48 CloseEndnoteElement() {}
~CloseEndnoteElement()49 ~CloseEndnoteElement() override {}
50 void write(IWORKDocumentInterface *iface) const override;
51 };
52
53 class CloseFooterElement : public IWORKOutputElement
54 {
55 public:
CloseFooterElement()56 CloseFooterElement() {}
~CloseFooterElement()57 ~CloseFooterElement() override {}
58 void write(IWORKDocumentInterface *iface) const override;
59 };
60
61 class CloseFootnoteElement : public IWORKOutputElement
62 {
63 public:
CloseFootnoteElement()64 CloseFootnoteElement() {}
~CloseFootnoteElement()65 ~CloseFootnoteElement() override {}
66 void write(IWORKDocumentInterface *iface) const override;
67 };
68
69 class CloseFrameElement : public IWORKOutputElement
70 {
71 public:
CloseFrameElement()72 CloseFrameElement() {}
~CloseFrameElement()73 ~CloseFrameElement() override {}
74 void write(IWORKDocumentInterface *iface) const override;
75 };
76
77 class CloseGroupElement : public IWORKOutputElement
78 {
79 public:
CloseGroupElement()80 CloseGroupElement() {}
~CloseGroupElement()81 ~CloseGroupElement() override {}
82 void write(IWORKDocumentInterface *iface) const override;
83 };
84
85 class CloseHeaderElement : public IWORKOutputElement
86 {
87 public:
CloseHeaderElement()88 CloseHeaderElement() {}
~CloseHeaderElement()89 ~CloseHeaderElement() override {}
90 void write(IWORKDocumentInterface *iface) const override;
91 };
92
93 class CloseLinkElement : public IWORKOutputElement
94 {
95 public:
CloseLinkElement()96 CloseLinkElement() {}
~CloseLinkElement()97 ~CloseLinkElement() override {}
98 void write(IWORKDocumentInterface *iface) const override;
99 };
100
101 class CloseListElementElement : public IWORKOutputElement
102 {
103 public:
CloseListElementElement()104 CloseListElementElement() {}
~CloseListElementElement()105 ~CloseListElementElement() override {}
106 void write(IWORKDocumentInterface *iface) const override;
107 };
108
109 class CloseOrderedListLevelElement : public IWORKOutputElement
110 {
111 public:
CloseOrderedListLevelElement()112 CloseOrderedListLevelElement() {}
~CloseOrderedListLevelElement()113 ~CloseOrderedListLevelElement() override {}
114 void write(IWORKDocumentInterface *iface) const override;
115 };
116
117 class CloseParagraphElement : public IWORKOutputElement
118 {
119 public:
CloseParagraphElement()120 CloseParagraphElement() {}
~CloseParagraphElement()121 ~CloseParagraphElement() override {}
122 void write(IWORKDocumentInterface *iface) const override;
123 };
124
125 class CloseSectionElement : public IWORKOutputElement
126 {
127 public:
CloseSectionElement()128 CloseSectionElement() {}
~CloseSectionElement()129 ~CloseSectionElement() override {}
130 void write(IWORKDocumentInterface *iface) const override;
131 };
132
133 class CloseSpanElement : public IWORKOutputElement
134 {
135 public:
CloseSpanElement()136 CloseSpanElement() {}
~CloseSpanElement()137 ~CloseSpanElement() override {}
138 void write(IWORKDocumentInterface *iface) const override;
139 };
140
141 class CloseTableElement : public IWORKOutputElement
142 {
143 public:
CloseTableElement()144 CloseTableElement() {}
~CloseTableElement()145 ~CloseTableElement() override {}
146 void write(IWORKDocumentInterface *iface) const override;
147 };
148
149 class CloseTableCellElement : public IWORKOutputElement
150 {
151 public:
CloseTableCellElement()152 CloseTableCellElement() {}
~CloseTableCellElement()153 ~CloseTableCellElement() override {}
154 void write(IWORKDocumentInterface *iface) const override;
155 };
156
157 class CloseTableRowElement : public IWORKOutputElement
158 {
159 public:
CloseTableRowElement()160 CloseTableRowElement() {}
~CloseTableRowElement()161 ~CloseTableRowElement() override {}
162 void write(IWORKDocumentInterface *iface) const override;
163 };
164
165 class CloseUnorderedListLevelElement : public IWORKOutputElement
166 {
167 public:
CloseUnorderedListLevelElement()168 CloseUnorderedListLevelElement() {}
~CloseUnorderedListLevelElement()169 ~CloseUnorderedListLevelElement() override {}
170 void write(IWORKDocumentInterface *iface) const override;
171 };
172
173 class DefineSheetNumberingStyleElement : public IWORKOutputElement
174 {
175 public:
DefineSheetNumberingStyleElement(const librevenge::RVNGPropertyList & propList)176 explicit DefineSheetNumberingStyleElement(const librevenge::RVNGPropertyList &propList) :
177 m_propList(propList) {}
~DefineSheetNumberingStyleElement()178 ~DefineSheetNumberingStyleElement() override {}
179 void write(IWORKDocumentInterface *iface) const override;
180 private:
181 librevenge::RVNGPropertyList m_propList;
182 };
183
184 class DrawGraphicObjectElement : public IWORKOutputElement
185 {
186 public:
DrawGraphicObjectElement(const librevenge::RVNGPropertyList & propList)187 explicit DrawGraphicObjectElement(const librevenge::RVNGPropertyList &propList) :
188 m_propList(propList) {}
~DrawGraphicObjectElement()189 ~DrawGraphicObjectElement() override {}
190 void write(IWORKDocumentInterface *iface) const override;
191 private:
192 librevenge::RVNGPropertyList m_propList;
193 };
194
195 class DrawPathElement : public IWORKOutputElement
196 {
197 public:
DrawPathElement(const librevenge::RVNGPropertyList & propList)198 explicit DrawPathElement(const librevenge::RVNGPropertyList &propList) :
199 m_propList(propList) {}
~DrawPathElement()200 ~DrawPathElement() override {}
201 void write(IWORKDocumentInterface *iface) const override;
202 private:
203 librevenge::RVNGPropertyList m_propList;
204 };
205
206 class DrawPolylineElement : public IWORKOutputElement
207 {
208 public:
DrawPolylineElement(const librevenge::RVNGPropertyList & propList)209 explicit DrawPolylineElement(const librevenge::RVNGPropertyList &propList) :
210 m_propList(propList) {}
~DrawPolylineElement()211 ~DrawPolylineElement() override {}
212 void write(IWORKDocumentInterface *iface) const override;
213 private:
214 librevenge::RVNGPropertyList m_propList;
215 };
216
217 class EndLayerElement : public IWORKOutputElement
218 {
219 public:
EndLayerElement()220 EndLayerElement() {}
~EndLayerElement()221 ~EndLayerElement() override {}
222 void write(IWORKDocumentInterface *iface) const override;
223 };
224
225 class EndNotesElement : public IWORKOutputElement
226 {
227 public:
EndNotesElement()228 EndNotesElement() {}
~EndNotesElement()229 ~EndNotesElement() override {}
230 void write(IWORKDocumentInterface *iface) const override;
231 };
232
233 class EndTextObjectElement : public IWORKOutputElement
234 {
235 public:
EndTextObjectElement()236 EndTextObjectElement() {}
~EndTextObjectElement()237 ~EndTextObjectElement() override {}
238 void write(IWORKDocumentInterface *iface) const override;
239 };
240
241 class InsertBinaryObjectElement : public IWORKOutputElement
242 {
243 public:
InsertBinaryObjectElement(const librevenge::RVNGPropertyList & propList)244 explicit InsertBinaryObjectElement(const librevenge::RVNGPropertyList &propList) :
245 m_propList(propList) {}
~InsertBinaryObjectElement()246 ~InsertBinaryObjectElement() override {}
247 void write(IWORKDocumentInterface *iface) const override;
248 private:
249 librevenge::RVNGPropertyList m_propList;
250 };
251
252 class InsertCoveredTableCellElement : public IWORKOutputElement
253 {
254 public:
InsertCoveredTableCellElement(const librevenge::RVNGPropertyList & propList)255 explicit InsertCoveredTableCellElement(const librevenge::RVNGPropertyList &propList) :
256 m_propList(propList) {}
~InsertCoveredTableCellElement()257 ~InsertCoveredTableCellElement() override {}
258 void write(IWORKDocumentInterface *iface) const override;
259 private:
260 librevenge::RVNGPropertyList m_propList;
261 };
262
263 class InsertFieldElement : public IWORKOutputElement
264 {
265 public:
InsertFieldElement(const librevenge::RVNGPropertyList & propList)266 explicit InsertFieldElement(const librevenge::RVNGPropertyList &propList) :
267 m_propList(propList) {}
~InsertFieldElement()268 ~InsertFieldElement() override {}
269 void write(IWORKDocumentInterface *iface) const override;
270 private:
271 librevenge::RVNGPropertyList m_propList;
272 };
273
274 class InsertLineBreakElement : public IWORKOutputElement
275 {
276 public:
InsertLineBreakElement()277 InsertLineBreakElement() {}
~InsertLineBreakElement()278 ~InsertLineBreakElement() override {}
279 void write(IWORKDocumentInterface *iface) const override;
280 };
281
282 class InsertSpaceElement : public IWORKOutputElement
283 {
284 public:
InsertSpaceElement()285 InsertSpaceElement() {}
~InsertSpaceElement()286 ~InsertSpaceElement() override {}
287 void write(IWORKDocumentInterface *iface) const override;
288 };
289
290 class InsertTabElement : public IWORKOutputElement
291 {
292 public:
InsertTabElement()293 InsertTabElement() {}
~InsertTabElement()294 ~InsertTabElement() override {}
295 void write(IWORKDocumentInterface *iface) const override;
296 };
297
298 class InsertTextElement : public IWORKOutputElement
299 {
300 public:
InsertTextElement(const librevenge::RVNGString & text)301 explicit InsertTextElement(const librevenge::RVNGString &text) :
302 m_text(text) {}
~InsertTextElement()303 ~InsertTextElement() override {}
304 void write(IWORKDocumentInterface *iface) const override;
305 private:
306 librevenge::RVNGString m_text;
307 };
308
309 class OpenCommentElement : public IWORKOutputElement
310 {
311 public:
OpenCommentElement(const librevenge::RVNGPropertyList & propList)312 explicit OpenCommentElement(const librevenge::RVNGPropertyList &propList) :
313 m_propList(propList) {}
~OpenCommentElement()314 ~OpenCommentElement() override {}
315 void write(IWORKDocumentInterface *iface) const override;
316 private:
317 librevenge::RVNGPropertyList m_propList;
318 };
319
320 class OpenEndnoteElement : public IWORKOutputElement
321 {
322 public:
OpenEndnoteElement(const librevenge::RVNGPropertyList & propList)323 explicit OpenEndnoteElement(const librevenge::RVNGPropertyList &propList) :
324 m_propList(propList) {}
~OpenEndnoteElement()325 ~OpenEndnoteElement() override {}
326 void write(IWORKDocumentInterface *iface) const override;
327 private:
328 librevenge::RVNGPropertyList m_propList;
329 };
330
331 class OpenFormulaCellElement : public IWORKOutputElement
332 {
333 public:
OpenFormulaCellElement(const librevenge::RVNGPropertyList & propList,const IWORKFormula & formula,const boost::optional<unsigned> & formulaHC,const IWORKTableNameMapPtr_t & tableNameMap)334 OpenFormulaCellElement(const librevenge::RVNGPropertyList &propList, const IWORKFormula &formula, const boost::optional<unsigned> &formulaHC, const IWORKTableNameMapPtr_t &tableNameMap)
335 : m_propList(propList)
336 , m_formula(formula)
337 , m_formulaHC(formulaHC)
338 , m_tableNameMap(tableNameMap) {}
~OpenFormulaCellElement()339 ~OpenFormulaCellElement() override {}
340 void write(IWORKDocumentInterface *iface) const override;
341 private:
342 librevenge::RVNGPropertyList m_propList;
343 const IWORKFormula m_formula;
344 const boost::optional<unsigned> m_formulaHC;
345 const IWORKTableNameMapPtr_t m_tableNameMap;
346 };
347
348 class OpenFooterElement : public IWORKOutputElement
349 {
350 public:
OpenFooterElement(const librevenge::RVNGPropertyList & propList)351 explicit OpenFooterElement(const librevenge::RVNGPropertyList &propList) :
352 m_propList(propList) {}
~OpenFooterElement()353 ~OpenFooterElement() override {}
354 void write(IWORKDocumentInterface *iface) const override;
355 private:
356 librevenge::RVNGPropertyList m_propList;
357 };
358
359 class OpenFootnoteElement : public IWORKOutputElement
360 {
361 public:
OpenFootnoteElement(const librevenge::RVNGPropertyList & propList)362 explicit OpenFootnoteElement(const librevenge::RVNGPropertyList &propList) :
363 m_propList(propList) {}
~OpenFootnoteElement()364 ~OpenFootnoteElement() override {}
365 void write(IWORKDocumentInterface *iface) const override;
366 private:
367 librevenge::RVNGPropertyList m_propList;
368 };
369
370 class OpenFrameElement : public IWORKOutputElement
371 {
372 public:
OpenFrameElement(const librevenge::RVNGPropertyList & propList)373 explicit OpenFrameElement(const librevenge::RVNGPropertyList &propList) :
374 m_propList(propList) {}
~OpenFrameElement()375 ~OpenFrameElement() override {}
376 void write(IWORKDocumentInterface *iface) const override;
377 private:
378 librevenge::RVNGPropertyList m_propList;
379 };
380
381 class OpenGroupElement : public IWORKOutputElement
382 {
383 public:
OpenGroupElement(const librevenge::RVNGPropertyList & propList)384 explicit OpenGroupElement(const librevenge::RVNGPropertyList &propList) :
385 m_propList(propList) {}
~OpenGroupElement()386 ~OpenGroupElement() override {}
387 void write(IWORKDocumentInterface *iface) const override;
388 private:
389 librevenge::RVNGPropertyList m_propList;
390 };
391
392 class OpenHeaderElement : public IWORKOutputElement
393 {
394 public:
OpenHeaderElement(const librevenge::RVNGPropertyList & propList)395 explicit OpenHeaderElement(const librevenge::RVNGPropertyList &propList) :
396 m_propList(propList) {}
~OpenHeaderElement()397 ~OpenHeaderElement() override {}
398 void write(IWORKDocumentInterface *iface) const override;
399 private:
400 librevenge::RVNGPropertyList m_propList;
401 };
402
403 class OpenLinkElement : public IWORKOutputElement
404 {
405 public:
OpenLinkElement(const librevenge::RVNGPropertyList & propList)406 explicit OpenLinkElement(const librevenge::RVNGPropertyList &propList) :
407 m_propList(propList) {}
~OpenLinkElement()408 ~OpenLinkElement() override {}
409 void write(IWORKDocumentInterface *iface) const override;
410 private:
411 librevenge::RVNGPropertyList m_propList;
412 };
413
414 class OpenListElementElement : public IWORKOutputElement
415 {
416 public:
OpenListElementElement(const librevenge::RVNGPropertyList & propList)417 explicit OpenListElementElement(const librevenge::RVNGPropertyList &propList) :
418 m_propList(propList) {}
~OpenListElementElement()419 ~OpenListElementElement() override {}
420 void write(IWORKDocumentInterface *iface) const override;
421 private:
422 librevenge::RVNGPropertyList m_propList;
423 };
424
425 class OpenOrderedListLevelElement : public IWORKOutputElement
426 {
427 public:
OpenOrderedListLevelElement(const librevenge::RVNGPropertyList & propList)428 explicit OpenOrderedListLevelElement(const librevenge::RVNGPropertyList &propList) :
429 m_propList(propList) {}
~OpenOrderedListLevelElement()430 ~OpenOrderedListLevelElement() override {}
431 void write(IWORKDocumentInterface *iface) const override;
432 private:
433 librevenge::RVNGPropertyList m_propList;
434 };
435
436 class OpenParagraphElement : public IWORKOutputElement
437 {
438 public:
OpenParagraphElement(const librevenge::RVNGPropertyList & propList)439 explicit OpenParagraphElement(const librevenge::RVNGPropertyList &propList) :
440 m_propList(propList) {}
~OpenParagraphElement()441 ~OpenParagraphElement() override {}
442 void write(IWORKDocumentInterface *iface) const override;
443 private:
444 librevenge::RVNGPropertyList m_propList;
445 };
446
447 class OpenSectionElement : public IWORKOutputElement
448 {
449 public:
OpenSectionElement(const librevenge::RVNGPropertyList & propList)450 explicit OpenSectionElement(const librevenge::RVNGPropertyList &propList) :
451 m_propList(propList) {}
~OpenSectionElement()452 ~OpenSectionElement() override {}
453 void write(IWORKDocumentInterface *iface) const override;
454 private:
455 librevenge::RVNGPropertyList m_propList;
456 };
457
458 class OpenSpanElement : public IWORKOutputElement
459 {
460 public:
OpenSpanElement(const librevenge::RVNGPropertyList & propList)461 explicit OpenSpanElement(const librevenge::RVNGPropertyList &propList) :
462 m_propList(propList) {}
~OpenSpanElement()463 ~OpenSpanElement() override {}
464 void write(IWORKDocumentInterface *iface) const override;
465 private:
466 librevenge::RVNGPropertyList m_propList;
467 };
468
469 class OpenTableElement : public IWORKOutputElement
470 {
471 public:
OpenTableElement(const librevenge::RVNGPropertyList & propList)472 explicit OpenTableElement(const librevenge::RVNGPropertyList &propList) :
473 m_propList(propList) {}
~OpenTableElement()474 ~OpenTableElement() override {}
475 void write(IWORKDocumentInterface *iface) const override;
476 private:
477 librevenge::RVNGPropertyList m_propList;
478 };
479
480 class OpenTableCellElement : public IWORKOutputElement
481 {
482 public:
OpenTableCellElement(const librevenge::RVNGPropertyList & propList)483 explicit OpenTableCellElement(const librevenge::RVNGPropertyList &propList) :
484 m_propList(propList) {}
~OpenTableCellElement()485 ~OpenTableCellElement() override {}
486 void write(IWORKDocumentInterface *iface) const override;
487 private:
488 librevenge::RVNGPropertyList m_propList;
489 };
490
491 class OpenTableRowElement : public IWORKOutputElement
492 {
493 public:
OpenTableRowElement(const librevenge::RVNGPropertyList & propList)494 explicit OpenTableRowElement(const librevenge::RVNGPropertyList &propList) :
495 m_propList(propList) {}
~OpenTableRowElement()496 ~OpenTableRowElement() override {}
497 void write(IWORKDocumentInterface *iface) const override;
498 private:
499 librevenge::RVNGPropertyList m_propList;
500 };
501
502 class OpenUnorderedListLevelElement : public IWORKOutputElement
503 {
504 public:
OpenUnorderedListLevelElement(const librevenge::RVNGPropertyList & propList)505 explicit OpenUnorderedListLevelElement(const librevenge::RVNGPropertyList &propList) :
506 m_propList(propList) {}
~OpenUnorderedListLevelElement()507 ~OpenUnorderedListLevelElement() override {}
508 void write(IWORKDocumentInterface *iface) const override;
509 private:
510 librevenge::RVNGPropertyList m_propList;
511 };
512
513 class SetStyleElement : public IWORKOutputElement
514 {
515 public:
SetStyleElement(const librevenge::RVNGPropertyList & propList)516 explicit SetStyleElement(const librevenge::RVNGPropertyList &propList) :
517 m_propList(propList) {}
~SetStyleElement()518 ~SetStyleElement() override {}
519 void write(IWORKDocumentInterface *iface) const override;
520 private:
521 librevenge::RVNGPropertyList m_propList;
522 };
523
524 class StartLayerElement : public IWORKOutputElement
525 {
526 public:
StartLayerElement(const librevenge::RVNGPropertyList & propList)527 explicit StartLayerElement(const librevenge::RVNGPropertyList &propList) :
528 m_propList(propList) {}
~StartLayerElement()529 ~StartLayerElement() override {}
530 void write(IWORKDocumentInterface *iface) const override;
531 private:
532 const librevenge::RVNGPropertyList m_propList;
533 };
534
535 class StartNotesElement : public IWORKOutputElement
536 {
537 public:
StartNotesElement(const librevenge::RVNGPropertyList & propList)538 explicit StartNotesElement(const librevenge::RVNGPropertyList &propList) :
539 m_propList(propList) {}
~StartNotesElement()540 ~StartNotesElement() override {}
541 void write(IWORKDocumentInterface *iface) const override;
542 private:
543 const librevenge::RVNGPropertyList m_propList;
544 };
545
546 class StartTextObjectElement : public IWORKOutputElement
547 {
548 public:
StartTextObjectElement(const librevenge::RVNGPropertyList & propList)549 explicit StartTextObjectElement(const librevenge::RVNGPropertyList &propList) :
550 m_propList(propList) {}
~StartTextObjectElement()551 ~StartTextObjectElement() override {}
552 void write(IWORKDocumentInterface *iface) const override;
553 private:
554 librevenge::RVNGPropertyList m_propList;
555 };
556
write(IWORKDocumentInterface * iface) const557 void CloseCommentElement::write(IWORKDocumentInterface *iface) const
558 {
559 if (iface)
560 iface->closeComment();
561 }
562
write(IWORKDocumentInterface * iface) const563 void CloseEndnoteElement::write(IWORKDocumentInterface *iface) const
564 {
565 if (iface)
566 iface->closeEndnote();
567 }
568
write(IWORKDocumentInterface * iface) const569 void CloseFooterElement::write(IWORKDocumentInterface *iface) const
570 {
571 if (iface)
572 iface->closeFooter();
573 }
574
write(IWORKDocumentInterface * iface) const575 void CloseFootnoteElement::write(IWORKDocumentInterface *iface) const
576 {
577 if (iface)
578 iface->closeFootnote();
579 }
580
write(IWORKDocumentInterface * iface) const581 void CloseFrameElement::write(IWORKDocumentInterface *iface) const
582 {
583 if (iface)
584 iface->closeFrame();
585 }
586
write(IWORKDocumentInterface * iface) const587 void CloseGroupElement::write(IWORKDocumentInterface *iface) const
588 {
589 if (iface)
590 iface->closeGroup();
591 }
592
write(IWORKDocumentInterface * iface) const593 void CloseHeaderElement::write(IWORKDocumentInterface *iface) const
594 {
595 if (iface)
596 iface->closeHeader();
597 }
598
write(IWORKDocumentInterface * iface) const599 void CloseLinkElement::write(IWORKDocumentInterface *iface) const
600 {
601 if (iface)
602 iface->closeLink();
603 }
604
write(IWORKDocumentInterface * iface) const605 void CloseListElementElement::write(IWORKDocumentInterface *iface) const
606 {
607 if (iface)
608 iface->closeListElement();
609 }
610
write(IWORKDocumentInterface * iface) const611 void CloseOrderedListLevelElement::write(IWORKDocumentInterface *iface) const
612 {
613 if (iface)
614 iface->closeOrderedListLevel();
615 }
616
write(IWORKDocumentInterface * iface) const617 void CloseParagraphElement::write(IWORKDocumentInterface *iface) const
618 {
619 if (iface)
620 iface->closeParagraph();
621 }
622
write(IWORKDocumentInterface * iface) const623 void CloseSectionElement::write(IWORKDocumentInterface *iface) const
624 {
625 if (iface)
626 iface->closeSection();
627 }
628
write(IWORKDocumentInterface * iface) const629 void CloseSpanElement::write(IWORKDocumentInterface *iface) const
630 {
631 if (iface)
632 iface->closeSpan();
633 }
634
write(IWORKDocumentInterface * iface) const635 void CloseTableElement::write(IWORKDocumentInterface *iface) const
636 {
637 if (iface)
638 iface->closeTable();
639 }
640
write(IWORKDocumentInterface * iface) const641 void CloseTableCellElement::write(IWORKDocumentInterface *iface) const
642 {
643 if (iface)
644 iface->closeTableCell();
645 }
646
write(IWORKDocumentInterface * iface) const647 void CloseTableRowElement::write(IWORKDocumentInterface *iface) const
648 {
649 if (iface)
650 iface->closeTableRow();
651 }
652
write(IWORKDocumentInterface * iface) const653 void CloseUnorderedListLevelElement::write(IWORKDocumentInterface *iface) const
654 {
655 if (iface)
656 iface->closeUnorderedListLevel();
657 }
658
write(IWORKDocumentInterface * iface) const659 void DefineSheetNumberingStyleElement::write(IWORKDocumentInterface *iface) const
660 {
661 if (iface)
662 iface->defineSheetNumberingStyle(m_propList);
663 }
664
write(IWORKDocumentInterface * iface) const665 void DrawGraphicObjectElement::write(IWORKDocumentInterface *iface) const
666 {
667 if (iface)
668 iface->drawGraphicObject(m_propList);
669 }
670
write(IWORKDocumentInterface * iface) const671 void DrawPathElement::write(IWORKDocumentInterface *iface) const
672 {
673 if (iface)
674 iface->drawPath(m_propList);
675 }
676
write(IWORKDocumentInterface * iface) const677 void DrawPolylineElement::write(IWORKDocumentInterface *iface) const
678 {
679 if (iface)
680 iface->drawPolyline(m_propList);
681 }
682
write(IWORKDocumentInterface * const iface) const683 void EndLayerElement::write(IWORKDocumentInterface *const iface) const
684 {
685 if (iface)
686 iface->endLayer();
687 }
688
write(IWORKDocumentInterface * const iface) const689 void EndNotesElement::write(IWORKDocumentInterface *const iface) const
690 {
691 if (iface)
692 iface->endNotes();
693 }
694
write(IWORKDocumentInterface * iface) const695 void EndTextObjectElement::write(IWORKDocumentInterface *iface) const
696 {
697 if (iface)
698 iface->endTextObject();
699 }
700
write(IWORKDocumentInterface * iface) const701 void InsertBinaryObjectElement::write(IWORKDocumentInterface *iface) const
702 {
703 if (iface)
704 iface->insertBinaryObject(m_propList);
705 }
706
write(IWORKDocumentInterface * iface) const707 void InsertCoveredTableCellElement::write(IWORKDocumentInterface *iface) const
708 {
709 if (iface)
710 iface->insertCoveredTableCell(m_propList);
711 }
712
write(IWORKDocumentInterface * iface) const713 void InsertFieldElement::write(IWORKDocumentInterface *iface) const
714 {
715 if (iface)
716 iface->insertField(m_propList);
717 }
718
write(IWORKDocumentInterface * iface) const719 void InsertLineBreakElement::write(IWORKDocumentInterface *iface) const
720 {
721 if (iface)
722 iface->insertLineBreak();
723 }
724
write(IWORKDocumentInterface * iface) const725 void InsertSpaceElement::write(IWORKDocumentInterface *iface) const
726 {
727 if (iface)
728 iface->insertSpace();
729 }
730
write(IWORKDocumentInterface * iface) const731 void InsertTabElement::write(IWORKDocumentInterface *iface) const
732 {
733 if (iface)
734 iface->insertTab();
735 }
736
write(IWORKDocumentInterface * iface) const737 void InsertTextElement::write(IWORKDocumentInterface *iface) const
738 {
739 if (iface)
740 iface->insertText(m_text);
741 }
742
write(IWORKDocumentInterface * iface) const743 void OpenCommentElement::write(IWORKDocumentInterface *iface) const
744 {
745 if (iface)
746 iface->openComment(m_propList);
747 }
748
write(IWORKDocumentInterface * iface) const749 void OpenEndnoteElement::write(IWORKDocumentInterface *iface) const
750 {
751 if (iface)
752 iface->openEndnote(m_propList);
753 }
754
write(IWORKDocumentInterface * iface) const755 void OpenFormulaCellElement::write(IWORKDocumentInterface *iface) const
756 {
757 librevenge::RVNGPropertyList cellProps(m_propList);
758
759 librevenge::RVNGPropertyListVector propsVector;
760 m_formula.write(m_formulaHC, propsVector, m_tableNameMap);
761 cellProps.insert("librevenge:formula", propsVector);
762
763 if (iface)
764 iface->openTableCell(cellProps);
765 }
766
write(IWORKDocumentInterface * iface) const767 void OpenFooterElement::write(IWORKDocumentInterface *iface) const
768 {
769 if (iface)
770 iface->openFooter(m_propList);
771 }
772
write(IWORKDocumentInterface * iface) const773 void OpenFootnoteElement::write(IWORKDocumentInterface *iface) const
774 {
775 if (iface)
776 iface->openFootnote(m_propList);
777 }
778
write(IWORKDocumentInterface * iface) const779 void OpenFrameElement::write(IWORKDocumentInterface *iface) const
780 {
781 if (iface)
782 iface->openFrame(m_propList);
783 }
784
write(IWORKDocumentInterface * iface) const785 void OpenGroupElement::write(IWORKDocumentInterface *iface) const
786 {
787 if (iface)
788 iface->openGroup(m_propList);
789 }
790
write(IWORKDocumentInterface * iface) const791 void OpenHeaderElement::write(IWORKDocumentInterface *iface) const
792 {
793 if (iface)
794 iface->openHeader(m_propList);
795 }
796
write(IWORKDocumentInterface * iface) const797 void OpenLinkElement::write(IWORKDocumentInterface *iface) const
798 {
799 if (iface)
800 iface->openLink(m_propList);
801 }
802
write(IWORKDocumentInterface * iface) const803 void OpenListElementElement::write(IWORKDocumentInterface *iface) const
804 {
805 if (iface)
806 iface->openListElement(m_propList);
807 }
808
write(IWORKDocumentInterface * iface) const809 void OpenOrderedListLevelElement::write(IWORKDocumentInterface *iface) const
810 {
811 if (iface)
812 iface->openOrderedListLevel(m_propList);
813 }
814
write(IWORKDocumentInterface * iface) const815 void OpenParagraphElement::write(IWORKDocumentInterface *iface) const
816 {
817 if (iface)
818 iface->openParagraph(m_propList);
819 }
820
write(IWORKDocumentInterface * iface) const821 void OpenSectionElement::write(IWORKDocumentInterface *iface) const
822 {
823 if (iface)
824 iface->openSection(m_propList);
825 }
826
write(IWORKDocumentInterface * iface) const827 void OpenSpanElement::write(IWORKDocumentInterface *iface) const
828 {
829 if (iface)
830 iface->openSpan(m_propList);
831 }
832
write(IWORKDocumentInterface * iface) const833 void OpenTableElement::write(IWORKDocumentInterface *iface) const
834 {
835 if (iface)
836 iface->openTable(m_propList);
837 }
838
write(IWORKDocumentInterface * iface) const839 void OpenTableCellElement::write(IWORKDocumentInterface *iface) const
840 {
841 if (iface)
842 iface->openTableCell(m_propList);
843 }
844
write(IWORKDocumentInterface * iface) const845 void OpenTableRowElement::write(IWORKDocumentInterface *iface) const
846 {
847 if (iface)
848 iface->openTableRow(m_propList);
849 }
850
write(IWORKDocumentInterface * iface) const851 void OpenUnorderedListLevelElement::write(IWORKDocumentInterface *iface) const
852 {
853 if (iface)
854 iface->openUnorderedListLevel(m_propList);
855 }
856
write(IWORKDocumentInterface * iface) const857 void SetStyleElement::write(IWORKDocumentInterface *iface) const
858 {
859 if (iface)
860 iface->setStyle(m_propList);
861 }
862
write(IWORKDocumentInterface * const iface) const863 void StartLayerElement::write(IWORKDocumentInterface *const iface) const
864 {
865 if (iface)
866 iface->startLayer(m_propList);
867 }
868
write(IWORKDocumentInterface * const iface) const869 void StartNotesElement::write(IWORKDocumentInterface *const iface) const
870 {
871 if (iface)
872 iface->startNotes(m_propList);
873 }
874
write(IWORKDocumentInterface * iface) const875 void StartTextObjectElement::write(IWORKDocumentInterface *iface) const
876 {
877 if (iface)
878 iface->startTextObject(m_propList);
879 }
880
881 }
882
IWORKOutputElements()883 IWORKOutputElements::IWORKOutputElements()
884 : m_elements()
885 {
886 }
887
append(const IWORKOutputElements & elements)888 void IWORKOutputElements::append(const IWORKOutputElements &elements)
889 {
890 m_elements.insert(m_elements.end(), elements.m_elements.begin(), elements.m_elements.end());
891 }
892
addShapesInSpreadsheet(const IWORKOutputElements & elements)893 void IWORKOutputElements::addShapesInSpreadsheet(const IWORKOutputElements &elements)
894 {
895 if (m_elements.empty())
896 {
897 ETONYEK_DEBUG_MSG(("IWORKOutputElements::addShapesInSpreadsheet: the elements is empty\n"));
898 return;
899 }
900 // TODO: check that the first element is really OpenSheet
901 m_elements.insert(m_elements.begin()+1, elements.m_elements.begin(), elements.m_elements.end());
902 }
903
write(IWORKDocumentInterface * iface) const904 void IWORKOutputElements::write(IWORKDocumentInterface *iface) const
905 {
906 ElementList_t::const_iterator iter;
907 for (iter = m_elements.begin(); iter != m_elements.end(); ++iter)
908 (*iter)->write(iface);
909 }
910
clear()911 void IWORKOutputElements::clear()
912 {
913 m_elements.clear();
914 }
915
empty() const916 bool IWORKOutputElements::empty() const
917 {
918 return m_elements.empty();
919 }
920
addCloseComment()921 void IWORKOutputElements::addCloseComment()
922 {
923 m_elements.push_back(make_shared<CloseCommentElement>());
924 }
925
addCloseEndnote()926 void IWORKOutputElements::addCloseEndnote()
927 {
928 m_elements.push_back(make_shared<CloseEndnoteElement>());
929 }
930
addCloseFooter()931 void IWORKOutputElements::addCloseFooter()
932 {
933 m_elements.push_back(make_shared<CloseFooterElement>());
934 }
935
addCloseFootnote()936 void IWORKOutputElements::addCloseFootnote()
937 {
938 m_elements.push_back(make_shared<CloseFootnoteElement>());
939 }
940
addCloseFrame()941 void IWORKOutputElements::addCloseFrame()
942 {
943 m_elements.push_back(make_shared<CloseFrameElement>());
944 }
945
addCloseGroup()946 void IWORKOutputElements::addCloseGroup()
947 {
948 m_elements.push_back(make_shared<CloseGroupElement>());
949 }
950
addCloseHeader()951 void IWORKOutputElements::addCloseHeader()
952 {
953 m_elements.push_back(make_shared<CloseHeaderElement>());
954 }
955
addCloseLink()956 void IWORKOutputElements::addCloseLink()
957 {
958 m_elements.push_back(make_shared<CloseLinkElement>());
959 }
960
addCloseListElement()961 void IWORKOutputElements::addCloseListElement()
962 {
963 m_elements.push_back(make_shared<CloseListElementElement>());
964 }
965
addCloseOrderedListLevel()966 void IWORKOutputElements::addCloseOrderedListLevel()
967 {
968 m_elements.push_back(make_shared<CloseOrderedListLevelElement>());
969 }
970
addCloseParagraph()971 void IWORKOutputElements::addCloseParagraph()
972 {
973 m_elements.push_back(make_shared<CloseParagraphElement>());
974 }
975
addCloseSection()976 void IWORKOutputElements::addCloseSection()
977 {
978 m_elements.push_back(make_shared<CloseSectionElement>());
979 }
980
addCloseSpan()981 void IWORKOutputElements::addCloseSpan()
982 {
983 m_elements.push_back(make_shared<CloseSpanElement>());
984 }
985
addCloseTable()986 void IWORKOutputElements::addCloseTable()
987 {
988 m_elements.push_back(make_shared<CloseTableElement>());
989 }
990
addCloseTableCell()991 void IWORKOutputElements::addCloseTableCell()
992 {
993 m_elements.push_back(make_shared<CloseTableCellElement>());
994 }
995
addCloseTableRow()996 void IWORKOutputElements::addCloseTableRow()
997 {
998 m_elements.push_back(make_shared<CloseTableRowElement>());
999 }
1000
addCloseUnorderedListLevel()1001 void IWORKOutputElements::addCloseUnorderedListLevel()
1002 {
1003 m_elements.push_back(make_shared<CloseUnorderedListLevelElement>());
1004 }
1005
addDefineSheetNumberingStyle(const librevenge::RVNGPropertyList & propList)1006 void IWORKOutputElements::addDefineSheetNumberingStyle(const librevenge::RVNGPropertyList &propList)
1007 {
1008 m_elements.push_back(make_shared<DefineSheetNumberingStyleElement>(propList));
1009 }
1010
addDrawGraphicObject(const librevenge::RVNGPropertyList & propList)1011 void IWORKOutputElements::addDrawGraphicObject(const librevenge::RVNGPropertyList &propList)
1012 {
1013 m_elements.push_back(make_shared<DrawGraphicObjectElement>(propList));
1014 }
1015
addDrawPath(const librevenge::RVNGPropertyList & propList)1016 void IWORKOutputElements::addDrawPath(const librevenge::RVNGPropertyList &propList)
1017 {
1018 m_elements.push_back(make_shared<DrawPathElement>(propList));
1019 }
1020
addDrawPolyline(const librevenge::RVNGPropertyList & propList)1021 void IWORKOutputElements::addDrawPolyline(const librevenge::RVNGPropertyList &propList)
1022 {
1023 m_elements.push_back(make_shared<DrawPolylineElement>(propList));
1024 }
1025
addEndLayer()1026 void IWORKOutputElements::addEndLayer()
1027 {
1028 m_elements.push_back(make_shared<EndLayerElement>());
1029 }
1030
addEndNotes()1031 void IWORKOutputElements::addEndNotes()
1032 {
1033 m_elements.push_back(make_shared<EndNotesElement>());
1034 }
1035
addEndTextObject()1036 void IWORKOutputElements::addEndTextObject()
1037 {
1038 m_elements.push_back(make_shared<EndTextObjectElement>());
1039 }
1040
addInsertBinaryObject(const librevenge::RVNGPropertyList & propList)1041 void IWORKOutputElements::addInsertBinaryObject(const librevenge::RVNGPropertyList &propList)
1042 {
1043 m_elements.push_back(make_shared<InsertBinaryObjectElement>(propList));
1044 }
1045
addInsertCoveredTableCell(const librevenge::RVNGPropertyList & propList)1046 void IWORKOutputElements::addInsertCoveredTableCell(const librevenge::RVNGPropertyList &propList)
1047 {
1048 m_elements.push_back(make_shared<InsertCoveredTableCellElement>(propList));
1049 }
1050
addInsertField(const librevenge::RVNGPropertyList & propList)1051 void IWORKOutputElements::addInsertField(const librevenge::RVNGPropertyList &propList)
1052 {
1053 m_elements.push_back(make_shared<InsertFieldElement>(propList));
1054 }
1055
addInsertLineBreak()1056 void IWORKOutputElements::addInsertLineBreak()
1057 {
1058 m_elements.push_back(make_shared<InsertLineBreakElement>());
1059 }
1060
addInsertSpace()1061 void IWORKOutputElements::addInsertSpace()
1062 {
1063 m_elements.push_back(make_shared<InsertSpaceElement>());
1064 }
1065
addInsertTab()1066 void IWORKOutputElements::addInsertTab()
1067 {
1068 m_elements.push_back(make_shared<InsertTabElement>());
1069 }
1070
addInsertText(const librevenge::RVNGString & text)1071 void IWORKOutputElements::addInsertText(const librevenge::RVNGString &text)
1072 {
1073 m_elements.push_back(make_shared<InsertTextElement>(text));
1074 }
1075
addOpenComment(const librevenge::RVNGPropertyList & propList)1076 void IWORKOutputElements::addOpenComment(const librevenge::RVNGPropertyList &propList)
1077 {
1078 m_elements.push_back(make_shared<OpenCommentElement>(propList));
1079 }
1080
addOpenEndnote(const librevenge::RVNGPropertyList & propList)1081 void IWORKOutputElements::addOpenEndnote(const librevenge::RVNGPropertyList &propList)
1082 {
1083 m_elements.push_back(make_shared<OpenEndnoteElement>(propList));
1084 }
1085
addOpenFormulaCell(const librevenge::RVNGPropertyList & propList,const IWORKFormula & formula,const boost::optional<unsigned> & formulaHC,const IWORKTableNameMapPtr_t & tableNameMap)1086 void IWORKOutputElements::addOpenFormulaCell(const librevenge::RVNGPropertyList &propList, const IWORKFormula &formula, const boost::optional<unsigned> &formulaHC, const IWORKTableNameMapPtr_t &tableNameMap)
1087 {
1088 m_elements.push_back(std::shared_ptr<OpenFormulaCellElement>(new OpenFormulaCellElement(propList, formula, formulaHC, tableNameMap)));
1089 }
1090
addOpenFooter(const librevenge::RVNGPropertyList & propList)1091 void IWORKOutputElements::addOpenFooter(const librevenge::RVNGPropertyList &propList)
1092 {
1093 m_elements.push_back(make_shared<OpenFooterElement>(propList));
1094 }
1095
addOpenFootnote(const librevenge::RVNGPropertyList & propList)1096 void IWORKOutputElements::addOpenFootnote(const librevenge::RVNGPropertyList &propList)
1097 {
1098 m_elements.push_back(make_shared<OpenFootnoteElement>(propList));
1099 }
1100
addOpenFrame(const librevenge::RVNGPropertyList & propList)1101 void IWORKOutputElements::addOpenFrame(const librevenge::RVNGPropertyList &propList)
1102 {
1103 m_elements.push_back(make_shared<OpenFrameElement>(propList));
1104 }
1105
addOpenGroup(const librevenge::RVNGPropertyList & propList)1106 void IWORKOutputElements::addOpenGroup(const librevenge::RVNGPropertyList &propList)
1107 {
1108 m_elements.push_back(make_shared<OpenGroupElement>(propList));
1109 }
1110
addOpenHeader(const librevenge::RVNGPropertyList & propList)1111 void IWORKOutputElements::addOpenHeader(const librevenge::RVNGPropertyList &propList)
1112 {
1113 m_elements.push_back(make_shared<OpenHeaderElement>(propList));
1114 }
1115
addOpenLink(const librevenge::RVNGPropertyList & propList)1116 void IWORKOutputElements::addOpenLink(const librevenge::RVNGPropertyList &propList)
1117 {
1118 m_elements.push_back(make_shared<OpenLinkElement>(propList));
1119 }
1120
addOpenListElement(const librevenge::RVNGPropertyList & propList)1121 void IWORKOutputElements::addOpenListElement(const librevenge::RVNGPropertyList &propList)
1122 {
1123 m_elements.push_back(make_shared<OpenListElementElement>(propList));
1124 }
1125
addOpenOrderedListLevel(const librevenge::RVNGPropertyList & propList)1126 void IWORKOutputElements::addOpenOrderedListLevel(const librevenge::RVNGPropertyList &propList)
1127 {
1128 m_elements.push_back(make_shared<OpenOrderedListLevelElement>(propList));
1129 }
1130
addOpenParagraph(const librevenge::RVNGPropertyList & propList)1131 void IWORKOutputElements::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
1132 {
1133 m_elements.push_back(make_shared<OpenParagraphElement>(propList));
1134 }
1135
addOpenSection(const librevenge::RVNGPropertyList & propList)1136 void IWORKOutputElements::addOpenSection(const librevenge::RVNGPropertyList &propList)
1137 {
1138 m_elements.push_back(make_shared<OpenSectionElement>(propList));
1139 }
1140
addOpenSpan(const librevenge::RVNGPropertyList & propList)1141 void IWORKOutputElements::addOpenSpan(const librevenge::RVNGPropertyList &propList)
1142 {
1143 m_elements.push_back(make_shared<OpenSpanElement>(propList));
1144 }
1145
addOpenTable(const librevenge::RVNGPropertyList & propList)1146 void IWORKOutputElements::addOpenTable(const librevenge::RVNGPropertyList &propList)
1147 {
1148 m_elements.push_back(make_shared<OpenTableElement>(propList));
1149 }
1150
addOpenTableCell(const librevenge::RVNGPropertyList & propList)1151 void IWORKOutputElements::addOpenTableCell(const librevenge::RVNGPropertyList &propList)
1152 {
1153 m_elements.push_back(make_shared<OpenTableCellElement>(propList));
1154 }
1155
addOpenTableRow(const librevenge::RVNGPropertyList & propList)1156 void IWORKOutputElements::addOpenTableRow(const librevenge::RVNGPropertyList &propList)
1157 {
1158 m_elements.push_back(make_shared<OpenTableRowElement>(propList));
1159 }
1160
addOpenUnorderedListLevel(const librevenge::RVNGPropertyList & propList)1161 void IWORKOutputElements::addOpenUnorderedListLevel(const librevenge::RVNGPropertyList &propList)
1162 {
1163 m_elements.push_back(make_shared<OpenUnorderedListLevelElement>(propList));
1164 }
1165
addSetStyle(const librevenge::RVNGPropertyList & propList)1166 void IWORKOutputElements::addSetStyle(const librevenge::RVNGPropertyList &propList)
1167 {
1168 m_elements.push_back(make_shared<SetStyleElement>(propList));
1169 }
1170
addStartLayer(const librevenge::RVNGPropertyList & propList)1171 void IWORKOutputElements::addStartLayer(const librevenge::RVNGPropertyList &propList)
1172 {
1173 m_elements.push_back(make_shared<StartLayerElement>(propList));
1174 }
1175
addStartNotes(const librevenge::RVNGPropertyList & propList)1176 void IWORKOutputElements::addStartNotes(const librevenge::RVNGPropertyList &propList)
1177 {
1178 m_elements.push_back(make_shared<StartNotesElement>(propList));
1179 }
1180
addStartTextObject(const librevenge::RVNGPropertyList & propList)1181 void IWORKOutputElements::addStartTextObject(const librevenge::RVNGPropertyList &propList)
1182 {
1183 m_elements.push_back(make_shared<StartTextObjectElement>(propList));
1184 }
1185
1186 }
1187
1188 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
1189