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
27namespace 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
64 void fillOutputShapesByPage(PageShapesList_t &pageShapes) const;
65public:
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: */
Definition: Units.h:22
Definition: OutputShape.h:24
Builder class for PMD Documents.
Definition: PMDCollector.h:39
void paintShape(const OutputShape &shape, librevenge::RVNGDrawingInterface *) const
Definition: PMDCollector.cpp:178
std::vector< PMDColor > m_color
Definition: PMDCollector.h:51
boost::optional< PMDShapeUnit > m_pageWidth
Definition: PMDCollector.h:47
std::vector< PMDFont > m_font
Definition: PMDCollector.h:52
void setPageHeight(PMDShapeUnit)
Definition: PMDCollector.cpp:152
void addShapeToPage(unsigned pageID, const std::shared_ptr< PMDLineSet > &shape)
Definition: PMDCollector.cpp:173
bool m_doubleSided
Definition: PMDCollector.h:53
std::vector< PageShapes_t > PageShapesList_t
Definition: PMDCollector.h:41
void fillOutputShapesByPage_OneSided(PageShapesList_t &pageShapes) const
Definition: PMDCollector.cpp:682
void fillOutputShapesByPage_TwoSided(PageShapesList_t &pageShapes) const
Definition: PMDCollector.cpp:645
void setDoubleSided(bool)
Definition: PMDCollector.cpp:141
void addColor(const PMDColor &color)
Definition: PMDCollector.cpp:163
void addFont(const PMDFont &font)
Definition: PMDCollector.cpp:168
void draw(librevenge::RVNGDrawingInterface *) const
Definition: PMDCollector.cpp:710
boost::optional< PMDShapeUnit > m_pageHeight
Definition: PMDCollector.h:48
void writePage(const PMDPage &, librevenge::RVNGDrawingInterface *, const std::vector< std::shared_ptr< const OutputShape > > &) const
Definition: PMDCollector.cpp:622
void fillOutputShapesByPage(PageShapesList_t &pageShapes) const
Definition: PMDCollector.cpp:701
PMDCollector()
Definition: PMDCollector.cpp:136
unsigned addPage()
Definition: PMDCollector.cpp:157
void setPageWidth(PMDShapeUnit)
Definition: PMDCollector.cpp:147
std::vector< std::shared_ptr< const OutputShape > > PageShapes_t
Definition: PMDCollector.h:40
std::vector< PMDPage > m_pages
Definition: PMDCollector.h:50
Definition: PMDPage.h:24
Definition: geometry.h:23
Definition: PMDTypes.h:21
Definition: PMDTypes.h:33

Generated for libpagemaker by doxygen 1.9.6