diff --git a/extra/calligra/0001-switch-to-librevenge-based-import-libs.patch b/extra/calligra/0001-switch-to-librevenge-based-import-libs.patch new file mode 100644 index 000000000..ced0ff074 --- /dev/null +++ b/extra/calligra/0001-switch-to-librevenge-based-import-libs.patch @@ -0,0 +1,882 @@ +From 8e8f99cc314435f100d367f41c110becd19d3885 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Tue, 27 May 2014 16:15:52 +0200 +Subject: [PATCH] switch to librevenge-based import libs + +--- + CMakeLists.txt | 10 ++++++ + cmake/modules/FindLibEtonyek.cmake | 6 ++-- + cmake/modules/FindLibOdfGen.cmake | 6 ++-- + cmake/modules/FindLibRevenge.cmake | 37 +++++++++++++++++++++ + cmake/modules/FindLibVisio.cmake | 6 ++-- + cmake/modules/FindLibWpd.cmake | 22 +++---------- + cmake/modules/FindLibWpg.cmake | 6 ++-- + cmake/modules/FindLibWps.cmake | 6 ++-- + filters/flow/visio/import/CMakeLists.txt | 3 +- + filters/flow/visio/import/VSDXImport.cpp | 9 ++--- + filters/flow/wpg/import/CMakeLists.txt | 3 +- + filters/flow/wpg/import/WPGImport.cpp | 9 ++--- + filters/karbon/wpg/CMakeLists.txt | 4 +-- + filters/karbon/wpg/WPGImport.cpp | 39 ++++++++-------------- + filters/libodfhandler/DiskDocumentHandler.cxx | 13 ++++---- + filters/libodfhandler/DiskDocumentHandler.hxx | 8 ++--- + filters/libodfhandler/OutputFileHelper.cxx | 6 ++-- + filters/libodfhandler/OutputFileHelper.hxx | 9 ++--- + filters/libodfhandler/StdOutHandler.cxx | 13 ++++---- + filters/libodfhandler/StdOutHandler.hxx | 8 ++--- + filters/stage/keynote/import/CMakeLists.txt | 5 +-- + filters/stage/keynote/import/KeyImport.cpp | 15 +++++---- + filters/words/wordperfect/import/CMakeLists.txt | 3 +- + filters/words/wordperfect/import/WPDImport.cpp | 44 ++++++++++++++----------- + filters/words/works/import/CMakeLists.txt | 3 +- + filters/words/works/import/WPSImport.cpp | 18 +++++----- + 26 files changed, 177 insertions(+), 134 deletions(-) + create mode 100644 cmake/modules/FindLibRevenge.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5b6b764..c337864 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -697,6 +697,16 @@ macro_optional_find_package(Okular) + macro_log_feature(OKULAR_FOUND "Okular" "Okular ODP Plugin" "http://okular.kde.org/" FALSE "" "Required to build the Okular OpenDocument Presenter plugin") + + ## ++## Test for librevenge ++## ++macro_optional_find_package(LibRevenge) ++macro_log_feature(LIBREVENGE_FOUND "LibRevenge" ++ "A base library for writing document import filters" ++ "http://sf.net/p/libwpd/librevenge/" FALSE "" ++ "Required by various import filters" ++) ++ ++## + ## Test for libodfgen + ## + macro_optional_find_package(LibOdfGen) +diff --git a/cmake/modules/FindLibEtonyek.cmake b/cmake/modules/FindLibEtonyek.cmake +index 5b78964..ad10d79 100644 +--- a/cmake/modules/FindLibEtonyek.cmake ++++ b/cmake/modules/FindLibEtonyek.cmake +@@ -10,16 +10,16 @@ + + include(LibFindMacros) + libfind_package(LIBETONYEK LibWpd) +-libfind_pkg_check_modules(LIBETONYEK_PKGCONF libetonyek-0.0) ++libfind_pkg_check_modules(LIBETONYEK_PKGCONF libetonyek-0.1) + + find_path(LIBETONYEK_INCLUDE_DIR + NAMES libetonyek/libetonyek.h + HINTS ${LIBETONYEK_PKGCONF_INCLUDE_DIRS} ${LIBETONYEK_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libetonyek-0.0 ++ PATH_SUFFIXES libetonyek-0.1 + ) + + find_library(LIBETONYEK_LIBRARY +- NAMES etonyek etonyek-0.0 ++ NAMES etonyek etonyek-0.1 + HINTS ${LIBETONYEK_PKGCONF_LIBRARY_DIRS} ${LIBETONYEK_PKGCONF_LIBDIR} + ) + +diff --git a/cmake/modules/FindLibOdfGen.cmake b/cmake/modules/FindLibOdfGen.cmake +index 9ab80d1..355c345 100644 +--- a/cmake/modules/FindLibOdfGen.cmake ++++ b/cmake/modules/FindLibOdfGen.cmake +@@ -9,16 +9,16 @@ + # Redistribution and use is allowed according to the terms of the BSD license. + + include(LibFindMacros) +-libfind_pkg_check_modules(LIBODFGEN_PKGCONF libodfgen-0.0) ++libfind_pkg_check_modules(LIBODFGEN_PKGCONF libodfgen-0.1) + + find_path(LIBODFGEN_INCLUDE_DIR + NAMES libodfgen/libodfgen.hxx + HINTS ${LIBODFGEN_PKGCONF_INCLUDE_DIRS} ${LIBODFGEN_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libodfgen-0.0 ++ PATH_SUFFIXES libodfgen-0.1 + ) + + find_library(LIBODFGEN_LIBRARY +- NAMES odfgen-0.0 ++ NAMES odfgen-0.1 + HINTS ${LIBODFGEN_PKGCONF_LIBRARY_DIRS} ${LIBODFGEN_PKGCONF_LIBDIR} + ) + +diff --git a/cmake/modules/FindLibRevenge.cmake b/cmake/modules/FindLibRevenge.cmake +new file mode 100644 +index 0000000..8ed18b1 +--- /dev/null ++++ b/cmake/modules/FindLibRevenge.cmake +@@ -0,0 +1,37 @@ ++# - Try to find the librevenge ++# Once done this will define ++# ++# LIBREVENGE_FOUND - system has LIBREVENGE ++# LIBREVENGE_INCLUDE_DIRS - the LIBREVENGE include directory ++# LIBREVENGE_LIBRARIES - Link these to use LIBREVENGE ++# LIBREVENGE_DEFINITIONS - Compiler switches required for using LIBREVENGE ++# ++ ++include(LibFindMacros) ++libfind_pkg_check_modules(REVENGE_PKGCONF librevenge-0.0) ++ ++find_path(REVENGE_INCLUDE_DIR ++ NAMES librevenge/librevenge.h ++ HINTS ${REVENGE_PKGCONF_INCLUDE_DIRS} ${REVENGE_PKGCONF_INCLUDEDIR} ++ PATH_SUFFIXES librevenge-0.0 ++) ++ ++find_path(REVENGE_STREAM_INCLUDE_DIR ++ NAMES librevenge-stream/librevenge-stream.h ++ HINTS ${REVENGE_STREAM_PKGCONF_INCLUDE_DIRS} ${REVENGE_STREAM_PKGCONF_INCLUDEDIR} ++ PATH_SUFFIXES librevenge-0.0 ++) ++ ++find_library(REVENGE_LIBRARY ++ NAMES revenge librevenge revenge-0.0 librevenge-0.0 ++ HINTS ${REVENGE_STREAM_PKGCONF_LIBRARY_DIRS} ${REVENGE_STREAM_PKGCONF_LIBDIR} ++) ++ ++find_library(REVENGE_STREAM_LIBRARY ++ NAMES revenge-stream librevenge-stream revenge-stream-0.0 librevenge-stream-0.0 ++ HINTS ${REVENGE_PKGCONF_LIBRARY_DIRS} ${REVENGE_PKGCONF_LIBDIR} ++) ++ ++set(LIBREVENGE_PROCESS_LIBS REVENGE_LIBRARY REVENGE_STREAM_LIBRARY) ++set(LIBREVENGE_PROCESS_INCLUDES REVENGE_INCLUDE_DIR REVENGE_STREAM_INCLUDE_DIR) ++libfind_process(LIBREVENGE) +diff --git a/cmake/modules/FindLibVisio.cmake b/cmake/modules/FindLibVisio.cmake +index a8533ee..49871b3 100644 +--- a/cmake/modules/FindLibVisio.cmake ++++ b/cmake/modules/FindLibVisio.cmake +@@ -12,16 +12,16 @@ + include(LibFindMacros) + libfind_package(LIBWPD LibWpd) + libfind_package(LIBWPG LibWpg) +-libfind_pkg_check_modules(LIBVISIO_PKGCONF libvisio-0.0) ++libfind_pkg_check_modules(LIBVISIO_PKGCONF libvisio-0.1) + + find_path(LIBVISIO_INCLUDE_DIR + NAMES libvisio/libvisio.h + HINTS ${LIBVISIO_PKGCONF_INCLUDE_DIRS} ${LIBVISIO_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libvisio-0.0 ++ PATH_SUFFIXES libvisio-0.1 + ) + + find_library(LIBVISIO_LIBRARY +- NAMES visio visio-0.0 ++ NAMES visio visio-0.1 + HINTS ${LIBVISIO_PKGCONF_LIBRARY_DIRS} ${LIBVISIO_PKGCONF_LIBDIR} + ) + +diff --git a/cmake/modules/FindLibWpd.cmake b/cmake/modules/FindLibWpd.cmake +index 2a324cc..ed9bc26 100644 +--- a/cmake/modules/FindLibWpd.cmake ++++ b/cmake/modules/FindLibWpd.cmake +@@ -8,31 +8,19 @@ + # + + include(LibFindMacros) +-libfind_pkg_check_modules(WPD_PKGCONF libwpd-0.9) +-libfind_pkg_check_modules(WPD_STREAM_PKGCONF libwpd-stream-0.9) ++libfind_pkg_check_modules(WPD_PKGCONF libwpd-0.10) + + find_path(WPD_INCLUDE_DIR + NAMES libwpd/libwpd.h + HINTS ${WPD_PKGCONF_INCLUDE_DIRS} ${WPD_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libwpd-0.9 +-) +- +-find_path(WPD_STREAM_INCLUDE_DIR +- NAMES libwpd-stream/libwpd-stream.h +- HINTS ${WPD_STREAM_PKGCONF_INCLUDE_DIRS} ${WPD_STREAM_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libwpd-0.9 ++ PATH_SUFFIXES libwpd-0.10 + ) + + find_library(WPD_LIBRARY +- NAMES wpd libwpd wpd-0.9 libwpd-0.9 ++ NAMES wpd libwpd wpd-0.10 libwpd-0.10 + HINTS ${WPD_PKGCONF_LIBRARY_DIRS} ${WPD_PKGCONF_LIBDIR} + ) + +-find_library(WPD_STREAM_LIBRARY +- NAMES wpd-stream libwpd-stream wpd-stream-0.9 libwpd-stream-0.9 +- HINTS ${WPD_STREAM_PKGCONF_LIBRARY_DIRS} ${WPD_STREAM_PKGCONF_LIBDIR} +-) +- +-set(LIBWPD_PROCESS_LIBS WPD_LIBRARY WPD_STREAM_LIBRARY) +-set(LIBWPD_PROCESS_INCLUDES WPD_INCLUDE_DIR WPD_STREAM_INCLUDE_DIR) ++set(LIBWPD_PROCESS_LIBS WPD_LIBRARY) ++set(LIBWPD_PROCESS_INCLUDES WPD_INCLUDE_DIR) + libfind_process(LIBWPD) +diff --git a/cmake/modules/FindLibWpg.cmake b/cmake/modules/FindLibWpg.cmake +index 56d9302..16c2a1c 100644 +--- a/cmake/modules/FindLibWpg.cmake ++++ b/cmake/modules/FindLibWpg.cmake +@@ -11,16 +11,16 @@ + + include(LibFindMacros) + libfind_package(LIBWPG LibWpd) +-libfind_pkg_check_modules(LIBWPG_PKGCONF libwpg-0.2) ++libfind_pkg_check_modules(LIBWPG_PKGCONF libwpg-0.3) + + find_path(LIBWPG_INCLUDE_DIR + NAMES libwpg/libwpg.h + HINTS ${LIBWPG_PKGCONF_INCLUDE_DIRS} ${LIBWPG_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libwpg-0.2 ++ PATH_SUFFIXES libwpg-0.3 + ) + + find_library(LIBWPG_LIBRARY +- NAMES wpg wpg-0.2 ++ NAMES wpg wpg-0.3 + HINTS ${LIBWPG_PKGCONF_LIBRARY_DIRS} ${LIBWPG_PKGCONF_LIBDIR} + ) + +diff --git a/cmake/modules/FindLibWps.cmake b/cmake/modules/FindLibWps.cmake +index 149f34c..f8c8225 100644 +--- a/cmake/modules/FindLibWps.cmake ++++ b/cmake/modules/FindLibWps.cmake +@@ -10,16 +10,16 @@ + + include(LibFindMacros) + libfind_package(LIBWPS LibWpd) +-libfind_pkg_check_modules(LIBWPS_PKGCONF libwps-0.2) ++libfind_pkg_check_modules(LIBWPS_PKGCONF libwps-0.3) + + find_path(LIBWPS_INCLUDE_DIR + NAMES libwps/libwps.h + HINTS ${LIBWPS_PKGCONF_INCLUDE_DIRS} ${LIBWPS_PKGCONF_INCLUDEDIR} +- PATH_SUFFIXES libwps-0.2 ++ PATH_SUFFIXES libwps-0.3 + ) + + find_library(LIBWPS_LIBRARY +- NAMES wps wps-0.2 ++ NAMES wps wps-0.3 + HINTS ${LIBWPS_PKGCONF_LIBRARY_DIRS} ${LIBWPS_PKGCONF_LIBDIR} + ) + +diff --git a/filters/flow/visio/import/CMakeLists.txt b/filters/flow/visio/import/CMakeLists.txt +index 1de4385..4c2a391 100644 +--- a/filters/flow/visio/import/CMakeLists.txt ++++ b/filters/flow/visio/import/CMakeLists.txt +@@ -1,6 +1,7 @@ + include_directories( + ../../../libodfhandler/ + ${LIBODFGEN_INCLUDE_DIRS} ++ ${LIBREVENGE_INCLUDE_DIRS} + ${LIBVISIO_INCLUDE_DIRS} + ${KOMAIN_INCLUDES} + ) +@@ -15,7 +16,7 @@ set(vsdx2odg_PART_SRCS + + kde4_add_plugin(calligra_filter_vsdx2odg ${vsdx2odg_PART_SRCS}) + +-target_link_libraries(calligra_filter_vsdx2odg komain ${LIBODFGEN_LIBRARIES} ${LIBVISIO_LIBRARIES}) ++target_link_libraries(calligra_filter_vsdx2odg komain ${LIBODFGEN_LIBRARIES} ${LIBREVENGE_LIBRARIES} ${LIBVISIO_LIBRARIES}) + + install(TARGETS calligra_filter_vsdx2odg DESTINATION ${PLUGIN_INSTALL_DIR}) + install(FILES calligra_filter_vsdx2odg.desktop DESTINATION ${SERVICES_INSTALL_DIR}) +diff --git a/filters/flow/visio/import/VSDXImport.cpp b/filters/flow/visio/import/VSDXImport.cpp +index 70a54d9..eb3a208 100644 +--- a/filters/flow/visio/import/VSDXImport.cpp ++++ b/filters/flow/visio/import/VSDXImport.cpp +@@ -17,7 +17,7 @@ + #include "VSDXImport.h" + + #include +-#include ++#include + + #include "OutputFileHelper.hxx" + #include +@@ -39,7 +39,7 @@ public: + ~OdgOutputFileHelper() {} + + private: +- bool _isSupportedFormat(WPXInputStream *input, const char * /* password */) ++ bool _isSupportedFormat(librevenge::RVNGInputStream *input, const char * /* password */) + { + if (!libvisio::VisioDocument::isSupported(input)) + { +@@ -49,9 +49,10 @@ private: + return true; + } + +- bool _convertDocument(WPXInputStream *input, const char * /* password */, OdfDocumentHandler *handler, OdfStreamType streamType) ++ bool _convertDocument(librevenge::RVNGInputStream *input, const char * /* password */, OdfDocumentHandler *handler, OdfStreamType streamType) + { +- OdgGenerator exporter(handler, streamType); ++ OdgGenerator exporter; ++ exporter.addDocumentHandler(handler, streamType); + return libvisio::VisioDocument::parse(input, &exporter); + } + }; +diff --git a/filters/flow/wpg/import/CMakeLists.txt b/filters/flow/wpg/import/CMakeLists.txt +index 524d1b1..e2ee2a5 100644 +--- a/filters/flow/wpg/import/CMakeLists.txt ++++ b/filters/flow/wpg/import/CMakeLists.txt +@@ -1,6 +1,7 @@ + include_directories( + ../../../libodfhandler/ + ${LIBODFGEN_INCLUDE_DIRS} ++ ${LIBREVENGE_INCLUDE_DIRS} + ${LIBVISIO_INCLUDE_DIRS} + ${KOMAIN_INCLUDES} + ) +@@ -15,7 +16,7 @@ set(wpg2odg_PART_SRCS + + kde4_add_plugin(calligra_filter_wpg2odg ${wpg2odg_PART_SRCS}) + +-target_link_libraries(calligra_filter_wpg2odg komain ${LIBODFGEN_LIBRARIES} ${LIBWPG_LIBRARIES}) ++target_link_libraries(calligra_filter_wpg2odg komain ${LIBODFGEN_LIBRARIES} ${LIBREVENGE_LIBRARIES} ${LIBWPG_LIBRARIES}) + + install(TARGETS calligra_filter_wpg2odg DESTINATION ${PLUGIN_INSTALL_DIR}) + install(FILES calligra_filter_wpg2odg.desktop DESTINATION ${SERVICES_INSTALL_DIR}) +diff --git a/filters/flow/wpg/import/WPGImport.cpp b/filters/flow/wpg/import/WPGImport.cpp +index b4e0fa7..563ae6e 100644 +--- a/filters/flow/wpg/import/WPGImport.cpp ++++ b/filters/flow/wpg/import/WPGImport.cpp +@@ -17,7 +17,7 @@ + #include "WPGImport.h" + + #include +-#include ++#include + + #include "OutputFileHelper.hxx" + #include +@@ -39,7 +39,7 @@ public: + ~OdgOutputFileHelper() {} + + private: +- bool _isSupportedFormat(WPXInputStream *input, const char * /* password */) ++ bool _isSupportedFormat(librevenge::RVNGInputStream *input, const char * /* password */) + { + if (!libwpg::WPGraphics::isSupported(input)) + { +@@ -49,9 +49,10 @@ private: + return true; + } + +- bool _convertDocument(WPXInputStream *input, const char * /* password */, OdfDocumentHandler *handler, OdfStreamType streamType) ++ bool _convertDocument(librevenge::RVNGInputStream *input, const char * /* password */, OdfDocumentHandler *handler, OdfStreamType streamType) + { +- OdgGenerator exporter(handler, streamType); ++ OdgGenerator exporter; ++ exporter.addDocumentHandler(handler, streamType); + return libwpg::WPGraphics::parse(input, &exporter); + } + }; +diff --git a/filters/karbon/wpg/CMakeLists.txt b/filters/karbon/wpg/CMakeLists.txt +index 5f578e9..ffa7742 100644 +--- a/filters/karbon/wpg/CMakeLists.txt ++++ b/filters/karbon/wpg/CMakeLists.txt +@@ -1,11 +1,11 @@ + +-include_directories(${CMAKE_BINARY_DIR}/filters/ ${LIBWPD_INCLUDE_DIRS} ${LIBWPG_INCLUDE_DIR}/) ++include_directories(${CMAKE_BINARY_DIR}/filters/ ${LIBREVENGE_INCLUDE_DIRS} ${LIBWPG_INCLUDE_DIR}/) + + set(wpg2svg_PART_SRCS WPGImport.cpp) + + kde4_add_plugin(calligra_filter_wpg2svg ${wpg2svg_PART_SRCS}) + +-target_link_libraries(calligra_filter_wpg2svg komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES} ${LIBWPD_LIBRARIES}) ++target_link_libraries(calligra_filter_wpg2svg komain ${LIBWPG_LIBRARIES} ${LIBREVENGE_LIBRARIES}) + + install(TARGETS calligra_filter_wpg2svg DESTINATION ${PLUGIN_INSTALL_DIR}) + install(FILES calligra_filter_wpg2svg.desktop DESTINATION ${SERVICES_INSTALL_DIR}) +diff --git a/filters/karbon/wpg/WPGImport.cpp b/filters/karbon/wpg/WPGImport.cpp +index f1852ee..4457bec 100644 +--- a/filters/karbon/wpg/WPGImport.cpp ++++ b/filters/karbon/wpg/WPGImport.cpp +@@ -32,14 +32,12 @@ + #include + #include + ++#include ++#include ++ + #include +-#if LIBWPG_VERSION_MINOR<2 +-#include +-#else +-#include +-#include +-#endif + ++#include + #include + + K_PLUGIN_FACTORY(WPGImportFactory, registerPlugin();) +@@ -63,39 +61,29 @@ KoFilter::ConversionStatus WPGImport::convert(const QByteArray& from, const QByt + if (to != "image/svg+xml") + return KoFilter::NotImplemented; + +-#if LIBWPG_VERSION_MINOR<2 +- WPXInputStream* input = new libwpg::WPGFileStream(m_chain->inputFile().toLocal8Bit()); +- if (input->isOLEStream()) { +- WPXInputStream* olestream = input->getDocumentOLEStream(); +- if (olestream) { +- delete input; +- input = olestream; +- } +- } +- libwpg::WPGString output; +-#else +- WPXInputStream* input = new WPXFileStream(m_chain->inputFile().toLocal8Bit()); +- if (input->isOLEStream()) { +- WPXInputStream* olestream = input->getDocumentOLEStream("Anything"); ++ librevenge::RVNGInputStream* input = new librevenge::RVNGFileStream(m_chain->inputFile().toLocal8Bit()); ++ if (input->isStructured()) { ++ librevenge::RVNGInputStream* olestream = input->getSubStreamByName("Anything"); + if (olestream) { + delete input; + input = olestream; + } + } +- ::WPXString output; +-#endif +- + if (!libwpg::WPGraphics::isSupported(input)) { + kWarning() << "ERROR: Unsupported file format (unsupported version) or file is encrypted!"; + delete input; + return KoFilter::NotImplemented; + } + +- if (!libwpg::WPGraphics::generateSVG(input, output)) { ++ ::librevenge::RVNGStringVector output; ++ librevenge::RVNGSVGDrawingGenerator generator(output, ""); ++ ++ if (!libwpg::WPGraphics::parse(input, &generator)) { + kWarning() << "ERROR: SVG Generation failed!"; + delete input; + return KoFilter::ParsingError; + } ++ assert(1 == output.size()); + + delete input; + +@@ -104,7 +92,8 @@ KoFilter::ConversionStatus WPGImport::convert(const QByteArray& from, const QByt + kWarning() << "ERROR: Could not open output file" << m_chain->outputFile(); + return KoFilter::InternalError; + } +- outputFile.write(output.cstr()); ++ outputFile.write("\n\n"); ++ outputFile.write(output[0].cstr()); + outputFile.close(); + + return KoFilter::OK; +diff --git a/filters/libodfhandler/DiskDocumentHandler.cxx b/filters/libodfhandler/DiskDocumentHandler.cxx +index e035fdc..f8ca273 100644 +--- a/filters/libodfhandler/DiskDocumentHandler.cxx ++++ b/filters/libodfhandler/DiskDocumentHandler.cxx +@@ -37,7 +37,7 @@ DiskOdfDocumentHandler::DiskOdfDocumentHandler(FemtoZip *pOutput) : + { + } + +-void DiskOdfDocumentHandler::startElement(const char *psName, const WPXPropertyList &xPropList) ++void DiskOdfDocumentHandler::startElement(const char *psName, const librevenge::RVNGPropertyList &xPropList) + { + if (mbIsTagOpened) + { +@@ -46,11 +46,11 @@ void DiskOdfDocumentHandler::startElement(const char *psName, const WPXPropertyL + } + PUTSTRING("<"); + PUTSTRING(psName); +- WPXPropertyList::Iter i(xPropList); ++ librevenge::RVNGPropertyList::Iter i(xPropList); + for (i.rewind(); i.next(); ) + { +- // filter out libwpd elements +- if (strncmp(i.key(), "libwpd", 6) != 0) ++ // filter out librevenge properties ++ if (strncmp(i.key(), "librevenge", 10) != 0) + { + PUTSTRING(" "); + PUTSTRING(i.key()); +@@ -91,14 +91,15 @@ void DiskOdfDocumentHandler::endElement(const char *psName) + } + } + +-void DiskOdfDocumentHandler::characters(const WPXString &sCharacters) ++void DiskOdfDocumentHandler::characters(const librevenge::RVNGString &sCharacters) + { + if (mbIsTagOpened) + { + PUTSTRING(">"); + mbIsTagOpened = false; + } +- WPXString sEscapedCharacters(sCharacters, true); ++ librevenge::RVNGString sEscapedCharacters; ++ sEscapedCharacters.appendEscapedXML(sCharacters); + if (sEscapedCharacters.len() > 0) + PUTSTRING(sEscapedCharacters.cstr()); + } +diff --git a/filters/libodfhandler/DiskDocumentHandler.hxx b/filters/libodfhandler/DiskDocumentHandler.hxx +index 17f7eb7..d52a256 100644 +--- a/filters/libodfhandler/DiskDocumentHandler.hxx ++++ b/filters/libodfhandler/DiskDocumentHandler.hxx +@@ -23,7 +23,7 @@ + #ifndef _DISKDOCUMENTHANDLER_H + #define _DISKDOCUMENTHANDLER_H + +-#include ++#include + + #ifdef HAVE_CONFIG_H + #include "config.h" +@@ -45,9 +45,9 @@ public: + #endif + virtual void startDocument() {} + virtual void endDocument(); +- virtual void startElement(const char *psName, const WPXPropertyList &xPropList); ++ virtual void startElement(const char *psName, const librevenge::RVNGPropertyList &xPropList); + virtual void endElement(const char *psName); +- virtual void characters(const WPXString &sCharacters); ++ virtual void characters(const librevenge::RVNGString &sCharacters); + + private: + DiskOdfDocumentHandler(DiskOdfDocumentHandler const &); +@@ -58,7 +58,7 @@ private: + FemtoZip *mpOutput; + #endif + bool mbIsTagOpened; +- WPXString msOpenedTagName; ++ librevenge::RVNGString msOpenedTagName; + }; + #endif + +diff --git a/filters/libodfhandler/OutputFileHelper.cxx b/filters/libodfhandler/OutputFileHelper.cxx +index 8786d4c..61e48e9 100644 +--- a/filters/libodfhandler/OutputFileHelper.cxx ++++ b/filters/libodfhandler/OutputFileHelper.cxx +@@ -37,7 +37,7 @@ + + #include "DiskDocumentHandler.hxx" + #include "StdOutHandler.hxx" +-#include ++#include + + struct OutputFileHelperImpl + { +@@ -197,12 +197,12 @@ bool OutputFileHelper::writeChildFile(const char *childFileName, const char *str + + bool OutputFileHelper::writeConvertedContent(const char *childFileName, const char *inFileName, const OdfStreamType streamType) + { +- WPXFileStream input(inFileName); ++ librevenge::RVNGFileStream input(inFileName); + + if (!_isSupportedFormat(&input, m_impl->mpPassword)) + return false; + +- input.seek(0, WPX_SEEK_SET); ++ input.seek(0, librevenge::RVNG_SEEK_SET); + + OdfDocumentHandler *pHandler; + #ifdef USE_GSF_OUTPUT +diff --git a/filters/libodfhandler/OutputFileHelper.hxx b/filters/libodfhandler/OutputFileHelper.hxx +index a61b9a0..d2632a9 100644 +--- a/filters/libodfhandler/OutputFileHelper.hxx ++++ b/filters/libodfhandler/OutputFileHelper.hxx +@@ -22,9 +22,10 @@ + #ifndef _OUTPUTFILEHELPER_HXX + #define _OUTPUTFILEHELPER_HXX + +-#include ++#include ++ ++#include + +-class WPXInputStream; + struct OutputFileHelperImpl; + + class OutputFileHelper +@@ -38,8 +39,8 @@ public: + bool writeConvertedContent(const char *childFileName, const char *inFileName, const OdfStreamType streamType); + + private: +- virtual bool _isSupportedFormat(WPXInputStream *input, const char *password) = 0; +- virtual bool _convertDocument(WPXInputStream *input, const char *password, OdfDocumentHandler *handler, const OdfStreamType streamType) = 0; ++ virtual bool _isSupportedFormat(librevenge::RVNGInputStream *input, const char *password) = 0; ++ virtual bool _convertDocument(librevenge::RVNGInputStream *input, const char *password, OdfDocumentHandler *handler, const OdfStreamType streamType) = 0; + OutputFileHelperImpl *m_impl; + + private: +diff --git a/filters/libodfhandler/StdOutHandler.cxx b/filters/libodfhandler/StdOutHandler.cxx +index 6864266..16e19f0 100644 +--- a/filters/libodfhandler/StdOutHandler.cxx ++++ b/filters/libodfhandler/StdOutHandler.cxx +@@ -31,7 +31,7 @@ StdOutHandler::StdOutHandler() : + printf("\n"); + } + +-void StdOutHandler::startElement(const char *psName, const WPXPropertyList &xPropList) ++void StdOutHandler::startElement(const char *psName, const librevenge::RVNGPropertyList &xPropList) + { + if (mbIsTagOpened) + { +@@ -39,11 +39,11 @@ void StdOutHandler::startElement(const char *psName, const WPXPropertyList &xPro + mbIsTagOpened = false; + } + printf("<%s", psName); +- WPXPropertyList::Iter i(xPropList); ++ librevenge::RVNGPropertyList::Iter i(xPropList); + for (i.rewind(); i.next(); ) + { +- // filter out libwpd elements +- if (strncmp(i.key(), "libwpd", 6) != 0) ++ // filter out librevenge properties ++ if (strncmp(i.key(), "librevenge", 10) != 0) + printf(" %s=\"%s\"", i.key(), i()->getStr().cstr()); + } + mbIsTagOpened = true; +@@ -73,15 +73,14 @@ void StdOutHandler::endElement(const char *psName) + } + } + +-void StdOutHandler::characters(const WPXString &sCharacters) ++void StdOutHandler::characters(const librevenge::RVNGString &sCharacters) + { + if (mbIsTagOpened) + { + printf(">"); + mbIsTagOpened = false; + } +- WPXString sEscapedCharacters(sCharacters, true); +- printf("%s", sEscapedCharacters.cstr()); ++ printf("%s", librevenge::RVNGString::escapeXML(sCharacters).cstr()); + } + + void StdOutHandler::endDocument() +diff --git a/filters/libodfhandler/StdOutHandler.hxx b/filters/libodfhandler/StdOutHandler.hxx +index a18189a..44fa1e7 100644 +--- a/filters/libodfhandler/StdOutHandler.hxx ++++ b/filters/libodfhandler/StdOutHandler.hxx +@@ -23,7 +23,7 @@ + #ifndef _STDOUTHANDLER_H + #define _STDOUTHANDLER_H + +-#include ++#include + + class StdOutHandler : public OdfDocumentHandler + { +@@ -31,12 +31,12 @@ public: + StdOutHandler(); + virtual void startDocument() {} + virtual void endDocument(); +- virtual void startElement(const char *psName, const WPXPropertyList &xPropList); ++ virtual void startElement(const char *psName, const librevenge::RVNGPropertyList &xPropList); + virtual void endElement(const char *psName); +- virtual void characters(const WPXString &sCharacters); ++ virtual void characters(const librevenge::RVNGString &sCharacters); + private: + bool mbIsTagOpened; +- WPXString msOpenedTagName; ++ librevenge::RVNGString msOpenedTagName; + }; + #endif + +diff --git a/filters/words/wordperfect/import/CMakeLists.txt b/filters/words/wordperfect/import/CMakeLists.txt +index 6a0e2d7..ffb3c70 100644 +--- a/filters/words/wordperfect/import/CMakeLists.txt ++++ b/filters/words/wordperfect/import/CMakeLists.txt +@@ -1,6 +1,7 @@ + include_directories( + ../../../libodfhandler/ + ${LIBODFGEN_INCLUDE_DIRS} ++ ${LIBREVENGE_INCLUDE_DIRS} + ${LIBWPD_INCLUDE_DIRS} + ${LIBWPG_INCLUDE_DIRS} + ${KOMAIN_INCLUDES} +@@ -17,7 +18,7 @@ set(wpd2odt_PART_SRCS + kde4_add_plugin(calligra_filter_wpd2odt ${wpd2odt_PART_SRCS}) + + target_link_libraries(calligra_filter_wpd2odt +- komain ${LIBODFGEN_LIBRARIES} ${LIBWPD_LIBRARIES} ${LIBWPG_LIBRARIES}) ++ komain ${LIBODFGEN_LIBRARIES} ${LIBREVENGE_LIBRARIES} ${LIBWPD_LIBRARIES} ${LIBWPG_LIBRARIES}) + + install(TARGETS calligra_filter_wpd2odt DESTINATION ${PLUGIN_INSTALL_DIR}) + +diff --git a/filters/words/wordperfect/import/WPDImport.cpp b/filters/words/wordperfect/import/WPDImport.cpp +index af9d9b6..edf1c91 100644 +--- a/filters/words/wordperfect/import/WPDImport.cpp ++++ b/filters/words/wordperfect/import/WPDImport.cpp +@@ -18,8 +18,7 @@ + + #include + #include +-#include +-#include ++#include + + #include + #include +@@ -31,6 +30,7 @@ + #include + #include + ++#include + #include + + class OdtOutputFileHelper : public OutputFileHelper +@@ -41,20 +41,20 @@ public: + ~OdtOutputFileHelper() {}; + + private: +- bool _isSupportedFormat(WPXInputStream *input, const char *password) ++ bool _isSupportedFormat(librevenge::RVNGInputStream *input, const char *password) + { +- WPDConfidence confidence = WPDocument::isFileFormatSupported(input); +- if (WPD_CONFIDENCE_EXCELLENT != confidence && WPD_CONFIDENCE_SUPPORTED_ENCRYPTION != confidence) ++ libwpd::WPDConfidence confidence = libwpd::WPDocument::isFileFormatSupported(input); ++ if (libwpd::WPD_CONFIDENCE_EXCELLENT != confidence && libwpd::WPD_CONFIDENCE_SUPPORTED_ENCRYPTION != confidence) + { + fprintf(stderr, "ERROR: We have no confidence that you are giving us a valid WordPerfect document.\n"); + return false; + } +- if (WPD_CONFIDENCE_SUPPORTED_ENCRYPTION == confidence && !password) ++ if (libwpd::WPD_CONFIDENCE_SUPPORTED_ENCRYPTION == confidence && !password) + { + fprintf(stderr, "ERROR: The WordPerfect document is encrypted and you did not give us a password.\n"); + return false; + } +- if (confidence == WPD_CONFIDENCE_SUPPORTED_ENCRYPTION && password && (WPD_PASSWORD_MATCH_OK != WPDocument::verifyPassword(input, password))) ++ if (confidence == libwpd::WPD_CONFIDENCE_SUPPORTED_ENCRYPTION && password && (libwpd::WPD_PASSWORD_MATCH_OK != libwpd::WPDocument::verifyPassword(input, password))) + { + fprintf(stderr, "ERROR: The WordPerfect document is encrypted and we either\n"); + fprintf(stderr, "ERROR: don't know how to decrypt it or the given password is wrong.\n"); +@@ -64,41 +64,47 @@ private: + return true; + } + +- static bool handleEmbeddedWPGObject(const WPXBinaryData &data, OdfDocumentHandler *pHandler, const OdfStreamType streamType) ++ static bool handleEmbeddedWPGObject(const librevenge::RVNGBinaryData &data, OdfDocumentHandler *pHandler, const OdfStreamType streamType) + { +- OdgGenerator exporter(pHandler, streamType); ++ OdgGenerator exporter; ++ exporter.addDocumentHandler(pHandler, streamType); + + libwpg::WPGFileFormat fileFormat = libwpg::WPG_AUTODETECT; + +- if (!libwpg::WPGraphics::isSupported(const_cast(data.getDataStream()))) ++ if (!libwpg::WPGraphics::isSupported(const_cast(data.getDataStream()))) + fileFormat = libwpg::WPG_WPG1; + +- return libwpg::WPGraphics::parse(const_cast(data.getDataStream()), &exporter, fileFormat); ++ return libwpg::WPGraphics::parse(const_cast(data.getDataStream()), &exporter, fileFormat); + } + +- static bool handleEmbeddedWPGImage(const WPXBinaryData &input, WPXBinaryData &output) ++ static bool handleEmbeddedWPGImage(const librevenge::RVNGBinaryData &input, librevenge::RVNGBinaryData &output) + { +- WPXString svgOutput; + libwpg::WPGFileFormat fileFormat = libwpg::WPG_AUTODETECT; + +- if (!libwpg::WPGraphics::isSupported(const_cast(input.getDataStream()))) ++ if (!libwpg::WPGraphics::isSupported(const_cast(input.getDataStream()))) + fileFormat = libwpg::WPG_WPG1; + +- if (!libwpg::WPGraphics::generateSVG(const_cast(input.getDataStream()), svgOutput, fileFormat)) ++ librevenge::RVNGStringVector svgOutput; ++ librevenge::RVNGSVGDrawingGenerator generator(svgOutput, ""); ++ if (!libwpg::WPGraphics::parse(const_cast(input.getDataStream()), &generator, fileFormat)) + return false; ++ assert(1 == svgOutput.size()); + + output.clear(); +- output.append((unsigned char *)svgOutput.cstr(), strlen(svgOutput.cstr())); ++ const librevenge::RVNGString svgPrefix("\n\n"); ++ output.append((unsigned char *)svgPrefix.cstr(), svgPrefix.size()); ++ output.append((unsigned char *)svgOutput[0].cstr(), svgOutput[0].size()); + + return true; + } + +- bool _convertDocument(WPXInputStream *input, const char *password, OdfDocumentHandler *handler, const OdfStreamType streamType) ++ bool _convertDocument(librevenge::RVNGInputStream *input, const char *password, OdfDocumentHandler *handler, const OdfStreamType streamType) + { +- OdtGenerator collector(handler, streamType); ++ OdtGenerator collector; ++ collector.addDocumentHandler(handler, streamType); + collector.registerEmbeddedObjectHandler("image/x-wpg", &handleEmbeddedWPGObject); + collector.registerEmbeddedImageHandler("image/x-wpg", &handleEmbeddedWPGImage); +- if (WPD_OK == WPDocument::parse(input, &collector, password)) ++ if (libwpd::WPD_OK == libwpd::WPDocument::parse(input, &collector, password)) + return true; + return false; + } +diff --git a/filters/words/works/import/CMakeLists.txt b/filters/words/works/import/CMakeLists.txt +index 76317ae..2c51937 100644 +--- a/filters/words/works/import/CMakeLists.txt ++++ b/filters/words/works/import/CMakeLists.txt +@@ -1,6 +1,7 @@ + include_directories( + ../../../libodfhandler/ + ${LIBODFGEN_INCLUDE_DIRS} ++ ${LIBREVENGE_INCLUDE_DIRS} + ${LIBWPS_INCLUDE_DIRS} + ${KOMAIN_INCLUDES} + ) +@@ -15,7 +16,7 @@ set(wps2odt_PART_SRCS + + kde4_add_plugin(calligra_filter_wps2odt ${wps2odt_PART_SRCS}) + +-target_link_libraries(calligra_filter_wps2odt komain ${LIBODFGEN_LIBRARIES} ${LIBWPS_LIBRARIES}) ++target_link_libraries(calligra_filter_wps2odt komain ${LIBODFGEN_LIBRARIES} ${LIBREVENGE_LIBRARIES} ${LIBWPS_LIBRARIES}) + + install(TARGETS calligra_filter_wps2odt DESTINATION ${PLUGIN_INSTALL_DIR}) + install(FILES calligra_filter_wps2odt.desktop DESTINATION ${SERVICES_INSTALL_DIR}) +diff --git a/filters/words/works/import/WPSImport.cpp b/filters/words/works/import/WPSImport.cpp +index c2058e5..545daf3 100644 +--- a/filters/words/works/import/WPSImport.cpp ++++ b/filters/words/works/import/WPSImport.cpp +@@ -16,9 +16,9 @@ + + #include "WPSImport.h" + +-#include ++#include + #include +-#include ++#include + + #include "OutputFileHelper.hxx" + #include +@@ -40,10 +40,11 @@ public: + ~OdtOutputFileHelper() {}; + + private: +- bool _isSupportedFormat(WPXInputStream *input, const char * /* password */) ++ bool _isSupportedFormat(librevenge::RVNGInputStream *input, const char * /* password */) + { +- WPSConfidence confidence = WPSDocument::isFileFormatSupported(input); +- if (confidence == WPS_CONFIDENCE_NONE || confidence == WPS_CONFIDENCE_POOR) ++ libwps::WPSKind kind = libwps::WPS_TEXT; ++ libwps::WPSConfidence confidence = libwps::WPSDocument::isFileFormatSupported(input, kind); ++ if ((libwps::WPS_TEXT != kind) || (confidence != libwps::WPS_CONFIDENCE_EXCELLENT)) + { + fprintf(stderr, "ERROR: We have no confidence that you are giving us a valid Microsoft Works document.\n"); + return false; +@@ -52,10 +53,11 @@ private: + return true; + } + +- bool _convertDocument(WPXInputStream *input, const char * /* password */, OdfDocumentHandler *handler, const OdfStreamType streamType) ++ bool _convertDocument(librevenge::RVNGInputStream *input, const char * /* password */, OdfDocumentHandler *handler, const OdfStreamType streamType) + { +- OdtGenerator collector(handler, streamType); +- if (WPS_OK == WPSDocument::parse(input, &collector)) ++ OdtGenerator collector; ++ collector.addDocumentHandler(handler, streamType); ++ if (libwps::WPS_OK == libwps::WPSDocument::parse(input, &collector)) + return true; + return false; + } +-- +1.9.3 + + diff --git a/extra/calligra/PKGBUILD b/extra/calligra/PKGBUILD index 3d0afbcfd..120e6c251 100644 --- a/extra/calligra/PKGBUILD +++ b/extra/calligra/PKGBUILD @@ -23,7 +23,7 @@ pkgname=('calligra-braindump' 'calligra-stage' 'calligra-words') pkgver=2.8.3 -pkgrel=1 +pkgrel=3 arch=('i686' 'x86_64') url='http://www.calligra-suite.org/' license=('FDL1.2' 'GPL2' 'LGPL') @@ -34,12 +34,19 @@ makedepends=('cmake' 'automoc4' 'boost' 'kdepimlibs' 'eigen2' 'kdeedu-marble' 'libetonyek' 'libpqxx' 'libspnav') groups=('calligra') source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.xz" - 'arm.patch') + 'arm.patch' + 0001-switch-to-librevenge-based-import-libs.patch) md5sums=('78ad97127a3cc6d2c5c79ac6ae56f130' - 'dc5105bcc612560f46d27071aca69cba') + 'dc5105bcc612560f46d27071aca69cba' + '2589200d3f2199a8bff5755ff3245e33') prepare() { mkdir build + + # use librevenge based import filter libraries - patch taken from Fedora + pushd $pkgbase-$pkgver + patch -Np1 -i $srcdir/0001-switch-to-librevenge-based-import-libs.patch + popd } build() {