ZMFCollector.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is a part of the libzmf 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 #ifndef ZMFCOLLECTOR_H_INCLUDED
11 #define ZMFCOLLECTOR_H_INCLUDED
12 
13 #include <librevenge/librevenge.h>
14 #include "libzmf_utils.h"
15 #include "ZMFTypes.h"
16 #include <vector>
17 
18 namespace libzmf
19 {
20 
22 {
23  // disable copying
24  ZMFCollector(const ZMFCollector &other) = delete;
25  ZMFCollector &operator=(const ZMFCollector &other) = delete;
26 
27 public:
28  ZMFCollector(librevenge::RVNGDrawingInterface *painter);
29  ~ZMFCollector();
30 
31  void startDocument();
32  void endDocument();
33 
34  void startPage(const ZMFPageSettings &pageSettings);
35  void endPage();
36 
37  void startLayer();
38  void endLayer();
39 
40  void startGroup();
41  void endGroup();
42 
43  void setStyle(const Style &style);
44 
45  void collectPath(const std::vector<Curve> &curves);
46  void collectPath(const Curve &curve);
47 
48  void collectEllipse(const Point &c, double rx, double ry, double rotation);
49  void collectArc(const Point &c, double rx, double ry, double beginAngle, double endAngle, bool closed, double rotation);
50 
51  void collectPolygon(const Point &c, double rx, double ry, uint32_t peaksCount, const Curve &peak,
52  double rotation, bool mirrorHorizontal, bool mirrorVertical);
53 
54  void collectTextObject(const Text &text, const Point &topLeft, double width, double height,
55  VerticalAlignment align, double rotation);
56 
57  void collectTable(const Table &table);
58 
59  void collectImage(const librevenge::RVNGBinaryData &image, const Point &topLeft, double width, double height,
60  double rotation, bool mirrorHorizontal, bool mirrorVertical);
61 
62 private:
63  double pageX(double canvasX);
64  double pageY(double canvasY);
65 
66  void writeStyle(librevenge::RVNGPropertyList &propList, const Style &style, bool noFill = false);
67  void writePen(librevenge::RVNGPropertyList &propList, const Pen &pen);
68  void writeFill(librevenge::RVNGPropertyList &propList, const Fill &fill);
69  void writeShadow(librevenge::RVNGPropertyList &propList, const Shadow &shadow);
70 
71  void collectText(const Text &text);
72  void flushText(std::string &text);
73 
74  librevenge::RVNGDrawingInterface *m_painter;
75 
77 
81 
83 };
84 
85 }
86 
87 #endif // ZMFCOLLECTOR_H_INCLUDED
88 
89 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: ZMFTypes.h:24
void startLayer()
Definition: ZMFCollector.cpp:385
Definition: ZMFTypes.h:246
void collectTable(const Table &table)
Definition: ZMFCollector.cpp:730
void collectTextObject(const Text &text, const Point &topLeft, double width, double height, VerticalAlignment align, double rotation)
Definition: ZMFCollector.cpp:599
void startPage(const ZMFPageSettings &pageSettings)
Definition: ZMFCollector.cpp:352
librevenge::RVNGDrawingInterface * m_painter
Definition: ZMFCollector.h:74
void collectEllipse(const Point &c, double rx, double ry, double rotation)
Definition: ZMFCollector.cpp:448
void endDocument()
Definition: ZMFCollector.cpp:339
void collectPath(const std::vector< Curve > &curves)
Definition: ZMFCollector.cpp:424
void writeStyle(librevenge::RVNGPropertyList &propList, const Style &style, bool noFill=false)
Definition: ZMFCollector.cpp:843
ZMFCollector(const ZMFCollector &other)=delete
void startDocument()
Definition: ZMFCollector.cpp:327
void endPage()
Definition: ZMFCollector.cpp:375
ZMFPageSettings m_pageSettings
Definition: ZMFCollector.h:76
Definition: ZMFTypes.h:389
boost::variant< Color, Gradient, ImageFill > Fill
Definition: ZMFTypes.h:230
void writePen(librevenge::RVNGPropertyList &propList, const Pen &pen)
Definition: ZMFCollector.cpp:864
bool m_isPageStarted
Definition: ZMFCollector.h:79
~ZMFCollector()
Definition: ZMFCollector.cpp:319
void endGroup()
Definition: ZMFCollector.cpp:414
void collectPolygon(const Point &c, double rx, double ry, uint32_t peaksCount, const Curve &peak, double rotation, bool mirrorHorizontal, bool mirrorVertical)
Definition: ZMFCollector.cpp:535
void writeShadow(librevenge::RVNGPropertyList &propList, const Shadow &shadow)
Definition: ZMFCollector.cpp:944
bool m_isLayerStarted
Definition: ZMFCollector.h:80
ZMFCollector & operator=(const ZMFCollector &other)=delete
Definition: ZMFTypes.h:86
void setStyle(const Style &style)
Definition: ZMFCollector.cpp:419
void collectArc(const Point &c, double rx, double ry, double beginAngle, double endAngle, bool closed, double rotation)
Definition: ZMFCollector.cpp:468
void collectText(const Text &text)
Definition: ZMFCollector.cpp:633
void endLayer()
Definition: ZMFCollector.cpp:397
Definition: BMIHeader.cpp:13
Definition: ZMFTypes.h:258
Definition: ZMFCollector.h:21
Definition: ZMFTypes.h:141
VerticalAlignment
Definition: ZMFTypes.h:305
double pageX(double canvasX)
Definition: ZMFCollector.cpp:831
Style m_style
Definition: ZMFCollector.h:82
Definition: ZMFTypes.h:376
void collectImage(const librevenge::RVNGBinaryData &image, const Point &topLeft, double width, double height, double rotation, bool mirrorHorizontal, bool mirrorVertical)
Definition: ZMFCollector.cpp:800
bool m_isDocumentStarted
Definition: ZMFCollector.h:78
void startGroup()
Definition: ZMFCollector.cpp:407
void flushText(std::string &text)
Definition: ZMFCollector.cpp:721
void writeFill(librevenge::RVNGPropertyList &propList, const Fill &fill)
Definition: ZMFCollector.cpp:936
double pageY(double canvasY)
Definition: ZMFCollector.cpp:836
Definition: ZMFTypes.h:333

Generated for libzmf by doxygen 1.8.14