PMDCollector.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 part of the libpagemaker 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 __PMDCOLLECTOR_H__
11 #define __PMDCOLLECTOR_H__
12 
13 #include <memory>
14 #include <stdint.h>
15 #include <string>
16 #include <vector>
17 
18 #include <boost/optional.hpp>
19 
20 #include "OutputShape.h"
21 #include "PMDExceptions.h"
22 #include "PMDPage.h"
23 #include "PMDTypes.h"
24 #include "Units.h"
25 #include "geometry.h"
26 
27 namespace libpagemaker
28 {
29 
30 
39 {
40  typedef std::vector<std::shared_ptr<const OutputShape> > PageShapes_t;
41  typedef std::vector<PageShapes_t> PageShapesList_t;
42 
43  /*
44  * Height and width in PMD page units.
45  * One PMD page unit is 1/20 of a point (1/720 inch)
46  */
47  boost::optional<PMDShapeUnit> m_pageWidth;
48  boost::optional<PMDShapeUnit> m_pageHeight;
49 
50  std::vector<PMDPage> m_pages;
51  std::vector<PMDColor> m_color;
52  std::vector<PMDFont> m_font;
54 
55  void writePage(const PMDPage &,
56  librevenge::RVNGDrawingInterface *,
57  const std::vector<std::shared_ptr<const OutputShape> > &) const;
58 
59  void paintShape(const OutputShape &shape,
60  librevenge::RVNGDrawingInterface *) const;
61 
62  void fillOutputShapesByPage_OneSided(PageShapesList_t &pageShapes) const;
63  void fillOutputShapesByPage_TwoSided(PageShapesList_t &pageShapes) const;
64  void fillOutputShapesByPage(PageShapesList_t &pageShapes) const;
65 public:
66  PMDCollector();
67 
68  /* State-mutating functions */
71  void setDoubleSided(bool);
72  void addShapeToPage(unsigned pageID, const std::shared_ptr<PMDLineSet> &shape);
73  void addColor(const PMDColor &color);
74  void addFont(const PMDFont &font);
75 
76  unsigned addPage();
77 
78  /* Output functions */
79  void draw(librevenge::RVNGDrawingInterface *) const;
80 };
81 
82 }
83 
84 #endif /* __PMDCOLLECTOR_H__ */
85 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
void addShapeToPage(unsigned pageID, const std::shared_ptr< PMDLineSet > &shape)
Definition: PMDCollector.cpp:173
void setDoubleSided(bool)
Definition: PMDCollector.cpp:141
std::vector< PMDColor > m_color
Definition: PMDCollector.h:51
void setPageWidth(PMDShapeUnit)
Definition: PMDCollector.cpp:147
boost::optional< PMDShapeUnit > m_pageWidth
Definition: PMDCollector.h:47
PMDCollector()
Definition: PMDCollector.cpp:136
bool m_doubleSided
Definition: PMDCollector.h:53
void draw(librevenge::RVNGDrawingInterface *) const
Definition: PMDCollector.cpp:710
Definition: PMDTypes.h:20
Definition: PMDPage.h:23
void addFont(const PMDFont &font)
Definition: PMDCollector.cpp:168
std::vector< PMDPage > m_pages
Definition: PMDCollector.h:50
void paintShape(const OutputShape &shape, librevenge::RVNGDrawingInterface *) const
Definition: PMDCollector.cpp:178
void writePage(const PMDPage &, librevenge::RVNGDrawingInterface *, const std::vector< std::shared_ptr< const OutputShape > > &) const
Definition: PMDCollector.cpp:622
void addColor(const PMDColor &color)
Definition: PMDCollector.cpp:163
std::vector< std::shared_ptr< const OutputShape > > PageShapes_t
Definition: PMDCollector.h:40
Definition: Units.h:21
void setPageHeight(PMDShapeUnit)
Definition: PMDCollector.cpp:152
void fillOutputShapesByPage_TwoSided(PageShapesList_t &pageShapes) const
Definition: PMDCollector.cpp:645
Definition: OutputShape.h:23
void fillOutputShapesByPage_OneSided(PageShapesList_t &pageShapes) const
Definition: PMDCollector.cpp:682
std::vector< PageShapes_t > PageShapesList_t
Definition: PMDCollector.h:41
Definition: geometry.h:22
Definition: PMDTypes.h:32
Builder class for PMD Documents.
Definition: PMDCollector.h:38
std::vector< PMDFont > m_font
Definition: PMDCollector.h:52
unsigned addPage()
Definition: PMDCollector.cpp:157
boost::optional< PMDShapeUnit > m_pageHeight
Definition: PMDCollector.h:48
void fillOutputShapesByPage(PageShapesList_t &pageShapes) const
Definition: PMDCollector.cpp:701

Generated for libpagemaker by doxygen 1.8.13