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