PAGCollector.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 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#ifndef PAGCOLLECTOR_H_INCLUDED
11#define PAGCOLLECTOR_H_INCLUDED
12
13#include <map>
14
15#include "IWORKCollector.h"
16#include "PAGTypes.h"
17
18namespace libetonyek
19{
20
22
24{
25 typedef std::map<unsigned, IWORKOutputID_t> PageGroupsMap_t;
26
27public:
29
30 // collector functions
31
32 void collectPublicationInfo(const PAGPublicationInfo &pubInfo);
33
34 void collectTextBody();
35
36 void collectAttachment(const IWORKOutputID_t &id, bool block);
38
39 void collectAnnotation(const std::string &name);
40
41 void openPageGroup(const boost::optional<int> &page);
42 void closePageGroup();
43
44 // helper functions
45 void startDocument();
46 void setPageDimensions(const IWORKPrintInfo &dimensions);
47
48 void openSection(const std::string &style); // probably better to look for the style in the calling function
50 void closeSection();
51
52 void sendAnnotation(const std::string &name);
53
55
56private:
57 void drawTable() override;
58 void drawMedia(double x, double y, const librevenge::RVNGPropertyList &data) override;
59 void fillShapeProperties(librevenge::RVNGPropertyList &props) override;
60 bool createFrameStylesForTextBox() const override
61 {
62 return true;
63 }
64 void drawTextBox(const IWORKTextPtr_t &text, const glm::dmat3 &trafo, const IWORKGeometryPtr_t &boundingBox, const librevenge::RVNGPropertyList &style) override;
65
66 void flushPageSpan(bool writeEmpty = true);
68
69private:
70 boost::optional<IWORKPrintInfo> m_pageDimensions;
73
75
77 int m_page;
78
79 // FIXME: This is a clumsy workaround.
80 boost::optional<IWORKPosition> m_attachmentPosition;
82};
83
84} // namespace libetonyek
85
86#endif // PAGCOLLECTOR_H_INCLUDED
87
88/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
IWORKCollector(IWORKDocumentInterface *document)
Definition IWORKCollector.cpp:191
Definition IWORKDocumentInterface.h:19
void startDocument()
Definition PAGCollector.cpp:145
void collectPublicationInfo(const PAGPublicationInfo &pubInfo)
Definition PAGCollector.cpp:128
bool createFrameStylesForTextBox() const override
Definition PAGCollector.h:60
bool m_firstPageSpan
Definition PAGCollector.h:72
boost::optional< IWORKPosition > m_attachmentPosition
Definition PAGCollector.h:80
void collectAttachment(const IWORKOutputID_t &id, bool block)
void flushPageSpan(bool writeEmpty=true)
Definition PAGCollector.cpp:365
void setPageDimensions(const IWORKPrintInfo &dimensions)
Definition PAGCollector.cpp:150
void drawTextBox(const IWORKTextPtr_t &text, const glm::dmat3 &trafo, const IWORKGeometryPtr_t &boundingBox, const librevenge::RVNGPropertyList &style) override
Definition PAGCollector.cpp:331
void closePageGroup()
Definition PAGCollector.cpp:213
void closeSection()
Definition PAGCollector.cpp:180
void drawTable() override
Definition PAGCollector.cpp:225
void sendAnnotation(const std::string &name)
Definition PAGCollector.cpp:185
void fillShapeProperties(librevenge::RVNGPropertyList &props) override
Definition PAGCollector.cpp:314
std::map< unsigned, IWORKOutputID_t > PageGroupsMap_t
Definition PAGCollector.h:25
int m_page
Definition PAGCollector.h:77
void writePageGroupsObjects()
Definition PAGCollector.cpp:452
void openPageGroup(const boost::optional< int > &page)
Definition PAGCollector.cpp:204
PAGCollector(IWORKDocumentInterface *document)
Definition PAGCollector.cpp:93
void collectTextBody()
Definition PAGCollector.cpp:133
void collectAttachmentPosition(const IWORKPosition &position)
Definition PAGCollector.cpp:140
PAGFootnoteKind getFootnoteKind() const
Definition PAGCollector.cpp:458
IWORKStylePtr_t m_currentSectionStyle
Definition PAGCollector.h:71
void collectAnnotation(const std::string &name)
Definition PAGCollector.cpp:106
PAGAnnotationMap_t m_annotations
Definition PAGCollector.h:81
boost::optional< IWORKPrintInfo > m_pageDimensions
Definition PAGCollector.h:70
void openSection(const std::string &style)
Definition PAGCollector.cpp:155
void drawMedia(double x, double y, const librevenge::RVNGPropertyList &data) override
Definition PAGCollector.cpp:283
PAGPublicationInfo m_pubInfo
Definition PAGCollector.h:74
PageGroupsMap_t m_pageGroups
Definition PAGCollector.h:76
@ y
Definition IWORKToken.h:643
@ text
Definition IWORKToken.h:472
@ position
Definition IWORKToken.h:375
@ data
Definition IWORKToken.h:178
@ x
Definition IWORKToken.h:641
@ style
Definition IWORKToken.h:421
@ name
Definition IWORKToken.h:585
@ page
Definition KEY2Token.h:69
@ document
Definition NUM1Token.h:34
Definition IWORKBezierElement.cpp:21
unsigned IWORKOutputID_t
Definition IWORKTypes_fwd.h:28
std::shared_ptr< IWORKText > IWORKTextPtr_t
Definition IWORKText_fwd.h:22
PAGFootnoteKind
Definition PAGEnum.h:17
std::shared_ptr< IWORKGeometry > IWORKGeometryPtr_t
Definition IWORKTypes_fwd.h:45
std::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition IWORKStyle_fwd.h:23
std::unordered_map< std::string, IWORKOutputElements > PAGAnnotationMap_t
Definition PAGTypes.h:26
Definition IWORKTypes.h:53
Definition IWORKTypes.h:427
Definition PAGTypes.h:29

Generated for libetonyek by doxygen 1.13.2