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.st...@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_@VSD_MAJOR_VERSION@_@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();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to