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: */
libzmf::Point::move
Point move(double dx, double dy) const
Definition: ZMFTypes.cpp:27
libzmf::ZMFCollector::endDocument
void endDocument()
Definition: ZMFCollector.cpp:339
libzmf::ZMFCollector::collectText
void collectText(const Text &text)
Definition: ZMFCollector.cpp:633
libzmf::Point::rotate
Point rotate(double rotation, const Point &center) const
Definition: ZMFTypes.cpp:32
libzmf::ZMFCollector::pageY
double pageY(double canvasY)
Definition: ZMFCollector.cpp:836
libzmf::Pen::dashDistance
double dashDistance
Definition: ZMFTypes.h:148
libzmf::Shadow::color
Color color
Definition: ZMFTypes.h:251
libzmf::Cell::rightBorder
boost::optional< Pen > rightBorder
Definition: ZMFTypes.h:347
libzmf::Style::transparency
boost::optional< Transparency > transparency
Definition: ZMFTypes.h:262
libzmf::ZMFCollector::endGroup
void endGroup()
Definition: ZMFCollector.cpp:414
libzmf::Style::shadow
boost::optional< Shadow > shadow
Definition: ZMFTypes.h:263
libzmf::LineCapType::FLAT
@ FLAT
libzmf::Text
Definition: ZMFTypes.h:333
libzmf::Curve
Definition: ZMFTypes.h:86
libzmf::ZMFCollector::ZMFCollector
ZMFCollector(const ZMFCollector &other)=delete
libzmf::VerticalAlignment
VerticalAlignment
Definition: ZMFTypes.h:305
libzmf::ZMFCollector::collectImage
void collectImage(const librevenge::RVNGBinaryData &image, const Point &topLeft, double width, double height, double rotation, bool mirrorHorizontal, bool mirrorVertical)
Definition: ZMFCollector.cpp:800
libzmf::HorizontalAlignment::BLOCK
@ BLOCK
libzmf::ZMFCollector::startPage
void startPage(const ZMFPageSettings &pageSettings)
Definition: ZMFCollector.cpp:352
libzmf::ZMFPageSettings::width
double width
Definition: ZMFTypes.h:391
libzmf::VerticalAlignment::MIDDLE
@ MIDDLE
libzmf::ZMFCollector::collectTextObject
void collectTextObject(const Text &text, const Point &topLeft, double width, double height, VerticalAlignment align, double rotation)
Definition: ZMFCollector.cpp:599
libzmf::ZMFCollector::startGroup
void startGroup()
Definition: ZMFCollector.cpp:407
ZMFTypes.h
libzmf::ZMFCollector::collectEllipse
void collectEllipse(const Point &c, double rx, double ry, double rotation)
Definition: ZMFCollector.cpp:448
libzmf::ZMFCollector::operator=
ZMFCollector & operator=(const ZMFCollector &other)=delete
libzmf::ZMFCollector::m_isLayerStarted
bool m_isLayerStarted
Definition: ZMFCollector.h:80
libzmf::Table::width
double width
Definition: ZMFTypes.h:380
libzmf::Style::pen
boost::optional< Pen > pen
Definition: ZMFTypes.h:260
libzmf::ZMFCollector::flushText
void flushText(std::string &text)
Definition: ZMFCollector.cpp:721
libzmf::ZMFCollector::startLayer
void startLayer()
Definition: ZMFCollector.cpp:385
libzmf::Cell::fill
boost::optional< Fill > fill
Definition: ZMFTypes.h:345
libzmf::ZMFCollector::~ZMFCollector
~ZMFCollector()
Definition: ZMFCollector.cpp:319
libzmf::ZMFCollector::endPage
void endPage()
Definition: ZMFCollector.cpp:375
libzmf::ZMFCollector::collectPath
void collectPath(const std::vector< Curve > &curves)
Definition: ZMFCollector.cpp:424
libzmf::Pen::lineCapType
LineCapType lineCapType
Definition: ZMFTypes.h:145
libzmf::Cell
Definition: ZMFTypes.h:342
libzmf::Shadow
Definition: ZMFTypes.h:246
libzmf::ZMFCollector
Definition: ZMFCollector.h:21
libzmf::Point
Definition: ZMFTypes.h:24
libzmf::HorizontalAlignment::RIGHT
@ RIGHT
libzmf::Point::x
double x
Definition: ZMFTypes.h:26
libzmf::Point::y
double y
Definition: ZMFTypes.h:27
libzmf::Curve::sectionTypes
std::vector< CurveType > sectionTypes
Definition: ZMFTypes.h:89
libzmf::ZMFCollector::m_pageSettings
ZMFPageSettings m_pageSettings
Definition: ZMFCollector.h:76
libzmf::Pen::color
Color color
Definition: ZMFTypes.h:143
libzmf::ZMFCollector::collectPolygon
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
libzmf::ZMFCollector::collectTable
void collectTable(const Table &table)
Definition: ZMFCollector.cpp:730
libzmf
Definition: BMIHeader.cpp:13
libzmf::ZMFCollector::m_style
Style m_style
Definition: ZMFCollector.h:82
libzmf::LineJoinType::BEVEL
@ BEVEL
libzmf::ZMFPageSettings
Definition: ZMFTypes.h:389
libzmf::ZMFPageSettings::height
double height
Definition: ZMFTypes.h:392
libzmf::ZMFCollector::m_isDocumentStarted
bool m_isDocumentStarted
Definition: ZMFCollector.h:78
libzmf::ZMFCollector::setStyle
void setStyle(const Style &style)
Definition: ZMFCollector.cpp:419
libzmf::Curve::points
std::vector< Point > points
Definition: ZMFTypes.h:88
libzmf::ZMFCollector::writeFill
void writeFill(librevenge::RVNGPropertyList &propList, const Fill &fill)
Definition: ZMFCollector.cpp:936
libzmf::ZMFCollector::startDocument
void startDocument()
Definition: ZMFCollector.cpp:327
libzmf::Pen::lineJoinType
LineJoinType lineJoinType
Definition: ZMFTypes.h:146
libzmf::VerticalAlignment::TOP
@ TOP
libzmf::Table::topLeftPoint
Point topLeftPoint
Definition: ZMFTypes.h:382
libzmf::Table::height
double height
Definition: ZMFTypes.h:381
libzmf::LineCapType::BUTT
@ BUTT
libzmf::ZMFCollector::writeStyle
void writeStyle(librevenge::RVNGPropertyList &propList, const Style &style, bool noFill=false)
Definition: ZMFCollector.cpp:843
libzmf::Fill
boost::variant< Color, Gradient, ImageFill > Fill
Definition: ZMFTypes.h:230
libzmf::Curve::closed
bool closed
Definition: ZMFTypes.h:90
ZMF_ALMOST_ZERO
#define ZMF_ALMOST_ZERO(m)
Definition: libzmf_utils.h:33
m_transparency
const boost::optional< Transparency > & m_transparency
Definition: ZMFCollector.cpp:304
libzmf::CurveType::LINE
@ LINE
libzmf::Pen::dashPattern
std::vector< double > dashPattern
Definition: ZMFTypes.h:147
libzmf::Pen::startArrow
ArrowPtr startArrow
Definition: ZMFTypes.h:149
libzmf::ZMFCollector::endLayer
void endLayer()
Definition: ZMFCollector.cpp:397
libzmf::ZMFCollector::writePen
void writePen(librevenge::RVNGPropertyList &propList, const Pen &pen)
Definition: ZMFCollector.cpp:864
libzmf::VerticalAlignment::BOTTOM
@ BOTTOM
libzmf::ZMFPageSettings::topOffset
double topOffset
Definition: ZMFTypes.h:394
libzmf::LineJoinType::MITER
@ MITER
m_propList
librevenge::RVNGPropertyList & m_propList
Definition: ZMFCollector.cpp:302
libzmf_utils.h
libzmf::Style::fill
boost::optional< Fill > fill
Definition: ZMFTypes.h:261
libzmf::Pen
Definition: ZMFTypes.h:141
libzmf::HorizontalAlignment::CENTER
@ CENTER
libzmf::Color
Definition: ZMFTypes.h:97
libzmf::GradientType::LINEAR
@ LINEAR
libzmf::ZMFCollector::writeShadow
void writeShadow(librevenge::RVNGPropertyList &propList, const Shadow &shadow)
Definition: ZMFCollector.cpp:944
libzmf::ZMFCollector::m_painter
librevenge::RVNGDrawingInterface * m_painter
Definition: ZMFCollector.h:74
libzmf::Cell::topBorder
boost::optional< Pen > topBorder
Definition: ZMFTypes.h:348
libzmf::HorizontalAlignment::LEFT
@ LEFT
libzmf::Pen::width
double width
Definition: ZMFTypes.h:144
libzmf::CurveType::BEZIER_CURVE
@ BEZIER_CURVE
libzmf::Table
Definition: ZMFTypes.h:376
libzmf::Shadow::opacity
double opacity
Definition: ZMFTypes.h:250
libzmf::HorizontalAlignment::FULL
@ FULL
libzmf::ZMFCollector::pageX
double pageX(double canvasX)
Definition: ZMFCollector.cpp:831
libzmf::Shadow::offset
Point offset
Definition: ZMFTypes.h:248
libzmf::LineCapType::ROUND
@ ROUND
libzmf::Cell::text
Text text
Definition: ZMFTypes.h:344
libzmf::Cell::leftBorder
boost::optional< Pen > leftBorder
Definition: ZMFTypes.h:346
libzmf::ZMFCollector::m_isPageStarted
bool m_isPageStarted
Definition: ZMFCollector.h:79
libzmf::Text::paragraphs
std::vector< Paragraph > paragraphs
Definition: ZMFTypes.h:335
libzmf::Table::columns
std::vector< Column > columns
Definition: ZMFTypes.h:379
libzmf::LineJoinType::ROUND
@ ROUND
libzmf::ZMFPageSettings::leftOffset
double leftOffset
Definition: ZMFTypes.h:393
libzmf::GradientType::RADIAL
@ RADIAL
libzmf::Pen::endArrow
ArrowPtr endArrow
Definition: ZMFTypes.h:150
libzmf::Cell::bottomBorder
boost::optional< Pen > bottomBorder
Definition: ZMFTypes.h:349
libzmf::rad2deg
double rad2deg(double value)
Definition: libzmf_utils.cpp:261
libzmf::Style
Definition: ZMFTypes.h:258
libzmf::ZMFPageSettings::color
Color color
Definition: ZMFTypes.h:395
ZMFCollector.h
libzmf::Table::rows
std::vector< Row > rows
Definition: ZMFTypes.h:378
ZMF_DEBUG_MSG
#define ZMF_DEBUG_MSG(M)
Definition: libzmf_utils.h:57
libzmf::Color::toString
librevenge::RVNGString toString() const
Definition: ZMFTypes.cpp:177
libzmf::ZMFCollector::collectArc
void collectArc(const Point &c, double rx, double ry, double beginAngle, double endAngle, bool closed, double rotation)
Definition: ZMFCollector.cpp:468

Generated for libzmf by doxygen 1.8.17