10#ifndef QXPCONTENTCOLLECTOR_H_INCLUDED
11#define QXPCONTENTCOLLECTOR_H_INCLUDED
15#include <unordered_map>
43 void collectLine(
const std::shared_ptr<Line> &line)
override;
44 void collectBox(
const std::shared_ptr<Box> &box)
override;
46 void collectTextPath(
const std::shared_ptr<TextPath> &textPath)
override;
47 void collectGroup(
const std::shared_ptr<Group> &group)
override;
49 void collectText(
const std::shared_ptr<Text> &text,
const unsigned linkId)
override;
57 template<
typename T,
typename TThis>
74 static_assert(std::is_base_of<Object, T>::value,
"T is not Object");
93 return object->zIndex;
98 object->zIndex = value;
109 std::vector<std::shared_ptr<CollectedObject<Group>>>
groups;
111 std::vector<std::shared_ptr<CollectedObjectInterface>>
objects;
117 double getX(
const double x)
const;
118 double getX(
const std::shared_ptr<Object> &obj)
const;
119 double getY(
const double y)
const;
120 double getY(
const std::shared_ptr<Object> &obj)
const;
141 auto collectedObj = std::make_shared<CollectedObject<T>>(obj, std::bind(handler,
this, std::placeholders::_1, std::placeholders::_2));
146 void draw(
bool force =
false);
148 void collectTextObject(
const std::shared_ptr<TextObject> &textObj, CollectedPage &page);
152 void drawLine(
const std::shared_ptr<Line> &line,
const CollectedPage &page);
153 void drawBox(
const std::shared_ptr<Box> &box,
const CollectedPage &page);
154 void drawRectangle(
const std::shared_ptr<Box> &box,
const CollectedPage &page);
155 void drawOval(
const std::shared_ptr<Box> &oval,
const CollectedPage &page);
156 void drawPolygon(
const std::shared_ptr<Box> &polygon,
const CollectedPage &page);
157 void drawBezierBox(
const std::shared_ptr<Box> &box,
const CollectedPage &page);
158 void drawTextBox(
const std::shared_ptr<TextBox> &textbox,
const CollectedPage &page);
159 void drawTextPath(
const std::shared_ptr<TextPath> &textPath,
const CollectedPage &page);
161 void drawGroup(
const std::shared_ptr<Group> &group,
const CollectedPage &page);
163 void writeFill(librevenge::RVNGPropertyList &propList,
const boost::optional<Fill> &fill);
164 void writeFrame(librevenge::RVNGPropertyList &propList,
const Frame &frame,
const bool runaround,
const bool allowHairline =
false);
Definition QXPCollector.h:28
Definition QXPContentCollector.h:61
virtual unsigned zIndex() const =0
virtual void setZIndex(unsigned value)=0
virtual ~CollectedObjectInterface()=default
virtual void draw(const CollectedPage &page)=0
Definition QXPContentCollector.h:73
bool m_isProcessed
Definition QXPContentCollector.h:103
void draw(const CollectedPage &page) override
Definition QXPContentCollector.h:82
void setZIndex(unsigned value) override
Definition QXPContentCollector.h:96
unsigned zIndex() const override
Definition QXPContentCollector.h:91
CollectedObject(const std::shared_ptr< T > &obj, const ObjectHandler< T > &handler)
Definition QXPContentCollector.h:78
const std::shared_ptr< T > object
Definition QXPContentCollector.h:76
const ObjectHandler< T > m_handler
Definition QXPContentCollector.h:102
Definition QXPContentCollector.h:26
void endDocument() override
Definition QXPContentCollector.cpp:319
bool m_isCollectingFacingPage
Definition QXPContentCollector.h:127
std::vector< CollectedPage > m_unprocessedPages
Definition QXPContentCollector.h:129
librevenge::RVNGDrawingInterface * m_painter
Definition QXPContentCollector.h:124
void drawOval(const std::shared_ptr< Box > &oval, const CollectedPage &page)
Definition QXPContentCollector.cpp:626
void collectTextObject(const std::shared_ptr< TextObject > &textObj, CollectedPage &page)
Definition QXPContentCollector.cpp:472
void drawBezierBox(const std::shared_ptr< Box > &box, const CollectedPage &page)
Definition QXPContentCollector.cpp:676
void drawText(const std::shared_ptr< Text > &text, const LinkedTextSettings &linkSettings)
Definition QXPContentCollector.cpp:825
void startPage(const Page &page) override
Definition QXPContentCollector.cpp:335
std::function< void(const std::shared_ptr< T > &obj, const CollectedPage &)> ObjectHandler
Definition QXPContentCollector.h:55
~QXPContentCollector()
Definition QXPContentCollector.cpp:301
QXPDocumentProperties m_docProps
Definition QXPContentCollector.h:134
void drawRectangle(const std::shared_ptr< Box > &box, const CollectedPage &page)
Definition QXPContentCollector.cpp:591
CollectedPage & getInsertionPage(const std::shared_ptr< Object > &obj)
Definition QXPContentCollector.cpp:414
std::function< void(TThis *, const std::shared_ptr< T > &obj, const CollectedPage &)> ObjectHandlerMember
Definition QXPContentCollector.h:58
void drawGroup(const std::shared_ptr< Group > &group, const CollectedPage &page)
Definition QXPContentCollector.cpp:1041
void updateLinkedTexts()
Definition QXPContentCollector.cpp:494
void drawLine(const std::shared_ptr< Line > &line, const CollectedPage &page)
Definition QXPContentCollector.cpp:529
void writeFill(librevenge::RVNGPropertyList &propList, const boost::optional< Fill > &fill)
Definition QXPContentCollector.cpp:1072
void writeFrame(librevenge::RVNGPropertyList &propList, const Frame &frame, const bool runaround, const bool allowHairline=false)
Definition QXPContentCollector.cpp:1083
std::shared_ptr< CollectedObject< T > > addObject(const std::shared_ptr< T > &obj, const ObjectHandlerMember< T, QXPContentCollector > &handler)
Definition QXPContentCollector.h:139
void drawTextPath(const std::shared_ptr< TextPath > &textPath, const CollectedPage &page)
Definition QXPContentCollector.cpp:756
void collectText(const std::shared_ptr< Text > &text, const unsigned linkId) override
Definition QXPContentCollector.cpp:397
QXPContentCollector & operator=(const QXPContentCollector &other)=delete
void drawBox(const std::shared_ptr< Box > &box, const CollectedPage &page)
Definition QXPContentCollector.cpp:571
void collectLine(const std::shared_ptr< Line > &line) override
Definition QXPContentCollector.cpp:356
void draw(bool force=false)
Definition QXPContentCollector.cpp:423
void drawTextBox(const std::shared_ptr< TextBox > &textbox, const CollectedPage &page)
Definition QXPContentCollector.cpp:706
std::unordered_map< unsigned, std::shared_ptr< Text > > m_linkTextMap
Definition QXPContentCollector.h:131
bool hasUnfinishedLinkedTexts()
Definition QXPContentCollector.cpp:513
void collectGroup(const std::shared_ptr< Group > &group) override
Definition QXPContentCollector.cpp:390
void drawPolygon(const std::shared_ptr< Box > &polygon, const CollectedPage &page)
Definition QXPContentCollector.cpp:650
bool m_isDocumentStarted
Definition QXPContentCollector.h:126
void collectTextPath(const std::shared_ptr< TextPath > &textPath) override
Definition QXPContentCollector.cpp:378
void collectDocumentProperties(const QXPDocumentProperties &props) override
Definition QXPContentCollector.cpp:351
std::unordered_map< unsigned, std::unordered_map< unsigned, std::shared_ptr< TextObject > > > m_linkIndexedTextObjectsMap
Definition QXPContentCollector.h:132
void endPage() override
Definition QXPContentCollector.cpp:345
QXPContentCollector(const QXPContentCollector &other)=delete
void startDocument() override
Definition QXPContentCollector.cpp:309
void collectTextBox(const std::shared_ptr< TextBox > &box) override
Definition QXPContentCollector.cpp:366
void collectBox(const std::shared_ptr< Box > &box) override
Definition QXPContentCollector.cpp:361
Definition libqxp_utils.cpp:25
Definition QXPTypes.h:345
Definition QXPTypes.h:362
Definition QXPTypes.h:537
Definition QXPTypes.h:546
Definition QXPContentCollector.h:107
double getX(const double x) const
Definition QXPContentCollector.cpp:1156
const PageSettings settings
Definition QXPContentCollector.h:108
std::vector< std::shared_ptr< CollectedObjectInterface > > objects
Definition QXPContentCollector.h:111
double getY(const double y) const
Definition QXPContentCollector.cpp:1166
std::vector< std::shared_ptr< CollectedObject< Group > > > groups
Definition QXPContentCollector.h:109
Point getPoint(const Point &p) const
Definition QXPContentCollector.cpp:1176
CollectedPage(const PageSettings &pageSettings)
Definition QXPContentCollector.h:113
std::vector< std::shared_ptr< TextObject > > linkedTextObjects
Definition QXPContentCollector.h:110
Definition QXPTypes.h:561