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