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 
18 namespace libetonyek
19 {
20 
21 class IWORKDocumentInterface;
22 
24 {
25  typedef std::map<unsigned, IWORKOutputID_t> PageGroupsMap_t;
26 
27 public:
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
49  void openSection(const IWORKStylePtr_t &style);
50  void closeSection();
51 
52  void sendAnnotation(const std::string &name);
53 
55 
56 private:
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 
69 private:
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: */
Definition: IWORKTypes.h:408
std::shared_ptr< IWORKGeometry > IWORKGeometryPtr_t
Definition: IWORKTypes_fwd.h:41
int m_page
Definition: PAGCollector.h:77
void closePageGroup()
Definition: PAGCollector.cpp:213
void fillShapeProperties(librevenge::RVNGPropertyList &props) override
Definition: PAGCollector.cpp:314
Definition: PAGCollector.h:23
double y
Definition: IWORKShape.cpp:47
void flushPageSpan(bool writeEmpty=true)
Definition: PAGCollector.cpp:365
std::unordered_map< std::string, IWORKOutputElements > PAGAnnotationMap_t
Definition: PAGTypes.h:26
Definition: IWORKToken.h:375
void openPageGroup(const boost::optional< int > &page)
Definition: PAGCollector.cpp:204
bool m_firstPageSpan
Definition: PAGCollector.h:72
Definition: PAGTypes.h:28
unsigned IWORKOutputID_t
Definition: IWORKTypes_fwd.h:28
Definition: KEY2Token.h:69
std::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition: IWORKStyle_fwd.h:21
PAGFootnoteKind
Definition: PAGEnum.h:16
boost::optional< IWORKPrintInfo > m_pageDimensions
Definition: PAGCollector.h:70
void collectAttachment(const IWORKOutputID_t &id, bool block)
void collectTextBody()
Definition: PAGCollector.cpp:133
std::map< unsigned, IWORKOutputID_t > PageGroupsMap_t
Definition: PAGCollector.h:25
Definition: IWORKToken.h:472
void setPageDimensions(const IWORKPrintInfo &dimensions)
Definition: PAGCollector.cpp:150
Definition: IWORKDocumentInterface.h:18
double x
Definition: IWORKShape.cpp:46
void closeSection()
Definition: PAGCollector.cpp:180
void openSection(const std::string &style)
Definition: PAGCollector.cpp:155
void drawTable() override
Definition: PAGCollector.cpp:225
void collectAttachmentPosition(const IWORKPosition &position)
Definition: PAGCollector.cpp:140
boost::optional< IWORKPosition > m_attachmentPosition
Definition: PAGCollector.h:80
void collectPublicationInfo(const PAGPublicationInfo &pubInfo)
Definition: PAGCollector.cpp:128
PAGFootnoteKind getFootnoteKind() const
Definition: PAGCollector.cpp:452
void startDocument()
Definition: PAGCollector.cpp:145
Definition: IWORKToken.h:421
PAGPublicationInfo m_pubInfo
Definition: PAGCollector.h:74
Definition: IWORKCollector.h:41
void sendAnnotation(const std::string &name)
Definition: PAGCollector.cpp:185
const char * name
Definition: IWORKToken.cpp:43
std::shared_ptr< IWORKText > IWORKTextPtr_t
Definition: IWORKText_fwd.h:20
void drawTextBox(const IWORKTextPtr_t &text, const glm::dmat3 &trafo, const IWORKGeometryPtr_t &boundingBox, const librevenge::RVNGPropertyList &style) override
Definition: PAGCollector.cpp:331
PageGroupsMap_t m_pageGroups
Definition: PAGCollector.h:76
Definition: IWORKTypes.h:52
void writePageGroupsObjects()
Definition: PAGCollector.cpp:446
bool createFrameStylesForTextBox() const override
Definition: PAGCollector.h:60
void drawMedia(double x, double y, const librevenge::RVNGPropertyList &data) override
Definition: PAGCollector.cpp:283
Definition: IWORKToken.h:178
Definition: NUM1Token.h:34
Definition: IWORKToken.h:418
PAGCollector(IWORKDocumentInterface *document)
Definition: PAGCollector.cpp:93
void collectAnnotation(const std::string &name)
Definition: PAGCollector.cpp:106
IWORKStylePtr_t m_currentSectionStyle
Definition: PAGCollector.h:71
PAGAnnotationMap_t m_annotations
Definition: PAGCollector.h:81

Generated for libetonyek by doxygen 1.8.6