[Libreoffice-commits] libvisio.git: configure.ac src/lib
Fridrich Štrba
fridrich.strba at bluewin.ch
Fri Dec 11 00:34:04 PST 2015
configure.ac | 54 +++++++++++++++++++-------------------
src/lib/Makefile.am | 2 +
src/lib/VSDGeometryList.h | 2 -
src/lib/VSDLayerList.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++
src/lib/VSDLayerList.h | 57 ++++++++++++++++++++++++++++++++++++++++
src/lib/VSDParser.cpp | 10 ++++++-
src/lib/VSDParser.h | 4 ++
7 files changed, 165 insertions(+), 29 deletions(-)
New commits:
commit e5b775bf4d651c3d44c55da9e863b085b3016bab
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
Date: Fri Dec 11 09:33:41 2015 +0100
New VSDLayer and VSDLayerList classes
Change-Id: I76796c76887cb284c2f11a5053decc6a46436957
diff --git a/configure.ac b/configure.ac
index 1611dcb..97944d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -219,7 +219,7 @@ AS_IF([test $platform_win32 = yes],
AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--disable-werror], [Treat all warnings as errors, useful for development])],
[enable_werror="$enableval"],
- [enable_werror=no]
+ [enable_werror=yes]
)
AS_IF([test x"$enable_werror" != "xno"], [
CFLAGS="$CFLAGS -Werror"
@@ -256,33 +256,31 @@ AS_IF([test "x$native_win32" = "xyes"], [
AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
])
])
+])
+
+AS_IF([test x"$GCC" = xyes], [
+ # Be tough with warnings and produce less careless code
CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
- CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic -Wshadow -Wunused-variable"
- AS_IF([test x"$enable_weffc" != "xno"], [
- CXXFLAGS="$CXXFLAGS -Weffc++"
- ])
- AS_IF([test x"$enable_wparanoic" != "xno"], [
- CXXFLAGS="$CXXFLAGS -Wcast-align -Wcast-qual -Wchar-subscripts"
- CXXFLAGS="$CXXFLAGS -Wcomment -Wconversion -Wdisabled-optimization"
- CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wformat -Wformat=2"
- CXXFLAGS="$CXXFLAGS -Wformat-nonliteral -Wformat-security"
- CXXFLAGS="$CXXFLAGS -Wformat-y2k -Wimport -Winit-self -Winvalid-pch"
- CXXFLAGS="$CXXFLAGS -Wmissing-braces -Wmissing-field-initializers"
- CXXFLAGS="$CXXFLAGS -Wmissing-format-attribute -Wmissing-include-dirs"
- CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wpacked -Wparentheses"
- CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wredundant-decls -Wreturn-type"
- CXXFLAGS="$CXXFLAGS -Wsequence-point -Wsign-compare -Wstrict-aliasing"
- CXXFLAGS="$CXXFLAGS -Wstrict-aliasing=2 -Wswitch -Wswitch-default"
- CXXFLAGS="$CXXFLAGS -Wswitch-enum -Wtrigraphs -Wunknown-pragmas -Wunused"
- CXXFLAGS="$CXXFLAGS -Wunused-function -Wunused-label -Wunused-parameter"
- CXXFLAGS="$CXXFLAGS -Wunused-value -Wvariadic-macros"
- CXXFLAGS="$CXXFLAGS -Wvolatile-register-var -Wwrite-strings"
- ])
-], [
- AS_IF([test x"$GCC" = xyes], [
- # Be tough with warnings and produce less careless code
- CFLAGS="$CFLAGS -Wall -Wextra -pedantic"
- CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wshadow -pedantic"
+ CXXFLAGS="$CXXFLAGS -Wall -Wextra -pedantic -Wshadow -Wunused-variable"
+ AS_IF([test x"$enable_weffc" != "xno"], [
+ CXXFLAGS="$CXXFLAGS -Weffc++"
+ ])
+ AS_IF([test x"$enable_wparanoic" != "xno"], [
+ CXXFLAGS="$CXXFLAGS -Wcast-align -Wcast-qual -Wchar-subscripts"
+ CXXFLAGS="$CXXFLAGS -Wcomment -Wconversion -Wdisabled-optimization"
+ CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wformat -Wformat=2"
+ CXXFLAGS="$CXXFLAGS -Wformat-nonliteral -Wformat-security"
+ CXXFLAGS="$CXXFLAGS -Wformat-y2k -Wimport -Winit-self -Winvalid-pch"
+ CXXFLAGS="$CXXFLAGS -Wmissing-braces -Wmissing-field-initializers"
+ CXXFLAGS="$CXXFLAGS -Wmissing-format-attribute -Wmissing-include-dirs"
+ CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wpacked -Wparentheses"
+ CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wredundant-decls -Wreturn-type"
+ CXXFLAGS="$CXXFLAGS -Wsequence-point -Wsign-compare -Wstrict-aliasing"
+ CXXFLAGS="$CXXFLAGS -Wstrict-aliasing=2 -Wswitch -Wswitch-default"
+ CXXFLAGS="$CXXFLAGS -Wswitch-enum -Wtrigraphs -Wunknown-pragmas -Wunused"
+ CXXFLAGS="$CXXFLAGS -Wunused-function -Wunused-label -Wunused-parameter"
+ CXXFLAGS="$CXXFLAGS -Wunused-value -Wvariadic-macros"
+ CXXFLAGS="$CXXFLAGS -Wvolatile-register-var -Wwrite-strings"
])
])
LIBVISIO_CXXFLAGS="${REVENGE_CFLAGS} ${LIBXML_CFLAGS} ${ZLIB_CFLAGS} ${ICU_CFLAGS}"
@@ -380,5 +378,7 @@ Build configuration:
tests: ${enable_tests}
tools: ${enable_tools}
werror: ${enable_werror}
+ weffc: ${enable_weffc}
+ wparanoic: ${enable_wparanoic}
==============================================================================
])
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index b98aa9c..c433655 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -46,6 +46,8 @@ libvisio_ at VSD_MAJOR_VERSION@_ at VSD_MINOR_VERSION@_la_SOURCES = \
VSDGeometryList.h \
VSDInternalStream.cpp \
VSDInternalStream.h \
+ VSDLayerList.cpp \
+ VSDLayerList.h \
VSDMetaData.cpp \
VSDMetaData.h \
VSDOutputElementList.cpp \
diff --git a/src/lib/VSDGeometryList.h b/src/lib/VSDGeometryList.h
index 6ff8506..af1aa8a 100644
--- a/src/lib/VSDGeometryList.h
+++ b/src/lib/VSDGeometryList.h
@@ -107,7 +107,7 @@ public:
}
unsigned count() const
{
- return m_elements.size();
+ return (unsigned)m_elements.size();
}
void resetLevel(unsigned level);
private:
diff --git a/src/lib/VSDLayerList.cpp b/src/lib/VSDLayerList.cpp
new file mode 100644
index 0000000..3ca5037
--- /dev/null
+++ b/src/lib/VSDLayerList.cpp
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * This file is part of the libvisio project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "VSDLayerList.h"
+
+libvisio::VSDLayer::VSDLayer() :
+ m_colourId(MINUS_ONE), m_colour() {}
+
+libvisio::VSDLayer::VSDLayer(const VSDLayer &layer) :
+ m_colourId(layer.m_colourId), m_colour(layer.m_colour) {}
+
+libvisio::VSDLayer::~VSDLayer() {}
+
+libvisio::VSDLayer &libvisio::VSDLayer::operator=(const libvisio::VSDLayer &layer)
+{
+ if (this != &layer)
+ {
+ m_colourId = layer.m_colourId;
+ m_colour = layer.m_colour;
+ }
+ return *this;
+}
+
+libvisio::VSDLayerList::VSDLayerList() :
+ m_elements()
+{
+}
+
+libvisio::VSDLayerList::VSDLayerList(const libvisio::VSDLayerList &layerList) :
+ m_elements()
+{
+ std::map<unsigned, VSDLayer>::const_iterator iter = layerList.m_elements.begin();
+ for (; iter != layerList.m_elements.end(); ++iter)
+ m_elements[iter->first] = iter->second;
+}
+
+libvisio::VSDLayerList &libvisio::VSDLayerList::operator=(const libvisio::VSDLayerList &layerList)
+{
+ if (this != &layerList)
+ {
+ clear();
+ std::map<unsigned, VSDLayer>::const_iterator iter = layerList.m_elements.begin();
+ for (; iter != layerList.m_elements.end(); ++iter)
+ m_elements[iter->first] = iter->second;
+ }
+ return *this;
+}
+
+libvisio::VSDLayerList::~VSDLayerList()
+{
+ clear();
+}
+
+void libvisio::VSDLayerList::clear()
+{
+ m_elements.clear();
+}
+
+/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
diff --git a/src/lib/VSDLayerList.h b/src/lib/VSDLayerList.h
new file mode 100644
index 0000000..bc5154b
--- /dev/null
+++ b/src/lib/VSDLayerList.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * This file is part of the libvisio project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef __VSDLAYERLIST_H__
+#define __VSDLAYERLIST_H__
+
+#include <map>
+#include "VSDTypes.h"
+
+namespace libvisio
+{
+
+struct VSDLayer
+{
+ VSDLayer();
+ VSDLayer(const VSDLayer &layer);
+ ~VSDLayer();
+ VSDLayer &operator=(const VSDLayer &layer);
+
+ unsigned m_colourId;
+ Colour m_colour;
+};
+
+class VSDLayerList
+{
+public:
+ VSDLayerList();
+ VSDLayerList(const VSDLayerList &layerList);
+ ~VSDLayerList();
+ VSDLayerList &operator=(const VSDLayerList &layerList);
+
+ void clear();
+ unsigned long size() const
+ {
+ return (unsigned long)m_elements.size();
+ }
+ bool empty() const
+ {
+ return (m_elements.empty());
+ }
+private:
+ std::map<unsigned, VSDLayer> m_elements;
+};
+
+
+
+
+} // namespace libvisio
+
+#endif // __VSDLAYERLIST_H__
+/* vim:set shiftwidth=2 softtabstop=2 expandtab: */
diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp
index ce9cbd5..b348cbf 100644
--- a/src/lib/VSDParser.cpp
+++ b/src/lib/VSDParser.cpp
@@ -27,7 +27,7 @@ libvisio::VSDParser::VSDParser(librevenge::RVNGInputStream *input, librevenge::R
m_currentShapeLevel(0), m_currentShapeID(MINUS_ONE), m_extractStencils(false), m_colours(),
m_isBackgroundPage(false), m_isShapeStarted(false), m_shadowOffsetX(0.0), m_shadowOffsetY(0.0),
m_currentGeometryList(0), m_currentGeomListCount(0), m_fonts(), m_names(), m_namesMapMap(),
- m_currentPageName()
+ m_currentPageName(), m_currentLayerList()
{}
libvisio::VSDParser::~VSDParser()
@@ -590,6 +590,9 @@ void libvisio::VSDParser::handleChunk(librevenge::RVNGInputStream *input)
case VSD_MISC:
readMisc(input);
break;
+ case VSD_LAYER_LIST:
+ readLayerList(input);
+ break;
default:
m_collector->collectUnhandledChunk(m_header.id, m_header.level);
}
@@ -930,6 +933,11 @@ void libvisio::VSDParser::readPropList(librevenge::RVNGInputStream * /* input */
{
}
+void libvisio::VSDParser::readLayerList(librevenge::RVNGInputStream * /* input */)
+{
+ m_currentLayerList.clear();
+}
+
void libvisio::VSDParser::readPage(librevenge::RVNGInputStream *input)
{
input->seek(8, librevenge::RVNG_SEEK_CUR); //sub header length and children list length
diff --git a/src/lib/VSDParser.h b/src/lib/VSDParser.h
index b42c57d..e879790 100644
--- a/src/lib/VSDParser.h
+++ b/src/lib/VSDParser.h
@@ -22,6 +22,7 @@
#include "VSDCharacterList.h"
#include "VSDParagraphList.h"
#include "VSDShapeList.h"
+#include "VSDLayerList.h"
#include "VSDStencils.h"
namespace libvisio
@@ -111,6 +112,8 @@ protected:
void readMisc(librevenge::RVNGInputStream *input);
+ virtual void readLayerList(librevenge::RVNGInputStream *input);
+
// parser of one pass
bool parseDocument(librevenge::RVNGInputStream *input, unsigned shift);
@@ -166,6 +169,7 @@ protected:
std::map<unsigned, VSDName> m_names;
std::map<unsigned, std::map<unsigned, VSDName> > m_namesMapMap;
VSDName m_currentPageName;
+ VSDLayerList m_currentLayerList;
private:
VSDParser();
More information about the Libreoffice-commits
mailing list