[Libreoffice-commits] libcdr.git: src/lib
Fridrich Å trba
fridrich.strba at bluewin.ch
Tue Dec 3 01:36:16 PST 2013
src/lib/CDRContentCollector.cpp | 31 +++++++++++++++++++++++++++----
src/lib/CDRContentCollector.h | 3 +++
2 files changed, 30 insertions(+), 4 deletions(-)
New commits:
commit 00dea16c89b68668ea1ced9601fe33b728db4234
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Tue Dec 3 10:35:11 2013 +0100
Emit start/endDocument calls
Change-Id: Ic8413c9f24a0fa06ed6bbb24d1be8dd638b176aa
diff --git a/src/lib/CDRContentCollector.cpp b/src/lib/CDRContentCollector.cpp
index 0ce93f2..5884f51 100644
--- a/src/lib/CDRContentCollector.cpp
+++ b/src/lib/CDRContentCollector.cpp
@@ -48,7 +48,7 @@
#endif
libcdr::CDRContentCollector::CDRContentCollector(libcdr::CDRParserState &ps, librevenge::RVNGDrawingInterface *painter) :
- m_painter(painter),
+ m_painter(painter), m_isDocumentStarted(false),
m_isPageProperties(false), m_isPageStarted(false), m_ignorePage(false),
m_page(ps.m_pages[0]), m_pageIndex(0), m_currentFillStyle(), m_currentLineStyle(), m_spnd(0),
m_currentObjectLevel(0), m_currentGroupLevel(0), m_currentVectLevel(0), m_currentPageLevel(0),
@@ -64,20 +64,43 @@ libcdr::CDRContentCollector::~CDRContentCollector()
{
if (m_isPageStarted)
_endPage();
+ if (m_isDocumentStarted)
+ _endDocument();
+}
+
+void libcdr::CDRContentCollector::_startDocument()
+{
+ if (m_isDocumentStarted)
+ return;
+ librevenge::RVNGPropertyList propList;
+ if (m_painter)
+ m_painter->startDocument(propList);
+ m_isDocumentStarted = true;
+}
+
+void libcdr::CDRContentCollector::_endDocument()
+{
+ if (!m_isDocumentStarted)
+ return;
+ if (m_isPageStarted)
+ _endPage();
+ if (m_painter)
+ m_painter->endDocument();
+ m_isDocumentStarted = false;
}
void libcdr::CDRContentCollector::_startPage(double width, double height)
{
if (m_ignorePage)
return;
+ if (!m_isDocumentStarted)
+ _startDocument();
librevenge::RVNGPropertyList propList;
propList.insert("svg:width", width);
propList.insert("svg:height", height);
if (m_painter)
- {
m_painter->startPage(propList);
- m_isPageStarted = true;
- }
+ m_isPageStarted = true;
}
void libcdr::CDRContentCollector::_endPage()
diff --git a/src/lib/CDRContentCollector.h b/src/lib/CDRContentCollector.h
index b84f84b..eca0b93 100644
--- a/src/lib/CDRContentCollector.h
+++ b/src/lib/CDRContentCollector.h
@@ -91,6 +91,8 @@ private:
CDRContentCollector &operator=(const CDRContentCollector &);
// helper functions
+ void _startDocument();
+ void _endDocument();
void _startPage(double width, double height);
void _endPage();
void _flushCurrentPath();
@@ -101,6 +103,7 @@ private:
librevenge::RVNGDrawingInterface *m_painter;
+ bool m_isDocumentStarted;
bool m_isPageProperties;
bool m_isPageStarted;
bool m_ignorePage;
More information about the Libreoffice-commits
mailing list