[Libreoffice-commits] libcdr.git: 8 commits - src/lib
David Tardon
dtardon at redhat.com
Sat Mar 24 16:23:16 UTC 2018
src/lib/CDRContentCollector.cpp | 13 --
src/lib/CDRContentCollector.h | 3
src/lib/CDRDocument.cpp | 11 +-
src/lib/CDROutputElementList.cpp | 179 +++++++++++----------------------------
src/lib/CDROutputElementList.h | 7 -
src/lib/CDRParser.cpp | 4
src/lib/CDRParser.h | 7 -
src/lib/CDRPath.cpp | 168 +++++++++++++++++-------------------
src/lib/CDRPath.h | 9 +
src/lib/libcdr_utils.h | 7 +
10 files changed, 164 insertions(+), 244 deletions(-)
New commits:
commit 517dbbed46ee34710d0346dbe84c9fbe6a426e7d
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:22:15 2018 +0100
drop unused headers
Change-Id: I44a999f25ea14a73737019350d40dd4ebb982854
diff --git a/src/lib/CDRParser.h b/src/lib/CDRParser.h
index 4bb79d6..242736d 100644
--- a/src/lib/CDRParser.h
+++ b/src/lib/CDRParser.h
@@ -10,8 +10,6 @@
#ifndef __CDRPARSER_H__
#define __CDRPARSER_H__
-#include <stdio.h>
-#include <iostream>
#include <memory>
#include <vector>
#include <map>
commit 7c9f013d8924407c88515533a1a5703282b075dc
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:21:45 2018 +0100
use unique_ptr
Change-Id: I8954729882f578f59ec15bef193737736281a940
diff --git a/src/lib/CDRDocument.cpp b/src/lib/CDRDocument.cpp
index 96f652e..73a9527 100644
--- a/src/lib/CDRDocument.cpp
+++ b/src/lib/CDRDocument.cpp
@@ -117,7 +117,7 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
input->seek(0, librevenge::RVNG_SEEK_SET);
CDRParserState ps;
CDRStylesCollector stylesCollector(ps);
- CDRParser stylesParser(std::vector<librevenge::RVNGInputStream *>(), &stylesCollector);
+ CDRParser stylesParser(std::vector<std::unique_ptr<librevenge::RVNGInputStream>>(), &stylesCollector);
if (version >= 300)
retVal = stylesParser.parseRecords(input.get());
else
@@ -128,7 +128,7 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
{
input->seek(0, librevenge::RVNG_SEEK_SET);
CDRContentCollector contentCollector(ps, painter);
- CDRParser contentParser(std::vector<librevenge::RVNGInputStream *>(), &contentCollector);
+ CDRParser contentParser(std::vector<std::unique_ptr<librevenge::RVNGInputStream>>(), &contentCollector);
if (version >= 300)
retVal = contentParser.parseRecords(input.get());
else
@@ -144,7 +144,6 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
}
librevenge::RVNGInputStream *tmpInput = input_;
- std::vector<librevenge::RVNGInputStream *> dataStreams;
try
{
std::vector<std::string> dataFiles;
@@ -179,6 +178,7 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
}
}
}
+ std::vector<std::unique_ptr<librevenge::RVNGInputStream>> dataStreams;
dataStreams.reserve(dataFiles.size());
for (const auto &dataFile : dataFiles)
{
@@ -186,7 +186,8 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
streamName += dataFile;
CDR_DEBUG_MSG(("Extracting stream: %s\n", streamName.c_str()));
tmpInput->seek(0, librevenge::RVNG_SEEK_SET);
- dataStreams.push_back(tmpInput->getSubStreamByName(streamName.c_str()));
+ std::unique_ptr<librevenge::RVNGInputStream> strm(tmpInput->getSubStreamByName(streamName.c_str()));
+ dataStreams.push_back(std::move(strm));
}
if (!input)
input.reset(tmpInput, CDRDummyDeleter());
@@ -223,8 +224,6 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
{
retVal = false;
}
- for (auto &dataStream : dataStreams)
- delete dataStream;
return retVal;
}
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 4e7956e..e58fbca 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -157,7 +157,7 @@ void normalizeAngle(double &angle)
} // anonymous namespace
-libcdr::CDRParser::CDRParser(const std::vector<librevenge::RVNGInputStream *> &externalStreams, libcdr::CDRCollector *collector)
+libcdr::CDRParser::CDRParser(const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &externalStreams, libcdr::CDRCollector *collector)
: CommonParser(collector), m_externalStreams(externalStreams),
m_fonts(), m_fillStyles(), m_lineStyles(), m_arrows(), m_version(0), m_waldoOutlId(0), m_waldoFillId(0) {}
@@ -2427,7 +2427,7 @@ bool libcdr::CDRParser::_redirectX6Chunk(librevenge::RVNGInputStream **input, un
if (streamNumber < m_externalStreams.size())
{
unsigned streamOffset = readU32(*input);
- *input = m_externalStreams[streamNumber];
+ *input = m_externalStreams[streamNumber].get();
if (*input)
{
(*input)->seek(streamOffset, librevenge::RVNG_SEEK_SET);
diff --git a/src/lib/CDRParser.h b/src/lib/CDRParser.h
index 8ce7887..4bb79d6 100644
--- a/src/lib/CDRParser.h
+++ b/src/lib/CDRParser.h
@@ -12,6 +12,7 @@
#include <stdio.h>
#include <iostream>
+#include <memory>
#include <vector>
#include <map>
#include <stack>
@@ -27,7 +28,7 @@ class CDRCollector;
class CDRParser : protected CommonParser
{
public:
- explicit CDRParser(const std::vector<librevenge::RVNGInputStream *> &externalStreams, CDRCollector *collector);
+ explicit CDRParser(const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &externalStreams, CDRCollector *collector);
~CDRParser() override;
bool parseRecords(librevenge::RVNGInputStream *input, const std::vector<unsigned> &blockLengths = std::vector<unsigned>(), unsigned level = 0);
bool parseWaldo(librevenge::RVNGInputStream *input);
@@ -96,7 +97,7 @@ private:
bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length);
void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style);
- std::vector<librevenge::RVNGInputStream *> m_externalStreams;
+ const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &m_externalStreams;
std::map<unsigned, CDRFont> m_fonts;
std::map<unsigned, CDRFillStyle> m_fillStyles;
commit fe04e802d5be570709a07d40237ef6bf468578f7
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:11:55 2018 +0100
use unique_ptr
Change-Id: I4b1dafc395c8dc2a891ea6541abfee23e30b2353
diff --git a/src/lib/CDRContentCollector.cpp b/src/lib/CDRContentCollector.cpp
index c8a556f..683d8fd 100644
--- a/src/lib/CDRContentCollector.cpp
+++ b/src/lib/CDRContentCollector.cpp
@@ -66,7 +66,7 @@ libcdr::CDRContentCollector::CDRContentCollector(libcdr::CDRParserState &ps, lib
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),
m_currentStyleId(0), m_currentImage(), m_currentText(nullptr), m_currentBBox(), m_currentTextBox(), m_currentPath(),
- m_currentTransforms(), m_fillTransforms(), m_polygon(nullptr), m_isInPolygon(false), m_isInSpline(false),
+ m_currentTransforms(), m_fillTransforms(), m_polygon(), m_isInPolygon(false), m_isInSpline(false),
m_outputElementsStack(nullptr), m_contentOutputElementsStack(), m_fillOutputElementsStack(),
m_outputElementsQueue(nullptr), m_contentOutputElementsQueue(), m_fillOutputElementsQueue(),
m_groupLevels(), m_groupTransforms(), m_splineData(), m_fillOpacity(1.0), m_reverseOrder(reverseOrder),
@@ -82,7 +82,6 @@ libcdr::CDRContentCollector::~CDRContentCollector()
_endPage();
if (m_isDocumentStarted)
_endDocument();
- delete m_polygon;
}
void libcdr::CDRContentCollector::_startDocument()
@@ -222,11 +221,7 @@ void libcdr::CDRContentCollector::_flushCurrentPath()
{
if (m_polygon && m_isInPolygon)
m_polygon->create(m_currentPath);
- if (m_polygon)
- {
- delete m_polygon;
- m_polygon = nullptr;
- }
+ m_polygon.reset();
m_isInPolygon = false;
if (!m_splineData.empty() && m_isInSpline)
m_splineData.create(m_currentPath);
@@ -682,9 +677,7 @@ void libcdr::CDRContentCollector::collectSpline()
void libcdr::CDRContentCollector::collectPolygonTransform(unsigned numAngles, unsigned nextPoint, double rx, double ry, double cx, double cy)
{
- if (m_polygon)
- delete m_polygon;
- m_polygon = new CDRPolygon(numAngles, nextPoint, rx, ry, cx, cy);
+ m_polygon.reset(new CDRPolygon(numAngles, nextPoint, rx, ry, cx, cy));
}
void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &propList)
diff --git a/src/lib/CDRContentCollector.h b/src/lib/CDRContentCollector.h
index e0cbf86..2eae18c 100644
--- a/src/lib/CDRContentCollector.h
+++ b/src/lib/CDRContentCollector.h
@@ -11,6 +11,7 @@
#define __CDRCONTENTCOLLECTOR_H__
#include <map>
+#include <memory>
#include <utility>
#include <vector>
#include <stack>
@@ -107,7 +108,7 @@ private:
CDRPath m_currentPath;
CDRTransforms m_currentTransforms;
CDRTransforms m_fillTransforms;
- CDRPolygon *m_polygon;
+ std::unique_ptr<CDRPolygon> m_polygon;
bool m_isInPolygon;
bool m_isInSpline;
std::stack<CDROutputElementList> *m_outputElementsStack;
commit 7807ebc00aafe62d8c54f66c1297e49e48f9cc43
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:07:52 2018 +0100
use shared_ptr
Change-Id: I40a15f55f3681bc8a70a079d8ee8a80c748639df
diff --git a/src/lib/CDROutputElementList.cpp b/src/lib/CDROutputElementList.cpp
index 12b142e..001f9dc 100644
--- a/src/lib/CDROutputElementList.cpp
+++ b/src/lib/CDROutputElementList.cpp
@@ -102,7 +102,6 @@ public:
CDROutputElement() {}
virtual ~CDROutputElement() {}
virtual void draw(librevenge::RVNGDrawingInterface *painter) = 0;
- virtual CDROutputElement *clone() = 0;
};
@@ -112,10 +111,6 @@ public:
CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList);
~CDRStyleOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRStyleOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -127,10 +122,6 @@ public:
CDRPathOutputElement(const librevenge::RVNGPropertyList &propList);
~CDRPathOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRPathOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -142,10 +133,6 @@ public:
CDRGraphicObjectOutputElement(const librevenge::RVNGPropertyList &propList);
~CDRGraphicObjectOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRGraphicObjectOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -157,10 +144,6 @@ public:
CDRStartTextObjectOutputElement(const librevenge::RVNGPropertyList &propList);
~CDRStartTextObjectOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRStartTextObjectOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -172,10 +155,6 @@ public:
CDROpenParagraphOutputElement(const librevenge::RVNGPropertyList &propList);
~CDROpenParagraphOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDROpenParagraphOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -187,10 +166,6 @@ public:
CDROpenSpanOutputElement(const librevenge::RVNGPropertyList &propList);
~CDROpenSpanOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDROpenSpanOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -202,10 +177,6 @@ public:
CDRInsertTextOutputElement(const librevenge::RVNGString &text);
~CDRInsertTextOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRInsertTextOutputElement(m_text);
- }
private:
librevenge::RVNGString m_text;
};
@@ -217,10 +188,6 @@ public:
CDRCloseSpanOutputElement();
~CDRCloseSpanOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRCloseSpanOutputElement();
- }
};
@@ -230,10 +197,6 @@ public:
CDRCloseParagraphOutputElement();
~CDRCloseParagraphOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRCloseParagraphOutputElement();
- }
};
@@ -243,10 +206,6 @@ public:
CDREndTextObjectOutputElement();
~CDREndTextObjectOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDREndTextObjectOutputElement();
- }
};
class CDRStartLayerOutputElement : public CDROutputElement
@@ -255,10 +214,6 @@ public:
CDRStartLayerOutputElement(const librevenge::RVNGPropertyList &propList);
~CDRStartLayerOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDRStartLayerOutputElement(m_propList);
- }
private:
librevenge::RVNGPropertyList m_propList;
};
@@ -269,10 +224,6 @@ public:
CDREndLayerOutputElement();
~CDREndLayerOutputElement() override {}
void draw(librevenge::RVNGDrawingInterface *painter) override;
- CDROutputElement *clone() override
- {
- return new CDREndLayerOutputElement();
- }
};
CDRStyleOutputElement::CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList) :
@@ -394,32 +345,8 @@ CDROutputElementList::CDROutputElementList()
{
}
-CDROutputElementList::CDROutputElementList(const CDROutputElementList &elementList)
- : m_elements()
-{
- std::vector<CDROutputElement *>::const_iterator iter;
- for (iter = elementList.m_elements.begin(); iter != elementList.m_elements.end(); ++iter)
- m_elements.push_back((*iter)->clone());
-}
-
-CDROutputElementList &CDROutputElementList::operator=(const CDROutputElementList &elementList)
-{
- for (auto &element : m_elements)
- delete element;
-
- m_elements.clear();
-
- for (auto element : elementList.m_elements)
- m_elements.push_back(element->clone());
-
- return *this;
-}
-
CDROutputElementList::~CDROutputElementList()
{
- for (auto &element : m_elements)
- delete element;
- m_elements.clear();
}
void CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
@@ -430,62 +357,62 @@ void CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
void CDROutputElementList::addStyle(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDRStyleOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDRStyleOutputElement>(propList));
}
void CDROutputElementList::addPath(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDRPathOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDRPathOutputElement>(propList));
}
void CDROutputElementList::addGraphicObject(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDRGraphicObjectOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDRGraphicObjectOutputElement>(propList));
}
void CDROutputElementList::addStartTextObject(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDRStartTextObjectOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDRStartTextObjectOutputElement>(propList));
}
void CDROutputElementList::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDROpenParagraphOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDROpenParagraphOutputElement>(propList));
}
void CDROutputElementList::addOpenSpan(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDROpenSpanOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDROpenSpanOutputElement>(propList));
}
void CDROutputElementList::addInsertText(const librevenge::RVNGString &text)
{
- m_elements.push_back(new CDRInsertTextOutputElement(text));
+ m_elements.push_back(std::make_shared<CDRInsertTextOutputElement>(text));
}
void CDROutputElementList::addCloseSpan()
{
- m_elements.push_back(new CDRCloseSpanOutputElement());
+ m_elements.push_back(std::make_shared<CDRCloseSpanOutputElement>());
}
void CDROutputElementList::addCloseParagraph()
{
- m_elements.push_back(new CDRCloseParagraphOutputElement());
+ m_elements.push_back(std::make_shared<CDRCloseParagraphOutputElement>());
}
void CDROutputElementList::addEndTextObject()
{
- m_elements.push_back(new CDREndTextObjectOutputElement());
+ m_elements.push_back(std::make_shared<CDREndTextObjectOutputElement>());
}
void CDROutputElementList::addStartGroup(const librevenge::RVNGPropertyList &propList)
{
- m_elements.push_back(new CDRStartLayerOutputElement(propList));
+ m_elements.push_back(std::make_shared<CDRStartLayerOutputElement>(propList));
}
void CDROutputElementList::addEndGroup()
{
- m_elements.push_back(new CDREndLayerOutputElement());
+ m_elements.push_back(std::make_shared<CDREndLayerOutputElement>());
}
} // namespace libcdr
diff --git a/src/lib/CDROutputElementList.h b/src/lib/CDROutputElementList.h
index d1a4991..f5bba06 100644
--- a/src/lib/CDROutputElementList.h
+++ b/src/lib/CDROutputElementList.h
@@ -10,6 +10,7 @@
#ifndef __CDROUTPUTELEMENTLIST_H__
#define __CDROUTPUTELEMENTLIST_H__
+#include <memory>
#include <vector>
#include <librevenge/librevenge.h>
@@ -23,9 +24,7 @@ class CDROutputElementList
{
public:
CDROutputElementList();
- CDROutputElementList(const CDROutputElementList &elementList);
- CDROutputElementList &operator=(const CDROutputElementList &elementList);
- virtual ~CDROutputElementList();
+ ~CDROutputElementList();
void draw(librevenge::RVNGDrawingInterface *painter) const;
void addStyle(const librevenge::RVNGPropertyList &propList);
void addPath(const librevenge::RVNGPropertyList &propList);
@@ -44,7 +43,7 @@ public:
return m_elements.empty();
}
private:
- std::vector<CDROutputElement *> m_elements;
+ std::vector<std::shared_ptr<CDROutputElement>> m_elements;
};
commit 7bd7f56e86d5f6b87d402c34072d4054474ae473
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:04:36 2018 +0100
put the whole impl. in libcdr namespace
Change-Id: Id0571b26ed037c5ec9d455599d96bad6eaf8ae3d
diff --git a/src/lib/CDROutputElementList.cpp b/src/lib/CDROutputElementList.cpp
index c1de564..12b142e 100644
--- a/src/lib/CDROutputElementList.cpp
+++ b/src/lib/CDROutputElementList.cpp
@@ -275,136 +275,134 @@ public:
}
};
-} // namespace libcdr
-
-libcdr::CDRStyleOutputElement::CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRStyleOutputElement::CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDRStyleOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRStyleOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->setStyle(m_propList);
}
-libcdr::CDRPathOutputElement::CDRPathOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRPathOutputElement::CDRPathOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDRPathOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRPathOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->drawPath(m_propList);
}
-libcdr::CDRGraphicObjectOutputElement::CDRGraphicObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRGraphicObjectOutputElement::CDRGraphicObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDRGraphicObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRGraphicObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->drawGraphicObject(m_propList);
}
-libcdr::CDRStartTextObjectOutputElement::CDRStartTextObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRStartTextObjectOutputElement::CDRStartTextObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDRStartTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRStartTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->startTextObject(m_propList);
}
-libcdr::CDROpenSpanOutputElement::CDROpenSpanOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDROpenSpanOutputElement::CDROpenSpanOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDROpenSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDROpenSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->openSpan(m_propList);
}
-libcdr::CDROpenParagraphOutputElement::CDROpenParagraphOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDROpenParagraphOutputElement::CDROpenParagraphOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDROpenParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDROpenParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->openParagraph(m_propList);
}
-libcdr::CDRInsertTextOutputElement::CDRInsertTextOutputElement(const librevenge::RVNGString &text) :
+CDRInsertTextOutputElement::CDRInsertTextOutputElement(const librevenge::RVNGString &text) :
m_text(text) {}
-void libcdr::CDRInsertTextOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRInsertTextOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
separateSpacesAndInsertText(painter, m_text);
}
-libcdr::CDRCloseSpanOutputElement::CDRCloseSpanOutputElement() {}
+CDRCloseSpanOutputElement::CDRCloseSpanOutputElement() {}
-void libcdr::CDRCloseSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRCloseSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->closeSpan();
}
-libcdr::CDRCloseParagraphOutputElement::CDRCloseParagraphOutputElement() {}
+CDRCloseParagraphOutputElement::CDRCloseParagraphOutputElement() {}
-void libcdr::CDRCloseParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRCloseParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->closeParagraph();
}
-libcdr::CDREndTextObjectOutputElement::CDREndTextObjectOutputElement() {}
+CDREndTextObjectOutputElement::CDREndTextObjectOutputElement() {}
-void libcdr::CDREndTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDREndTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->endTextObject();
}
-libcdr::CDREndLayerOutputElement::CDREndLayerOutputElement() {}
+CDREndLayerOutputElement::CDREndLayerOutputElement() {}
-void libcdr::CDREndLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDREndLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->endLayer();
}
-libcdr::CDRStartLayerOutputElement::CDRStartLayerOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRStartLayerOutputElement::CDRStartLayerOutputElement(const librevenge::RVNGPropertyList &propList) :
m_propList(propList) {}
-void libcdr::CDRStartLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRStartLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
{
if (painter)
painter->startLayer(m_propList);
}
-libcdr::CDROutputElementList::CDROutputElementList()
+CDROutputElementList::CDROutputElementList()
: m_elements()
{
}
-libcdr::CDROutputElementList::CDROutputElementList(const libcdr::CDROutputElementList &elementList)
+CDROutputElementList::CDROutputElementList(const CDROutputElementList &elementList)
: m_elements()
{
- std::vector<libcdr::CDROutputElement *>::const_iterator iter;
+ std::vector<CDROutputElement *>::const_iterator iter;
for (iter = elementList.m_elements.begin(); iter != elementList.m_elements.end(); ++iter)
m_elements.push_back((*iter)->clone());
}
-libcdr::CDROutputElementList &libcdr::CDROutputElementList::operator=(const libcdr::CDROutputElementList &elementList)
+CDROutputElementList &CDROutputElementList::operator=(const CDROutputElementList &elementList)
{
for (auto &element : m_elements)
delete element;
@@ -417,77 +415,79 @@ libcdr::CDROutputElementList &libcdr::CDROutputElementList::operator=(const libc
return *this;
}
-libcdr::CDROutputElementList::~CDROutputElementList()
+CDROutputElementList::~CDROutputElementList()
{
for (auto &element : m_elements)
delete element;
m_elements.clear();
}
-void libcdr::CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
+void CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
{
for (auto element : m_elements)
element->draw(painter);
}
-void libcdr::CDROutputElementList::addStyle(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addStyle(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDRStyleOutputElement(propList));
}
-void libcdr::CDROutputElementList::addPath(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addPath(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDRPathOutputElement(propList));
}
-void libcdr::CDROutputElementList::addGraphicObject(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addGraphicObject(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDRGraphicObjectOutputElement(propList));
}
-void libcdr::CDROutputElementList::addStartTextObject(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addStartTextObject(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDRStartTextObjectOutputElement(propList));
}
-void libcdr::CDROutputElementList::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDROpenParagraphOutputElement(propList));
}
-void libcdr::CDROutputElementList::addOpenSpan(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addOpenSpan(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDROpenSpanOutputElement(propList));
}
-void libcdr::CDROutputElementList::addInsertText(const librevenge::RVNGString &text)
+void CDROutputElementList::addInsertText(const librevenge::RVNGString &text)
{
m_elements.push_back(new CDRInsertTextOutputElement(text));
}
-void libcdr::CDROutputElementList::addCloseSpan()
+void CDROutputElementList::addCloseSpan()
{
m_elements.push_back(new CDRCloseSpanOutputElement());
}
-void libcdr::CDROutputElementList::addCloseParagraph()
+void CDROutputElementList::addCloseParagraph()
{
m_elements.push_back(new CDRCloseParagraphOutputElement());
}
-void libcdr::CDROutputElementList::addEndTextObject()
+void CDROutputElementList::addEndTextObject()
{
m_elements.push_back(new CDREndTextObjectOutputElement());
}
-void libcdr::CDROutputElementList::addStartGroup(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addStartGroup(const librevenge::RVNGPropertyList &propList)
{
m_elements.push_back(new CDRStartLayerOutputElement(propList));
}
-void libcdr::CDROutputElementList::addEndGroup()
+void CDROutputElementList::addEndGroup()
{
m_elements.push_back(new CDREndLayerOutputElement());
}
+} // namespace libcdr
+
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
commit 53426f781068a9d72456b020223569d4d52252c0
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:02:00 2018 +0100
put the whole impl. in libcdr namespace
Change-Id: Ibf8e335d7ca43e1c6405da5d2137744ca995df47
diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index 7d2f7a4..7cff9cf 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -19,6 +19,9 @@
#define DEBUG_SPLINES 0
#endif
+namespace libcdr
+{
+
namespace
{
@@ -219,9 +222,6 @@ static void getCubicBezierBBox(double x0, double y0, double x1, double y1, doubl
} // anonymous namespace
-namespace libcdr
-{
-
class CDRMoveToElement : public CDRPathElement
{
public:
@@ -350,10 +350,7 @@ public:
std::unique_ptr<CDRPathElement> clone() override;
};
-} // namespace libcdr
-
-
-void libcdr::CDRMoveToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRMoveToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
node.insert("librevenge:path-action", "M");
@@ -362,22 +359,22 @@ void libcdr::CDRMoveToElement::writeOut(librevenge::RVNGPropertyListVector &vec)
vec.append(node);
}
-void libcdr::CDRMoveToElement::transform(const CDRTransforms &trafos)
+void CDRMoveToElement::transform(const CDRTransforms &trafos)
{
trafos.applyToPoint(m_x,m_y);
}
-void libcdr::CDRMoveToElement::transform(const CDRTransform &trafo)
+void CDRMoveToElement::transform(const CDRTransform &trafo)
{
trafo.applyToPoint(m_x,m_y);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRMoveToElement::clone()
+std::unique_ptr<CDRPathElement> CDRMoveToElement::clone()
{
return make_unique<CDRMoveToElement>(m_x, m_y);
}
-void libcdr::CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
node.insert("librevenge:path-action", "L");
@@ -386,22 +383,22 @@ void libcdr::CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec)
vec.append(node);
}
-void libcdr::CDRLineToElement::transform(const CDRTransforms &trafos)
+void CDRLineToElement::transform(const CDRTransforms &trafos)
{
trafos.applyToPoint(m_x,m_y);
}
-void libcdr::CDRLineToElement::transform(const CDRTransform &trafo)
+void CDRLineToElement::transform(const CDRTransform &trafo)
{
trafo.applyToPoint(m_x,m_y);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRLineToElement::clone()
+std::unique_ptr<CDRPathElement> CDRLineToElement::clone()
{
return make_unique<CDRLineToElement>(m_x, m_y);
}
-void libcdr::CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
node.insert("librevenge:path-action", "C");
@@ -414,26 +411,26 @@ void libcdr::CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVecto
vec.append(node);
}
-void libcdr::CDRCubicBezierToElement::transform(const CDRTransforms &trafos)
+void CDRCubicBezierToElement::transform(const CDRTransforms &trafos)
{
trafos.applyToPoint(m_x1,m_y1);
trafos.applyToPoint(m_x2,m_y2);
trafos.applyToPoint(m_x,m_y);
}
-void libcdr::CDRCubicBezierToElement::transform(const CDRTransform &trafo)
+void CDRCubicBezierToElement::transform(const CDRTransform &trafo)
{
trafo.applyToPoint(m_x1,m_y1);
trafo.applyToPoint(m_x2,m_y2);
trafo.applyToPoint(m_x,m_y);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRCubicBezierToElement::clone()
+std::unique_ptr<CDRPathElement> CDRCubicBezierToElement::clone()
{
return make_unique<CDRCubicBezierToElement>(m_x1, m_y1, m_x2, m_y2, m_x, m_y);
}
-void libcdr::CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
node.insert("librevenge:path-action", "Q");
@@ -444,26 +441,26 @@ void libcdr::CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListV
vec.append(node);
}
-void libcdr::CDRQuadraticBezierToElement::transform(const CDRTransforms &trafos)
+void CDRQuadraticBezierToElement::transform(const CDRTransforms &trafos)
{
trafos.applyToPoint(m_x1,m_y1);
trafos.applyToPoint(m_x,m_y);
}
-void libcdr::CDRQuadraticBezierToElement::transform(const CDRTransform &trafo)
+void CDRQuadraticBezierToElement::transform(const CDRTransform &trafo)
{
trafo.applyToPoint(m_x1,m_y1);
trafo.applyToPoint(m_x,m_y);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRQuadraticBezierToElement::clone()
+std::unique_ptr<CDRPathElement> CDRQuadraticBezierToElement::clone()
{
return make_unique<CDRQuadraticBezierToElement>(m_x1, m_y1, m_x, m_y);
}
#define CDR_SPLINE_DEGREE 3
-unsigned libcdr::CDRSplineToElement::knot(unsigned i) const
+unsigned CDRSplineToElement::knot(unsigned i) const
{
/* Emulates knot vector of an uniform B-Spline of degree 3 */
if (i < CDR_SPLINE_DEGREE)
@@ -473,7 +470,7 @@ unsigned libcdr::CDRSplineToElement::knot(unsigned i) const
return i - CDR_SPLINE_DEGREE;
}
-void libcdr::CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
@@ -570,24 +567,24 @@ void libcdr::CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &ve
}
}
-void libcdr::CDRSplineToElement::transform(const CDRTransforms &trafos)
+void CDRSplineToElement::transform(const CDRTransforms &trafos)
{
for (auto &point : m_points)
trafos.applyToPoint(point.first, point.second);
}
-void libcdr::CDRSplineToElement::transform(const CDRTransform &trafo)
+void CDRSplineToElement::transform(const CDRTransform &trafo)
{
for (auto &point : m_points)
trafo.applyToPoint(point.first, point.second);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRSplineToElement::clone()
+std::unique_ptr<CDRPathElement> CDRSplineToElement::clone()
{
return libcdr::make_unique<CDRSplineToElement>(m_points);
}
-void libcdr::CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
node.insert("librevenge:path-action", "A");
@@ -601,84 +598,84 @@ void libcdr::CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec)
vec.append(node);
}
-void libcdr::CDRArcToElement::transform(const CDRTransforms &trafos)
+void CDRArcToElement::transform(const CDRTransforms &trafos)
{
trafos.applyToArc(m_rx, m_ry, m_rotation, m_sweep, m_x, m_y);
}
-void libcdr::CDRArcToElement::transform(const CDRTransform &trafo)
+void CDRArcToElement::transform(const CDRTransform &trafo)
{
trafo.applyToArc(m_rx, m_ry, m_rotation, m_sweep, m_x, m_y);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRArcToElement::clone()
+std::unique_ptr<CDRPathElement> CDRArcToElement::clone()
{
return make_unique<CDRArcToElement>(m_rx, m_ry, m_rotation, m_largeArc, m_sweep, m_x, m_y);
}
-void libcdr::CDRClosePathElement::transform(const CDRTransforms &)
+void CDRClosePathElement::transform(const CDRTransforms &)
{
}
-void libcdr::CDRClosePathElement::transform(const CDRTransform &)
+void CDRClosePathElement::transform(const CDRTransform &)
{
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRClosePathElement::clone()
+std::unique_ptr<CDRPathElement> CDRClosePathElement::clone()
{
return make_unique<CDRClosePathElement>();
}
-void libcdr::CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
librevenge::RVNGPropertyList node;
node.insert("librevenge:path-action", "Z");
vec.append(node);
}
-void libcdr::CDRPath::appendMoveTo(double x, double y)
+void CDRPath::appendMoveTo(double x, double y)
{
- m_elements.push_back(make_unique<libcdr::CDRMoveToElement>(x, y));
+ m_elements.push_back(make_unique<CDRMoveToElement>(x, y));
}
-void libcdr::CDRPath::appendLineTo(double x, double y)
+void CDRPath::appendLineTo(double x, double y)
{
- m_elements.push_back(make_unique<libcdr::CDRLineToElement>(x, y));
+ m_elements.push_back(make_unique<CDRLineToElement>(x, y));
}
-void libcdr::CDRPath::appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
+void CDRPath::appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
{
- m_elements.push_back(make_unique<libcdr::CDRCubicBezierToElement>(x1, y1, x2, y2, x, y));
+ m_elements.push_back(make_unique<CDRCubicBezierToElement>(x1, y1, x2, y2, x, y));
}
-void libcdr::CDRPath::appendQuadraticBezierTo(double x1, double y1, double x, double y)
+void CDRPath::appendQuadraticBezierTo(double x1, double y1, double x, double y)
{
- m_elements.push_back(make_unique<libcdr::CDRQuadraticBezierToElement>(x1, y1, x, y));
+ m_elements.push_back(make_unique<CDRQuadraticBezierToElement>(x1, y1, x, y));
}
-void libcdr::CDRPath::appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
+void CDRPath::appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
{
- m_elements.push_back(make_unique<libcdr::CDRArcToElement>(rx, ry, rotation, longAngle, sweep, x, y));
+ m_elements.push_back(make_unique<CDRArcToElement>(rx, ry, rotation, longAngle, sweep, x, y));
}
-void libcdr::CDRPath::appendSplineTo(const std::vector<std::pair<double, double> > &points)
+void CDRPath::appendSplineTo(const std::vector<std::pair<double, double> > &points)
{
- m_elements.push_back(libcdr::make_unique<libcdr::CDRSplineToElement>(points));
+ m_elements.push_back(libcdr::make_unique<CDRSplineToElement>(points));
}
-void libcdr::CDRPath::appendClosePath()
+void CDRPath::appendClosePath()
{
- m_elements.push_back(make_unique<libcdr::CDRClosePathElement>());
+ m_elements.push_back(make_unique<CDRClosePathElement>());
m_isClosed = true;
}
-libcdr::CDRPath::CDRPath(const libcdr::CDRPath &path) : m_elements(), m_isClosed(false)
+CDRPath::CDRPath(const CDRPath &path) : m_elements(), m_isClosed(false)
{
appendPath(path);
m_isClosed = path.isClosed();
}
-libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
+CDRPath &CDRPath::operator=(const CDRPath &path)
{
// Check for self-assignment
if (this == &path)
@@ -690,17 +687,17 @@ libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
}
-libcdr::CDRPath::~CDRPath()
+CDRPath::~CDRPath()
{
}
-void libcdr::CDRPath::appendPath(const CDRPath &path)
+void CDRPath::appendPath(const CDRPath &path)
{
for (const auto &element : path.m_elements)
m_elements.push_back(element->clone());
}
-void libcdr::CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
bool wasZ = true;
for (const auto &element : m_elements)
@@ -721,7 +718,7 @@ void libcdr::CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
}
}
-void libcdr::CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGString &viewBox, double &width) const
+void CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGString &viewBox, double &width) const
{
librevenge::RVNGPropertyListVector vec;
writeOut(vec);
@@ -848,37 +845,39 @@ void libcdr::CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGStr
}
}
-void libcdr::CDRPath::transform(const CDRTransforms &trafos)
+void CDRPath::transform(const CDRTransforms &trafos)
{
for (auto &element : m_elements)
element->transform(trafos);
}
-void libcdr::CDRPath::transform(const CDRTransform &trafo)
+void CDRPath::transform(const CDRTransform &trafo)
{
for (auto &element : m_elements)
element->transform(trafo);
}
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRPath::clone()
+std::unique_ptr<CDRPathElement> CDRPath::clone()
{
return make_unique<CDRPath>(*this);
}
-void libcdr::CDRPath::clear()
+void CDRPath::clear()
{
m_elements.clear();
m_isClosed = false;
}
-bool libcdr::CDRPath::empty() const
+bool CDRPath::empty() const
{
return m_elements.empty();
}
-bool libcdr::CDRPath::isClosed() const
+bool CDRPath::isClosed() const
{
return m_isClosed;
}
+}
+
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
commit add9661aace5a96ca17976dad48a057ca4b548c3
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 17:00:18 2018 +0100
use unique_ptr
Change-Id: I83187bbbbe3c0dfdf7d1c4c59ddd4d8679ae9018
diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index 1028b1f..7d2f7a4 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -13,6 +13,7 @@
#include <map>
#include "CDRTransforms.h"
+#include "libcdr_utils.h"
#ifndef DEBUG_SPLINES
#define DEBUG_SPLINES 0
@@ -231,7 +232,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
private:
double m_x;
double m_y;
@@ -247,7 +248,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
private:
double m_x;
double m_y;
@@ -267,7 +268,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
private:
double m_x1;
double m_y1;
@@ -289,7 +290,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
private:
double m_x1;
double m_y1;
@@ -306,7 +307,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
private:
std::vector<std::pair<double, double> > m_points;
unsigned knot(unsigned i) const;
@@ -327,7 +328,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
private:
double m_rx;
double m_ry;
@@ -346,7 +347,7 @@ public:
void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
};
} // namespace libcdr
@@ -371,9 +372,9 @@ void libcdr::CDRMoveToElement::transform(const CDRTransform &trafo)
trafo.applyToPoint(m_x,m_y);
}
-libcdr::CDRPathElement *libcdr::CDRMoveToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRMoveToElement::clone()
{
- return new CDRMoveToElement(m_x, m_y);
+ return make_unique<CDRMoveToElement>(m_x, m_y);
}
void libcdr::CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -395,9 +396,9 @@ void libcdr::CDRLineToElement::transform(const CDRTransform &trafo)
trafo.applyToPoint(m_x,m_y);
}
-libcdr::CDRPathElement *libcdr::CDRLineToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRLineToElement::clone()
{
- return new CDRLineToElement(m_x, m_y);
+ return make_unique<CDRLineToElement>(m_x, m_y);
}
void libcdr::CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -427,9 +428,9 @@ void libcdr::CDRCubicBezierToElement::transform(const CDRTransform &trafo)
trafo.applyToPoint(m_x,m_y);
}
-libcdr::CDRPathElement *libcdr::CDRCubicBezierToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRCubicBezierToElement::clone()
{
- return new CDRCubicBezierToElement(m_x1, m_y1, m_x2, m_y2, m_x, m_y);
+ return make_unique<CDRCubicBezierToElement>(m_x1, m_y1, m_x2, m_y2, m_x, m_y);
}
void libcdr::CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -455,9 +456,9 @@ void libcdr::CDRQuadraticBezierToElement::transform(const CDRTransform &trafo)
trafo.applyToPoint(m_x,m_y);
}
-libcdr::CDRPathElement *libcdr::CDRQuadraticBezierToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRQuadraticBezierToElement::clone()
{
- return new CDRQuadraticBezierToElement(m_x1, m_y1, m_x, m_y);
+ return make_unique<CDRQuadraticBezierToElement>(m_x1, m_y1, m_x, m_y);
}
#define CDR_SPLINE_DEGREE 3
@@ -581,9 +582,9 @@ void libcdr::CDRSplineToElement::transform(const CDRTransform &trafo)
trafo.applyToPoint(point.first, point.second);
}
-libcdr::CDRPathElement *libcdr::CDRSplineToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRSplineToElement::clone()
{
- return new CDRSplineToElement(m_points);
+ return libcdr::make_unique<CDRSplineToElement>(m_points);
}
void libcdr::CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -610,9 +611,9 @@ void libcdr::CDRArcToElement::transform(const CDRTransform &trafo)
trafo.applyToArc(m_rx, m_ry, m_rotation, m_sweep, m_x, m_y);
}
-libcdr::CDRPathElement *libcdr::CDRArcToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRArcToElement::clone()
{
- return new CDRArcToElement(m_rx, m_ry, m_rotation, m_largeArc, m_sweep, m_x, m_y);
+ return make_unique<CDRArcToElement>(m_rx, m_ry, m_rotation, m_largeArc, m_sweep, m_x, m_y);
}
void libcdr::CDRClosePathElement::transform(const CDRTransforms &)
@@ -623,9 +624,9 @@ void libcdr::CDRClosePathElement::transform(const CDRTransform &)
{
}
-libcdr::CDRPathElement *libcdr::CDRClosePathElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRClosePathElement::clone()
{
- return new CDRClosePathElement();
+ return make_unique<CDRClosePathElement>();
}
void libcdr::CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -637,37 +638,37 @@ void libcdr::CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &v
void libcdr::CDRPath::appendMoveTo(double x, double y)
{
- m_elements.push_back(new libcdr::CDRMoveToElement(x, y));
+ m_elements.push_back(make_unique<libcdr::CDRMoveToElement>(x, y));
}
void libcdr::CDRPath::appendLineTo(double x, double y)
{
- m_elements.push_back(new libcdr::CDRLineToElement(x, y));
+ m_elements.push_back(make_unique<libcdr::CDRLineToElement>(x, y));
}
void libcdr::CDRPath::appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
{
- m_elements.push_back(new libcdr::CDRCubicBezierToElement(x1, y1, x2, y2, x, y));
+ m_elements.push_back(make_unique<libcdr::CDRCubicBezierToElement>(x1, y1, x2, y2, x, y));
}
void libcdr::CDRPath::appendQuadraticBezierTo(double x1, double y1, double x, double y)
{
- m_elements.push_back(new libcdr::CDRQuadraticBezierToElement(x1, y1, x, y));
+ m_elements.push_back(make_unique<libcdr::CDRQuadraticBezierToElement>(x1, y1, x, y));
}
void libcdr::CDRPath::appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
{
- m_elements.push_back(new libcdr::CDRArcToElement(rx, ry, rotation, longAngle, sweep, x, y));
+ m_elements.push_back(make_unique<libcdr::CDRArcToElement>(rx, ry, rotation, longAngle, sweep, x, y));
}
-void libcdr::CDRPath::appendSplineTo(std::vector<std::pair<double, double> > &points)
+void libcdr::CDRPath::appendSplineTo(const std::vector<std::pair<double, double> > &points)
{
- m_elements.push_back(new libcdr::CDRSplineToElement(points));
+ m_elements.push_back(libcdr::make_unique<libcdr::CDRSplineToElement>(points));
}
void libcdr::CDRPath::appendClosePath()
{
- m_elements.push_back(new libcdr::CDRClosePathElement());
+ m_elements.push_back(make_unique<libcdr::CDRClosePathElement>());
m_isClosed = true;
}
@@ -691,21 +692,20 @@ libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
libcdr::CDRPath::~CDRPath()
{
- clear();
}
void libcdr::CDRPath::appendPath(const CDRPath &path)
{
- for (auto element : path.m_elements)
+ for (const auto &element : path.m_elements)
m_elements.push_back(element->clone());
}
void libcdr::CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
{
bool wasZ = true;
- for (auto element : m_elements)
+ for (const auto &element : m_elements)
{
- if (dynamic_cast<CDRClosePathElement *>(element))
+ if (dynamic_cast<CDRClosePathElement *>(element.get()))
{
if (!wasZ)
{
@@ -860,16 +860,13 @@ void libcdr::CDRPath::transform(const CDRTransform &trafo)
element->transform(trafo);
}
-libcdr::CDRPathElement *libcdr::CDRPath::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRPath::clone()
{
- return new CDRPath(*this);
+ return make_unique<CDRPath>(*this);
}
void libcdr::CDRPath::clear()
{
- for (auto &element : m_elements)
- if (element)
- delete element;
m_elements.clear();
m_isClosed = false;
}
diff --git a/src/lib/CDRPath.h b/src/lib/CDRPath.h
index 90fe0de..f336803 100644
--- a/src/lib/CDRPath.h
+++ b/src/lib/CDRPath.h
@@ -10,6 +10,7 @@
#ifndef __CDRPATH_H__
#define __CDRPATH_H__
+#include <memory>
#include <utility>
#include <vector>
#include <librevenge/librevenge.h>
@@ -28,7 +29,7 @@ public:
virtual void writeOut(librevenge::RVNGPropertyListVector &vec) const = 0;
virtual void transform(const CDRTransforms &trafos) = 0;
virtual void transform(const CDRTransform &trafo) = 0;
- virtual CDRPathElement *clone() = 0;
+ virtual std::unique_ptr<CDRPathElement> clone() = 0;
};
@@ -45,7 +46,7 @@ public:
void appendLineTo(double x, double y);
void appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y);
void appendQuadraticBezierTo(double x1, double y1, double x, double y);
- void appendSplineTo(std::vector<std::pair<double, double> > &points);
+ void appendSplineTo(const std::vector<std::pair<double, double> > &points);
void appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y);
void appendClosePath();
void appendPath(const CDRPath &path);
@@ -54,14 +55,14 @@ public:
void writeOut(librevenge::RVNGString &path, librevenge::RVNGString &viewBox, double &width) const;
void transform(const CDRTransforms &trafos) override;
void transform(const CDRTransform &trafo) override;
- CDRPathElement *clone() override;
+ std::unique_ptr<CDRPathElement> clone() override;
void clear();
bool empty() const;
bool isClosed() const;
private:
- std::vector<CDRPathElement *> m_elements;
+ std::vector<std::unique_ptr<CDRPathElement>> m_elements;
bool m_isClosed;
};
diff --git a/src/lib/libcdr_utils.h b/src/lib/libcdr_utils.h
index a475112..a4472fc 100644
--- a/src/lib/libcdr_utils.h
+++ b/src/lib/libcdr_utils.h
@@ -15,6 +15,7 @@
#endif
#include <math.h>
+#include <memory>
#include <vector>
#include <boost/cstdint.hpp>
@@ -64,6 +65,12 @@ struct CDRDummyDeleter
void operator()(void *) const {}
};
+template<typename T, typename... Args>
+std::unique_ptr<T> make_unique(Args &&... args)
+{
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+}
+
uint8_t readU8(librevenge::RVNGInputStream *input, bool bigEndian=false);
uint16_t readU16(librevenge::RVNGInputStream *input, bool bigEndian=false);
uint32_t readU32(librevenge::RVNGInputStream *input, bool bigEndian=false);
commit f2de6ec61fac666f2093fd25533df26cd610bde7
Author: David Tardon <dtardon at redhat.com>
Date: Sat Mar 24 16:49:47 2018 +0100
reduce the amount of copypasta
Change-Id: I03f35156e7aa006d515e866009b03ce825c19dab
diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index e31581e..1028b1f 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -673,8 +673,7 @@ void libcdr::CDRPath::appendClosePath()
libcdr::CDRPath::CDRPath(const libcdr::CDRPath &path) : m_elements(), m_isClosed(false)
{
- for (auto element : path.m_elements)
- m_elements.push_back(element->clone());
+ appendPath(path);
m_isClosed = path.isClosed();
}
@@ -684,8 +683,7 @@ libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
if (this == &path)
return *this;
clear();
- for (auto element : path.m_elements)
- m_elements.push_back(element->clone());
+ appendPath(path);
m_isClosed = path.isClosed();
return *this;
}
More information about the Libreoffice-commits
mailing list