[Libreoffice-commits] libvisio.git: src/lib
Fridrich Štrba
fridrich.strba at bluewin.ch
Fri Dec 11 01:06:21 PST 2015
src/lib/VSDLayerList.cpp | 24 ++++++++++++++++++++++++
src/lib/VSDLayerList.h | 14 ++++++--------
2 files changed, 30 insertions(+), 8 deletions(-)
New commits:
commit e51525145ebd369093a60ecb902a2739518dca31
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
Date: Fri Dec 11 10:05:57 2015 +0100
Some useful functions for the VSDLayerList
Change-Id: Icf8e1535adaa8fda02bd1cc89c8d4c42a2d0045c
diff --git a/src/lib/VSDLayerList.cpp b/src/lib/VSDLayerList.cpp
index 3ca5037..73fd233 100644
--- a/src/lib/VSDLayerList.cpp
+++ b/src/lib/VSDLayerList.cpp
@@ -62,4 +62,28 @@ void libvisio::VSDLayerList::clear()
m_elements.clear();
}
+void libvisio::VSDLayerList::addLayer(unsigned id, const libvisio::VSDLayer &layer)
+{
+ m_elements[id] = layer;
+}
+
+unsigned libvisio::VSDLayerList::getColourId(const std::vector<unsigned> &ids)
+{
+ unsigned colourId = MINUS_ONE;
+ for (std::vector<unsigned>::const_iterator iter = ids.begin(); iter != ids.end(); ++iter)
+ {
+ std::map<unsigned, libvisio::VSDLayer>::const_iterator iterMap = m_elements.find(*iter);
+ // It is enough that one layer does not override colour and the original colour is used
+ if (iterMap->second.m_colourId == MINUS_ONE)
+ return MINUS_ONE;
+ // This means we are reading the first layer and it overrides colour
+ else if (colourId == MINUS_ONE)
+ colourId = iterMap->second.m_colourId;
+ // If two layers override colour to two different values, the original colour is used
+ else if (colourId != iterMap->second.m_colourId)
+ return MINUS_ONE;
+ }
+ return colourId;
+}
+
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
diff --git a/src/lib/VSDLayerList.h b/src/lib/VSDLayerList.h
index bc5154b..7267c2a 100644
--- a/src/lib/VSDLayerList.h
+++ b/src/lib/VSDLayerList.h
@@ -11,6 +11,7 @@
#define __VSDLAYERLIST_H__
#include <map>
+#include <vector>
#include "VSDTypes.h"
namespace libvisio
@@ -36,14 +37,11 @@ public:
VSDLayerList &operator=(const VSDLayerList &layerList);
void clear();
- unsigned long size() const
- {
- return (unsigned long)m_elements.size();
- }
- bool empty() const
- {
- return (m_elements.empty());
- }
+
+ void addLayer(unsigned id, const VSDLayer &layer);
+
+ unsigned getColourId(const std::vector<unsigned> &ids);
+
private:
std::map<unsigned, VSDLayer> m_elements;
};
More information about the Libreoffice-commits
mailing list