[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