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: */
libetonyek::IWORKCollector::m_headers
IWORKHeaderFooterMap_t m_headers
Definition: IWORKCollector.h:179
libetonyek::IWORKCollector::getOutputManager
IWORKOutputManager & getOutputManager()
Definition: IWORKCollector.cpp:1016
libetonyek::IWORKToken::name
@ name
Definition: IWORKToken.h:585
libetonyek::PAGPublicationInfo
Definition: PAGTypes.h:29
libetonyek::IWORKDocumentInterface
Definition: IWORKDocumentInterface.h:19
libetonyek::PAGCollector::collectAnnotation
void collectAnnotation(const std::string &name)
Definition: PAGCollector.cpp:106
libetonyek::IWORKOutputManager::pop
void pop()
Pop a output element from the stack.
Definition: IWORKOutputManager.cpp:33
libetonyek
Definition: IWORKBezierElement.cpp:21
libetonyek::IWORKToken::h
@ h
Definition: IWORKToken.h:557
m_page
optional< int > m_page
Definition: PAG1Parser.cpp:643
libetonyek::PAGCollector::m_currentSectionStyle
IWORKStylePtr_t m_currentSectionStyle
Definition: PAGCollector.h:71
libetonyek::IWORKToken::metadata
@ metadata
Definition: IWORKToken.h:328
libetonyek::IWORKOutputManager::getCurrent
IWORKOutputElements & getCurrent()
Get the current output element.
Definition: IWORKOutputManager.cpp:57
IWORKProperties.h
libetonyek::IWORKToken::w
@ w
Definition: IWORKToken.h:638
libetonyek::IWORKToken::pos
@ pos
Definition: IWORKToken.h:599
libetonyek::IWORKCollector::m_outputManager
IWORKOutputManager m_outputManager
Definition: IWORKCollector.h:172
libetonyek::IWORKToken::style
@ style
Definition: IWORKToken.h:421
libetonyek::PAGCollector::collectAttachment
void collectAttachment(const IWORKOutputID_t &id, bool block)
m_y
boost::optional< unsigned > m_y
Definition: IWORKFormulaElement.cpp:111
libetonyek::IWORKOutputManager::save
IWORKOutputID_t save()
Save the current output element.
Definition: IWORKOutputManager.cpp:39
libetonyek::PAGCollector::m_firstPageSpan
bool m_firstPageSpan
Definition: PAGCollector.h:72
libetonyek::PAGCollector
Definition: PAGCollector.h:24
libetonyek::PAGCollector::collectTextBody
void collectTextBody()
Definition: PAGCollector.cpp:133
libetonyek::PAGAnnotationMap_t
std::unordered_map< std::string, IWORKOutputElements > PAGAnnotationMap_t
Definition: PAGTypes.h:26
ETONYEK_DEBUG_MSG
#define ETONYEK_DEBUG_MSG(M)
Definition: libetonyek_utils.h:54
libetonyek::IWORKDocumentInterface::openFooter
virtual void openFooter(const librevenge::RVNGPropertyList &propList)=0
libetonyek::IWORKDocumentInterface::openHeader
virtual void openHeader(const librevenge::RVNGPropertyList &propList)=0
PAGTypes.h
libetonyek::IWORKHeaderFooterMap_t
std::unordered_map< std::string, IWORKOutputElements > IWORKHeaderFooterMap_t
Definition: IWORKTypes.h:40
libetonyek::IWORKToken::data
@ data
Definition: IWORKToken.h:178
libetonyek::IWORKCollector::m_footers
IWORKHeaderFooterMap_t m_footers
Definition: IWORKCollector.h:180
libetonyek::IWORKTextPtr_t
std::shared_ptr< IWORKText > IWORKTextPtr_t
Definition: IWORKText_fwd.h:20
IWORKTable.h
libetonyek::PAGCollector::drawTextBox
void drawTextBox(const IWORKTextPtr_t &text, const glm::dmat3 &trafo, const IWORKGeometryPtr_t &boundingBox, const librevenge::RVNGPropertyList &style) override
Definition: PAGCollector.cpp:331
libetonyek::PAGCollector::collectAttachmentPosition
void collectAttachmentPosition(const IWORKPosition &position)
Definition: PAGCollector.cpp:140
libetonyek::IWORKCollector::getOpenGroupLevel
bool getOpenGroupLevel() const
Definition: IWORKCollector.h:111
libetonyek::PAGCollector::startDocument
void startDocument()
Definition: PAGCollector.cpp:145
libetonyek::IWORKOutputElements::addOpenComment
void addOpenComment(const librevenge::RVNGPropertyList &propList)
Definition: IWORKOutputElements.cpp:1076
libetonyek::IWORKOutputElements::clear
void clear()
Definition: IWORKOutputElements.cpp:911
libetonyek::PAGCollector::m_pageGroups
PageGroupsMap_t m_pageGroups
Definition: PAGCollector.h:76
libetonyek::PAGCollector::m_annotations
PAGAnnotationMap_t m_annotations
Definition: PAGCollector.h:81
libetonyek::IWORKCollector::m_stylesheetStack
std::stack< IWORKStylesheetPtr_t > m_stylesheetStack
Definition: IWORKCollector.h:171
libetonyek::IWORKCollector::startDocument
void startDocument(const librevenge::RVNGPropertyList &props)
Definition: IWORKCollector.cpp:522
libetonyek::PAGCollector::m_page
int m_page
Definition: PAGCollector.h:77
libetonyek::IWORKCollector::fillMetadata
void fillMetadata(librevenge::RVNGPropertyList &props)
Definition: IWORKCollector.cpp:732
libetonyek::PAGCollector::setPageDimensions
void setPageDimensions(const IWORKPrintInfo &dimensions)
Definition: PAGCollector.cpp:150
libetonyek::IWORKDocumentInterface::setDocumentMetaData
virtual void setDocumentMetaData(const librevenge::RVNGPropertyList &propList)=0
libetonyek::IWORKOutputElements::addCloseFrame
void addCloseFrame()
Definition: IWORKOutputElements.cpp:941
libetonyek::pt2in
double pt2in(const double d)
Convert a length from points to inches.
Definition: libetonyek_utils.cpp:225
libetonyek::IWORKCollector::m_currentTable
std::shared_ptr< IWORKTable > m_currentTable
Definition: IWORKCollector.h:176
libetonyek::IWORKOutputManager::push
void push()
Push a new output element onto the stack.
Definition: IWORKOutputManager.cpp:28
libetonyek::IWORKOutputManager::get
IWORKOutputElements & get(IWORKOutputID_t id)
Get output element with ID id.
Definition: IWORKOutputManager.cpp:46
libetonyek::PAGCollector::m_pageDimensions
boost::optional< IWORKPrintInfo > m_pageDimensions
Definition: PAGCollector.h:70
libetonyek::IWORKOutputElements::write
void write(IWORKDocumentInterface *iface) const
Definition: IWORKOutputElements.cpp:904
libetonyek::IWORKToken::first
@ first
Definition: IWORKToken.h:531
libetonyek::IWORKOutputElements::addInsertBinaryObject
void addInsertBinaryObject(const librevenge::RVNGPropertyList &propList)
Definition: IWORKOutputElements.cpp:1041
libetonyek::PAGCollector::openPageGroup
void openPageGroup(const boost::optional< int > &page)
Definition: PAGCollector.cpp:204
libetonyek::PAGCollector::fillShapeProperties
void fillShapeProperties(librevenge::RVNGPropertyList &props) override
Definition: PAGCollector.cpp:314
IWORKPath.h
libetonyek::IWORKToken::string
@ string
Definition: IWORKToken.h:418
libetonyek::PAGPublicationInfo::m_footnoteKind
PAGFootnoteKind m_footnoteKind
Definition: PAGTypes.h:34
libetonyek::PAGFootnoteKind
PAGFootnoteKind
Definition: PAGEnum.h:17
libetonyek::IWORKDocumentInterface::closeFooter
virtual void closeFooter()=0
libetonyek::PAGCollector::writePageGroupsObjects
void writePageGroupsObjects()
Definition: PAGCollector.cpp:446
libetonyek::PAGCollector::collectPublicationInfo
void collectPublicationInfo(const PAGPublicationInfo &pubInfo)
Definition: PAGCollector.cpp:128
libetonyek::PAGCollector::PAGCollector
PAGCollector(IWORKDocumentInterface *document)
Definition: PAGCollector.cpp:93
libetonyek::IWORKOutputElements::addStartTextObject
void addStartTextObject(const librevenge::RVNGPropertyList &propList)
Definition: IWORKOutputElements.cpp:1181
libetonyek::IWORKOutputElements::empty
bool empty() const
Definition: IWORKOutputElements.cpp:916
IWORKDocumentInterface.h
libetonyek::KEY2Token::page
@ page
Definition: KEY2Token.h:69
libetonyek::IWORKDocumentInterface::closeHeader
virtual void closeHeader()=0
libetonyek::PAGCollector::m_pubInfo
PAGPublicationInfo m_pubInfo
Definition: PAGCollector.h:74
IWORKText.h
libetonyek_utils.h
libetonyek::NUM1Token::document
@ document
Definition: NUM1Token.h:34
y
double y
Definition: IWORKShape.cpp:47
libetonyek::IWORKCollector
Definition: IWORKCollector.h:42
libetonyek::PAGCollector::createFrameStylesForTextBox
bool createFrameStylesForTextBox() const override
Definition: PAGCollector.h:60
libetonyek::IWORKToken::text
@ text
Definition: IWORKToken.h:472
libetonyek::IWORKDocumentInterface::openPageSpan
virtual void openPageSpan(const librevenge::RVNGPropertyList &propList)=0
libetonyek::PAGCollector::m_attachmentPosition
boost::optional< IWORKPosition > m_attachmentPosition
Definition: PAGCollector.h:80
libetonyek::IWORKOutputElements::addCloseComment
void addCloseComment()
Definition: IWORKOutputElements.cpp:921
m_pubInfo
PAGPublicationInfo m_pubInfo
Definition: PAG1Parser.cpp:445
libetonyek::PAGCollector::openSection
void openSection(const std::string &style)
Definition: PAGCollector.cpp:155
libetonyek::IWORKCollector::fillWrapProps
static void fillWrapProps(const IWORKStylePtr_t style, librevenge::RVNGPropertyList &props, const boost::optional< int > &order)
Definition: IWORKCollector.cpp:966
IWORKCollector.h
x
double x
Definition: IWORKShape.cpp:46
libetonyek::PAGCollector::drawMedia
void drawMedia(double x, double y, const librevenge::RVNGPropertyList &data) override
Definition: PAGCollector.cpp:283
IWORKOutputElements.h
libetonyek::IWORKGeometryPtr_t
std::shared_ptr< IWORKGeometry > IWORKGeometryPtr_t
Definition: IWORKTypes_fwd.h:41
libetonyek::IWORKStylePtr_t
std::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition: IWORKStyle_fwd.h:21
libetonyek::PAGCollector::PageGroupsMap_t
std::map< unsigned, IWORKOutputID_t > PageGroupsMap_t
Definition: PAGCollector.h:25
libetonyek::IWORKPosition
Definition: IWORKTypes.h:53
libetonyek::PAGCollector::sendAnnotation
void sendAnnotation(const std::string &name)
Definition: PAGCollector.cpp:185
libetonyek::IWORKCollector::closeGroup
void closeGroup()
Definition: IWORKCollector.cpp:576
libetonyek::IWORKToken::geometry
@ geometry
Definition: IWORKToken.h:236
PAGProperties.h
libetonyek::IWORKPrintInfo
Definition: IWORKTypes.h:409
libetonyek::IWORKCollector::openGroup
void openGroup()
Definition: IWORKCollector.cpp:563
libetonyek::IWORKOutputElements::addOpenFrame
void addOpenFrame(const librevenge::RVNGPropertyList &propList)
Definition: IWORKOutputElements.cpp:1101
libetonyek::PAGCollector::closePageGroup
void closePageGroup()
Definition: PAGCollector.cpp:213
libetonyek::IWORKOutputID_t
unsigned IWORKOutputID_t
Definition: IWORKTypes_fwd.h:28
libetonyek::get
const ValueT & get(const detail::IWAFieldImpl< TagV, ValueT, Reader > &field)
Definition: IWAField.h:190
libetonyek::IWORKCollector::writeFill
static void writeFill(const IWORKFill &fill, librevenge::RVNGPropertyList &props)
Definition: IWORKCollector.cpp:1234
libetonyek::PAGCollector::flushPageSpan
void flushPageSpan(bool writeEmpty=true)
Definition: PAGCollector.cpp:365
libetonyek::IWORKCollector::m_inAttachments
bool m_inAttachments
Definition: IWORKCollector.h:187
libetonyek::KEY1Token::level
@ level
Definition: KEY1Token.h:158
libetonyek::IWORKDocumentInterface::closePageSpan
virtual void closePageSpan()=0
libetonyek::IWORKCollector::m_levelStack
std::stack< Level > m_levelStack
Definition: IWORKCollector.h:169
libetonyek::IWORKCollector::m_currentText
std::shared_ptr< IWORKText > m_currentText
Definition: IWORKCollector.h:177
libetonyek::PAGCollector::getFootnoteKind
PAGFootnoteKind getFootnoteKind() const
Definition: PAGCollector.cpp:452
m_x
boost::optional< unsigned > m_x
Definition: IWORKFormulaElement.cpp:111
libetonyek::IWORKOutputElements::addEndTextObject
void addEndTextObject()
Definition: IWORKOutputElements.cpp:1036
libetonyek::PAGCollector::closeSection
void closeSection()
Definition: PAGCollector.cpp:180
PAGCollector.h
libetonyek::PAGCollector::drawTable
void drawTable() override
Definition: PAGCollector.cpp:225
libetonyek::IWORKCollector::m_document
IWORKDocumentInterface * m_document
Definition: IWORKCollector.h:166
libetonyek::IWORKOutputElements
Definition: IWORKOutputElements.h:33
libetonyek::IWORKToken::position
@ position
Definition: IWORKToken.h:375

Generated for libetonyek by doxygen 1.8.20