[Libreoffice-commits] core.git: 4 commits - configure.ac sw/inc sw/source writerfilter/Library_writerfilter.mk writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Sun Feb 22 08:41:03 PST 2015


 configure.ac                                |   12 
 sw/inc/redline.hxx                          |    1 
 sw/source/core/doc/docredln.cxx             |   83 +++---
 writerfilter/Library_writerfilter.mk        |    2 
 writerfilter/source/filter/ImportFilter.cxx |  354 --------------------------
 writerfilter/source/filter/WriterFilter.cxx |  381 ++++++++++++++++++++++++++++
 writerfilter/source/filter/WriterFilter.hxx |   98 -------
 7 files changed, 435 insertions(+), 496 deletions(-)

New commits:
commit 7b7d11209bf15604532467126d8704eaf5f51799
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Feb 22 12:07:43 2015 +0100

    Extract SwRangeRedline::dumpAsXml() from SwRedlineTbl
    
    Change-Id: Ia0eea8a0c4ef7a8297da185d8187017e76bea422

diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx
index b789ce6..533c027 100644
--- a/sw/inc/redline.hxx
+++ b/sw/inc/redline.hxx
@@ -293,6 +293,7 @@ public:
 
     bool operator==( const SwRangeRedline& ) const;
     bool operator<( const SwRangeRedline& ) const;
+    void dumpAsXml(struct _xmlTextWriter* pWriter) const;
 };
 
 /// Base object for 'Redlines' that are not of 'Ranged' type (like table row insert\delete)
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
index 20dcda5..82ce470 100644
--- a/sw/source/core/doc/docredln.cxx
+++ b/sw/source/core/doc/docredln.cxx
@@ -572,47 +572,9 @@ void SwRedlineTbl::dumpAsXml(xmlTextWriterPtr pWriter) const
     xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this);
 
     for (sal_uInt16 nCurRedlinePos = 0; nCurRedlinePos < size(); ++nCurRedlinePos)
-    {
-        const SwRangeRedline* pRedline = operator[](nCurRedlinePos);
-        xmlTextWriterStartElement(pWriter, BAD_CAST("swRangeRedline"));
-
-        xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", pRedline);
-        xmlTextWriterWriteAttribute(pWriter, BAD_CAST("id"), BAD_CAST(OString::number(pRedline->GetSeqNo()).getStr()));
-        xmlTextWriterWriteAttribute(pWriter, BAD_CAST("author"), BAD_CAST(SW_MOD()->GetRedlineAuthor(pRedline->GetAuthor()).toUtf8().getStr()));
-        xmlTextWriterWriteAttribute(pWriter, BAD_CAST("date"), BAD_CAST(DateTimeToOString(pRedline->GetTimeStamp()).getStr()));
+        operator[](nCurRedlinePos)->dumpAsXml(pWriter);
 
-        OString sRedlineType;
-        switch (pRedline->GetType())
-        {
-            case nsRedlineType_t::REDLINE_INSERT:
-                sRedlineType = "REDLINE_INSERT";
-                break;
-            case nsRedlineType_t::REDLINE_DELETE:
-                sRedlineType = "REDLINE_DELETE";
-                break;
-            case nsRedlineType_t::REDLINE_FORMAT:
-                sRedlineType = "REDLINE_FORMAT";
-                break;
-            default:
-                sRedlineType = "UNKNOWN";
-                break;
-        }
-        xmlTextWriterWriteAttribute(pWriter, BAD_CAST("type"), BAD_CAST(sRedlineType.getStr()));
-
-        xmlTextWriterStartElement(pWriter, BAD_CAST("point"));
-        pRedline->GetPoint()->dumpAsXml(pWriter);
-        xmlTextWriterEndElement(pWriter);
-        xmlTextWriterStartElement(pWriter, BAD_CAST("mark"));
-        pRedline->GetMark()->dumpAsXml(pWriter);
-        xmlTextWriterEndElement(pWriter);
-
-        const SwRedlineExtraData* pExtraRedlineData = pRedline->GetExtraData();
-        xmlTextWriterStartElement(pWriter, BAD_CAST("swRedlineExtraData"));
-        xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("symbol"), "%s", BAD_CAST(typeid(pExtraRedlineData).name()));
-        xmlTextWriterEndElement(pWriter); // swRadlineExtraData
-        xmlTextWriterEndElement(pWriter); // swRangeRedline
-    }
-    xmlTextWriterEndElement(pWriter); // swRedlineTbl
+    xmlTextWriterEndElement(pWriter);
 }
 
 SwRedlineExtraData::~SwRedlineExtraData()
@@ -1651,6 +1613,47 @@ OUString SwRangeRedline::GetDescr(sal_uInt16 nPos)
     return aResult;
 }
 
+void SwRangeRedline::dumpAsXml(xmlTextWriterPtr pWriter) const
+{
+    xmlTextWriterStartElement(pWriter, BAD_CAST("swRangeRedline"));
+
+    xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this);
+    xmlTextWriterWriteAttribute(pWriter, BAD_CAST("id"), BAD_CAST(OString::number(GetSeqNo()).getStr()));
+    xmlTextWriterWriteAttribute(pWriter, BAD_CAST("author"), BAD_CAST(SW_MOD()->GetRedlineAuthor(GetAuthor()).toUtf8().getStr()));
+    xmlTextWriterWriteAttribute(pWriter, BAD_CAST("date"), BAD_CAST(DateTimeToOString(GetTimeStamp()).getStr()));
+
+    OString sRedlineType;
+    switch (GetType())
+    {
+        case nsRedlineType_t::REDLINE_INSERT:
+            sRedlineType = "REDLINE_INSERT";
+            break;
+        case nsRedlineType_t::REDLINE_DELETE:
+            sRedlineType = "REDLINE_DELETE";
+            break;
+        case nsRedlineType_t::REDLINE_FORMAT:
+            sRedlineType = "REDLINE_FORMAT";
+            break;
+        default:
+            sRedlineType = "UNKNOWN";
+            break;
+    }
+    xmlTextWriterWriteAttribute(pWriter, BAD_CAST("type"), BAD_CAST(sRedlineType.getStr()));
+
+    xmlTextWriterStartElement(pWriter, BAD_CAST("point"));
+    GetPoint()->dumpAsXml(pWriter);
+    xmlTextWriterEndElement(pWriter);
+    xmlTextWriterStartElement(pWriter, BAD_CAST("mark"));
+    GetMark()->dumpAsXml(pWriter);
+    xmlTextWriterEndElement(pWriter);
+
+    const SwRedlineExtraData* pExtraRedlineData = GetExtraData();
+    xmlTextWriterStartElement(pWriter, BAD_CAST("swRedlineExtraData"));
+    xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("symbol"), "%s", BAD_CAST(typeid(pExtraRedlineData).name()));
+    xmlTextWriterEndElement(pWriter); // swRadlineExtraData
+    xmlTextWriterEndElement(pWriter);
+}
+
 bool SwExtraRedlineTbl::Insert( SwExtraRedline* p )
 {
     m_aExtraRedlines.push_back( p );
commit 4e91003337f8f35810efa00322d041fb4ff94df7
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Feb 22 11:48:24 2015 +0100

    configure: add default value for --with-android-ndk
    
    Change-Id: I2ab9d6fe4ac81f4a102a3f4242aa6d41e81fab88

diff --git a/configure.ac b/configure.ac
index a9edea1..2bd85d5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -294,6 +294,9 @@ AC_ARG_WITH(android-sdk,
 ,)
 
 ANDROID_NDK_HOME=
+if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk"; then
+    with_android_ndk="$SRC_ROOT/external/android-ndk"
+fi
 if test -n "$with_android_ndk"; then
     ANDROID_NDK_HOME=$with_android_ndk
 
@@ -760,7 +763,7 @@ linux-android*)
     _os=Android
 
     if test -z "$with_android_ndk"; then
-        AC_MSG_ERROR([the --with-android-ndk option is mandatory])
+        AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
     fi
 
     if test -z "$with_android_ndk_toolchain_version"; then
commit 315e72d4300e688e921b1122109dd9a545016feb
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Feb 22 11:48:12 2015 +0100

    configure: add default value for --with-android-sdk
    
    Change-Id: Ib19b57e877c5829dd816d4b4e84bb8f632354789

diff --git a/configure.ac b/configure.ac
index a7ad5e1..a9edea1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -503,9 +503,12 @@ AC_SUBST(ANDROID_NDK_GDBSERVER)
 AC_SUBST(ANDROID_APP_ABI)
 
 dnl ===================================================================
-dnl Also --with-android-sdk is mandatory
+dnl --with-android-sdk
 dnl ===================================================================
 ANDROID_SDK_HOME=
+if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux"; then
+    with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
+fi
 if test -n "$with_android_sdk"; then
     ANDROID_SDK_HOME=$with_android_sdk
     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
@@ -780,7 +783,7 @@ esac
 
 if echo "$host_os" | grep -q linux-android ; then
     if test -z "$with_android_sdk"; then
-        AC_MSG_ERROR([the --with-android-sdk option is mandatory])
+        AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
     fi
 
     if test ! -d "$ANDROID_SDK_HOME/platforms"; then
commit 9ea95a1dbd7e10343a3549c2cbc1b909a873f5f7
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Feb 22 11:31:16 2015 +0100

    writerfilter: clean up DOCX XFilter implementation
    
    Change-Id: I4524d0a93231f291e074d1eeb10d00efc64e0cc5

diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
index f3af37a..6149401 100644
--- a/writerfilter/Library_writerfilter.mk
+++ b/writerfilter/Library_writerfilter.mk
@@ -112,8 +112,8 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
     writerfilter/source/dmapper/ThemeTable \
     writerfilter/source/dmapper/WrapPolygonHandler \
     writerfilter/source/dmapper/util \
-    writerfilter/source/filter/ImportFilter \
     writerfilter/source/filter/RtfFilter \
+    writerfilter/source/filter/WriterFilter \
     writerfilter/source/filter/WriterFilterDetection \
     writerfilter/source/ooxml/Handler \
     writerfilter/source/ooxml/OOXMLBinaryObjectReference \
diff --git a/writerfilter/source/filter/ImportFilter.cxx b/writerfilter/source/filter/ImportFilter.cxx
deleted file mode 100644
index 5d43ff5..0000000
--- a/writerfilter/source/filter/ImportFilter.cxx
+++ /dev/null
@@ -1,354 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice 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/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <osl/diagnose.h>
-#include <com/sun/star/uno/XComponentContext.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
-#include <com/sun/star/io/WrongFormatException.hpp>
-#include <com/sun/star/xml/sax/SAXParseException.hpp>
-#include <unotools/mediadescriptor.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <cppuhelper/supportsservice.hxx>
-#include <oox/core/filterdetect.hxx>
-#include <dmapper/DomainMapperFactory.hxx>
-#include <WriterFilter.hxx>
-#include <ooxml/OOXMLDocument.hxx>
-#ifdef DEBUG_WRITERFILTER
-#include <iostream>
-#include <osl/process.h>
-#endif
-
-#include <oox/ole/olestorage.hxx>
-#include <oox/ole/vbaproject.hxx>
-#include <oox/helper/graphichelper.hxx>
-
-using namespace ::com::sun::star;
-
-
-static OUString lcl_GetExceptionMessageRec(xml::sax::SAXException const& e);
-
-static OUString lcl_GetExceptionMessage(xml::sax::SAXException const& e)
-{
-    OUString const thisMessage("SAXParseException: "
-        "\"" + e.Message + "\"");
-    OUString const restMessage(lcl_GetExceptionMessageRec(e));
-    return restMessage + "\n" + thisMessage;
-}
-static OUString lcl_GetExceptionMessage(xml::sax::SAXParseException const& e)
-{
-    OUString const thisMessage("SAXParseException: "
-        "\"" + e.Message + "\" "
-        "stream \"" + e.SystemId + "\""
-        ", Line " + OUString::number(e.LineNumber)
-        + ", Column " + OUString::number(e.ColumnNumber));
-    OUString const restMessage(lcl_GetExceptionMessageRec(e));
-    return restMessage + "\n" + thisMessage;
-}
-static OUString lcl_GetExceptionMessageRec(xml::sax::SAXException const& e)
-{
-    xml::sax::SAXParseException saxpe;
-    if (e.WrappedException >>= saxpe)
-    {
-        return lcl_GetExceptionMessage(saxpe);
-    }
-    xml::sax::SAXException saxe;
-    if (e.WrappedException >>= saxe)
-    {
-        return lcl_GetExceptionMessage(saxe);
-    }
-    uno::Exception ue;
-    if (e.WrappedException >>= ue)
-    {
-        return ue.Message;
-    }
-    return OUString();
-}
-
-sal_Bool WriterFilter::filter( const uno::Sequence< beans::PropertyValue >& aDescriptor )
-   throw (uno::RuntimeException, std::exception)
-{
-    if( m_xSrcDoc.is() )
-    {
-        uno::Reference< lang::XMultiServiceFactory > xMSF(m_xContext->getServiceManager(), uno::UNO_QUERY_THROW);
-        uno::Reference< uno::XInterface > xIfc;
-        try {
-            xIfc.set(
-                xMSF->createInstance("com.sun.star.comp.Writer.DocxExport"),
-                uno::UNO_QUERY_THROW);
-        } catch (css::uno::RuntimeException &) {
-            throw;
-        } catch (css::uno::Exception & e) {
-            css::uno::Any a(cppu::getCaughtException());
-            throw css::lang::WrappedTargetRuntimeException(
-                "wrapped " + a.getValueTypeName() + ": " + e.Message,
-                css::uno::Reference<css::uno::XInterface>(), a);
-        }
-        uno::Reference< document::XExporter > xExprtr(xIfc, uno::UNO_QUERY_THROW);
-        uno::Reference< document::XFilter > xFltr(xIfc, uno::UNO_QUERY_THROW);
-        if (!xExprtr.is() || !xFltr.is())
-            return sal_False;
-        xExprtr->setSourceDocument(m_xSrcDoc);
-        return xFltr->filter(aDescriptor);
-    }
-    else if (m_xDstDoc.is())
-    {
-        utl::MediaDescriptor aMediaDesc( aDescriptor );
-        bool bRepairStorage = aMediaDesc.getUnpackedValueOrDefault( "RepairPackage", false );
-
-        uno::Reference< io::XInputStream > xInputStream;
-        try
-        {
-            // use the oox.core.FilterDetect implementation to extract the decrypted ZIP package
-            ::oox::core::FilterDetect aDetector( m_xContext );
-            xInputStream = aDetector.extractUnencryptedPackage( aMediaDesc );
-        }
-        catch( uno::Exception& )
-        {
-        }
-
-        if ( !xInputStream.is() )
-            return sal_False;
-
-        writerfilter::dmapper::SourceDocumentType eType = writerfilter::dmapper::SourceDocumentType::OOXML;
-        writerfilter::Stream::Pointer_t pStream(
-            writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, eType, uno::Reference<text::XTextRange>(), aMediaDesc));
-        //create the tokenizer and domain mapper
-        writerfilter::ooxml::OOXMLStream::Pointer_t pDocStream = writerfilter::ooxml::OOXMLDocumentFactory::createStream(m_xContext, xInputStream, bRepairStorage);
-        uno::Reference<task::XStatusIndicator> xStatusIndicator = aMediaDesc.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_STATUSINDICATOR(), uno::Reference<task::XStatusIndicator>());
-        writerfilter::ooxml::OOXMLDocument::Pointer_t pDocument(writerfilter::ooxml::OOXMLDocumentFactory::createDocument(pDocStream, xStatusIndicator));
-
-        uno::Reference<frame::XModel> xModel(m_xDstDoc, uno::UNO_QUERY_THROW);
-        pDocument->setModel(xModel);
-
-        uno::Reference<drawing::XDrawPageSupplier> xDrawings
-            (m_xDstDoc, uno::UNO_QUERY_THROW);
-        uno::Reference<drawing::XDrawPage> xDrawPage
-            (xDrawings->getDrawPage(), uno::UNO_SET_THROW);
-        pDocument->setDrawPage(xDrawPage);
-
-        try
-        {
-            pDocument->resolve(*pStream);
-        }
-        catch (xml::sax::SAXParseException const& e)
-        {
-            // note: SfxObjectShell checks for WrongFormatException
-            io::WrongFormatException wfe(lcl_GetExceptionMessage(e));
-            throw lang::WrappedTargetRuntimeException("",
-                    static_cast<OWeakObject*>(this), uno::makeAny(wfe));
-        }
-        catch (xml::sax::SAXException const& e)
-        {
-            // note: SfxObjectShell checks for WrongFormatException
-            io::WrongFormatException wfe(lcl_GetExceptionMessage(e));
-            throw lang::WrappedTargetRuntimeException("",
-                    static_cast<OWeakObject*>(this), uno::makeAny(wfe));
-        }
-        catch (uno::RuntimeException const&)
-        {
-            throw;
-        }
-        catch (uno::Exception const& e)
-        {
-            SAL_WARN("writerfilter", "WriterFilter::filter(): "
-                    "failed with exception " << e.Message);
-            throw lang::WrappedTargetRuntimeException("",
-                    static_cast<OWeakObject*>(this), uno::makeAny(e));
-        }
-
-        // Adding some properties to the document's grab bag for interoperability purposes:
-        comphelper::SequenceAsHashMap aGrabBagProperties;
-
-        // Adding the saved Theme DOM
-        aGrabBagProperties["OOXTheme"] = uno::makeAny( pDocument->getThemeDom() );
-
-        // Adding the saved custom xml DOM
-        aGrabBagProperties["OOXCustomXml"] = uno::makeAny( pDocument->getCustomXmlDomList() );
-        aGrabBagProperties["OOXCustomXmlProps"] = uno::makeAny( pDocument->getCustomXmlDomPropsList() );
-
-        // Adding the saved ActiveX DOM
-        aGrabBagProperties["OOXActiveX"] = uno::makeAny( pDocument->getActiveXDomList() );
-        aGrabBagProperties["OOXActiveXBin"] = uno::makeAny( pDocument->getActiveXBinList() );
-
-        // Adding the saved Glossary Documnet DOM to the document's grab bag
-        aGrabBagProperties["OOXGlossary"] = uno::makeAny( pDocument->getGlossaryDocDom() );
-        aGrabBagProperties["OOXGlossaryDom"] = uno::makeAny( pDocument->getGlossaryDomList() );
-
-        // Adding the saved embedding document to document's grab bag
-        aGrabBagProperties["OOXEmbeddings"] = uno::makeAny( pDocument->getEmbeddingsList() );
-
-        putPropertiesToDocumentGrabBag( aGrabBagProperties );
-
-        writerfilter::ooxml::OOXMLStream::Pointer_t  pVBAProjectStream(writerfilter::ooxml::OOXMLDocumentFactory::createStream( pDocStream, writerfilter::ooxml::OOXMLStream::VBAPROJECT ));
-        oox::StorageRef xVbaPrjStrg( new ::oox::ole::OleStorage( m_xContext, pVBAProjectStream->getDocumentStream(), false ) );
-        if( xVbaPrjStrg.get() && xVbaPrjStrg->isStorage() )
-        {
-            ::oox::ole::VbaProject aVbaProject( m_xContext, xModel, "Writer" );
-            uno::Reference< frame::XFrame > xFrame = aMediaDesc.getUnpackedValueOrDefault(  utl::MediaDescriptor::PROP_FRAME(), uno::Reference< frame::XFrame > () );
-
-            // if no XFrame try fallback to what we can glean from the Model
-            if ( !xFrame.is() )
-            {
-                uno::Reference< frame::XController > xController =  xModel->getCurrentController();
-                xFrame =  xController.is() ? xController->getFrame() : nullptr;
-            }
-
-            oox::GraphicHelper gHelper( m_xContext, xFrame, xVbaPrjStrg );
-            aVbaProject.importVbaProject( *xVbaPrjStrg, gHelper );
-        }
-
-        // Document signature.
-        writerfilter::ooxml::OOXMLStream::Pointer_t pSignatureStream;
-        pSignatureStream = writerfilter::ooxml::OOXMLDocumentFactory::createStream(m_xContext, xInputStream, bRepairStorage, writerfilter::ooxml::OOXMLStream::SIGNATURE);
-        if (pSignatureStream->getDocumentStream().is())
-        {
-            // TODO found, handle it.
-        }
-
-        pStream.reset();
-
-        return sal_True;
-    }
-    return sal_False;
-}
-
-
-void WriterFilter::cancel(  ) throw (uno::RuntimeException, std::exception)
-{
-}
-
-
-
-void WriterFilter::setTargetDocument( const uno::Reference< lang::XComponent >& xDoc )
-   throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
-{
-   m_xDstDoc = xDoc;
-
-   // Set some compatibility options that are valid for all the formats
-   uno::Reference< lang::XMultiServiceFactory > xFactory( xDoc, uno::UNO_QUERY );
-   uno::Reference< beans::XPropertySet > xSettings( xFactory->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY );
-
-   xSettings->setPropertyValue( "AddFrameOffsets", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "UseOldNumbering", uno::makeAny( sal_False ) );
-   xSettings->setPropertyValue( "IgnoreFirstLineIndentInNumbering", uno::makeAny( sal_False ) );
-   xSettings->setPropertyValue( "DoNotResetParaAttrsForNumFont", uno::makeAny( sal_False ) );
-   xSettings->setPropertyValue( "UseFormerLineSpacing", uno::makeAny( sal_False ) );
-   xSettings->setPropertyValue( "AddParaSpacingToTableCells", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "UseFormerObjectPositioning", uno::makeAny( sal_False ) );
-   xSettings->setPropertyValue( "ConsiderTextWrapOnObjPos", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "UseFormerTextWrapping", uno::makeAny( sal_False ) );
-   xSettings->setPropertyValue( "TableRowKeep", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "IgnoreTabsAndBlanksForLineCalculation", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "InvertBorderSpacing", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "CollapseEmptyCellPara", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "TabOverflow", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "UnbreakableNumberings", uno::makeAny( sal_True ) );
-
-   xSettings->setPropertyValue("FloattableNomargins", uno::makeAny( sal_True ));
-   xSettings->setPropertyValue( "ClippedPictures", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "BackgroundParaOverDrawings", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue( "TabOverMargin", uno::makeAny( sal_True ) );
-   xSettings->setPropertyValue("PropLineSpacingShrinksFirstLine", uno::makeAny(sal_True));
-}
-
-void WriterFilter::setSourceDocument( const uno::Reference< lang::XComponent >& xDoc )
-   throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
-{
-   m_xSrcDoc = xDoc;
-}
-
-
-
-void WriterFilter::initialize( const uno::Sequence< uno::Any >& /*aArguments*/ ) throw (uno::Exception, uno::RuntimeException, std::exception)
-{
-}
-
-
-OUString WriterFilter_getImplementationName () throw (uno::RuntimeException)
-{
-   return OUString ( "com.sun.star.comp.Writer.WriterFilter" );
-}
-
-uno::Sequence< OUString > WriterFilter_getSupportedServiceNames(  ) throw (uno::RuntimeException)
-{
-   uno::Sequence < OUString > aRet(2);
-   OUString* pArray = aRet.getArray();
-   pArray[0] = "com.sun.star.document.ImportFilter";
-   pArray[1] = "com.sun.star.document.ExportFilter";
-   return aRet;
-}
-
-OUString WriterFilter::getImplementationName(  ) throw (uno::RuntimeException, std::exception)
-{
-   return WriterFilter_getImplementationName();
-}
-
-
-sal_Bool WriterFilter::supportsService( const OUString& rServiceName ) throw (uno::RuntimeException, std::exception)
-{
-    return cppu::supportsService( this, rServiceName );
-}
-
-
-uno::Sequence< OUString > WriterFilter::getSupportedServiceNames(  ) throw (uno::RuntimeException, std::exception)
-{
-    return WriterFilter_getSupportedServiceNames();
-}
-
-void WriterFilter::putPropertiesToDocumentGrabBag( const comphelper::SequenceAsHashMap& rProperties )
-{
-    try
-    {
-        uno::Reference<beans::XPropertySet> xDocProps(m_xDstDoc, uno::UNO_QUERY);
-        if( xDocProps.is() )
-        {
-            uno::Reference<beans::XPropertySetInfo> xPropsInfo = xDocProps->getPropertySetInfo();
-
-            const OUString aGrabBagPropName = "InteropGrabBag";
-            if( xPropsInfo.is() && xPropsInfo->hasPropertyByName( aGrabBagPropName ) )
-            {
-                // get existing grab bag
-                comphelper::SequenceAsHashMap aGrabBag(xDocProps->getPropertyValue(aGrabBagPropName));
-
-                // put the new items
-                aGrabBag.update(rProperties);
-
-                // put it back to the document
-                xDocProps->setPropertyValue(aGrabBagPropName, uno::Any(aGrabBag.getAsConstPropertyValueList()));
-            }
-        }
-    }
-    catch(const uno::Exception&)
-    {
-        SAL_WARN("writerfilter","Failed to save documents grab bag");
-    }
-}
-
-extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
-com_sun_star_comp_Writer_WriterFilter_get_implementation(::com::sun::star::uno::XComponentContext* component,
-                ::com::sun::star::uno::Sequence<css::uno::Any> const &)
-{
-    return cppu::acquire(new WriterFilter(component));
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/filter/WriterFilter.cxx b/writerfilter/source/filter/WriterFilter.cxx
new file mode 100644
index 0000000..7a5fc1d
--- /dev/null
+++ b/writerfilter/source/filter/WriterFilter.cxx
@@ -0,0 +1,381 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice 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/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifdef DEBUG_WRITERFILTER
+#include <iostream>
+#include <osl/process.h>
+#endif
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/document/XExporter.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XImporter.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <com/sun/star/io/WrongFormatException.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/xml/sax/SAXParseException.hpp>
+#include <cppuhelper/exc_hlp.hxx>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <dmapper/DomainMapperFactory.hxx>
+#include <oox/core/filterdetect.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/ole/olestorage.hxx>
+#include <oox/ole/vbaproject.hxx>
+#include <ooxml/OOXMLDocument.hxx>
+#include <osl/diagnose.h>
+#include <unotools/mediadescriptor.hxx>
+
+using namespace ::com::sun::star;
+
+static OUString lcl_GetExceptionMessageRec(xml::sax::SAXException const& e);
+
+static OUString lcl_GetExceptionMessage(xml::sax::SAXException const& e)
+{
+    OUString const thisMessage("SAXParseException: \"" + e.Message + "\"");
+    OUString const restMessage(lcl_GetExceptionMessageRec(e));
+    return restMessage + "\n" + thisMessage;
+}
+static OUString lcl_GetExceptionMessage(xml::sax::SAXParseException const& e)
+{
+    OUString const thisMessage("SAXParseException: '" + e.Message + "', Stream '" + e.SystemId + "', Line " + OUString::number(e.LineNumber)
+                               + ", Column " + OUString::number(e.ColumnNumber));
+    OUString const restMessage(lcl_GetExceptionMessageRec(e));
+    return restMessage + "\n" + thisMessage;
+}
+
+static OUString lcl_GetExceptionMessageRec(xml::sax::SAXException const& e)
+{
+    xml::sax::SAXParseException saxpe;
+    if (e.WrappedException >>= saxpe)
+    {
+        return lcl_GetExceptionMessage(saxpe);
+    }
+    xml::sax::SAXException saxe;
+    if (e.WrappedException >>= saxe)
+    {
+        return lcl_GetExceptionMessage(saxe);
+    }
+    uno::Exception ue;
+    if (e.WrappedException >>= ue)
+    {
+        return ue.Message;
+    }
+    return OUString();
+}
+
+/// Common DOCX filter, calls DocxExportFilter via UNO or does the DOCX import.
+class WriterFilter : public cppu::WeakImplHelper
+    <
+    document::XFilter,
+    document::XImporter,
+    document::XExporter,
+    lang::XInitialization,
+    lang::XServiceInfo
+    >
+{
+
+protected:
+    uno::Reference<uno::XComponentContext> m_xContext;
+    uno::Reference<lang::XComponent> m_xSrcDoc, m_xDstDoc;
+
+public:
+    WriterFilter(const uno::Reference<uno::XComponentContext>& rxContext)
+        : m_xContext(rxContext)
+    {}
+    virtual ~WriterFilter() {}
+
+    // XFilter
+    virtual sal_Bool SAL_CALL filter(const uno::Sequence<beans::PropertyValue>& rDescriptor) throw (uno::RuntimeException, std::exception) SAL_OVERRIDE;
+    virtual void SAL_CALL cancel() throw (uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+    // XImporter
+    virtual void SAL_CALL setTargetDocument(const uno::Reference<lang::XComponent>& xDoc) throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+    // XExporter
+    virtual void SAL_CALL setSourceDocument(const uno::Reference<lang::XComponent>& xDoc) throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+    // XInitialization
+    virtual void SAL_CALL initialize(const uno::Sequence<uno::Any>& rArguments) throw (uno::Exception, uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+    // XServiceInfo
+    virtual OUString SAL_CALL getImplementationName() throw (uno::RuntimeException, std::exception) SAL_OVERRIDE;
+    virtual sal_Bool SAL_CALL supportsService(const OUString& rServiceName) throw (uno::RuntimeException, std::exception) SAL_OVERRIDE;
+    virtual uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() throw (uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+private:
+    void putPropertiesToDocumentGrabBag(const comphelper::SequenceAsHashMap& rProperties);
+
+};
+
+sal_Bool WriterFilter::filter(const uno::Sequence< beans::PropertyValue >& aDescriptor) throw (uno::RuntimeException, std::exception)
+{
+    if (m_xSrcDoc.is())
+    {
+        uno::Reference< lang::XMultiServiceFactory > xMSF(m_xContext->getServiceManager(), uno::UNO_QUERY_THROW);
+        uno::Reference< uno::XInterface > xIfc;
+        try
+        {
+            xIfc.set(xMSF->createInstance("com.sun.star.comp.Writer.DocxExport"), uno::UNO_QUERY_THROW);
+        }
+        catch (uno::RuntimeException&)
+        {
+            throw;
+        }
+        catch (uno::Exception& e)
+        {
+            uno::Any a(cppu::getCaughtException());
+            throw lang::WrappedTargetRuntimeException("wrapped " + a.getValueTypeName() + ": " + e.Message, uno::Reference<uno::XInterface>(), a);
+        }
+        uno::Reference< document::XExporter > xExprtr(xIfc, uno::UNO_QUERY_THROW);
+        uno::Reference< document::XFilter > xFltr(xIfc, uno::UNO_QUERY_THROW);
+        if (!xExprtr.is() || !xFltr.is())
+            return sal_False;
+        xExprtr->setSourceDocument(m_xSrcDoc);
+        return xFltr->filter(aDescriptor);
+    }
+    else if (m_xDstDoc.is())
+    {
+        utl::MediaDescriptor aMediaDesc(aDescriptor);
+        bool bRepairStorage = aMediaDesc.getUnpackedValueOrDefault("RepairPackage", false);
+
+        uno::Reference< io::XInputStream > xInputStream;
+        try
+        {
+            // use the oox.core.FilterDetect implementation to extract the decrypted ZIP package
+            ::oox::core::FilterDetect aDetector(m_xContext);
+            xInputStream = aDetector.extractUnencryptedPackage(aMediaDesc);
+        }
+        catch (uno::Exception&)
+        {
+        }
+
+        if (!xInputStream.is())
+            return sal_False;
+
+        writerfilter::dmapper::SourceDocumentType eType = writerfilter::dmapper::SourceDocumentType::OOXML;
+        writerfilter::Stream::Pointer_t pStream(
+            writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, eType, uno::Reference<text::XTextRange>(), aMediaDesc));
+        //create the tokenizer and domain mapper
+        writerfilter::ooxml::OOXMLStream::Pointer_t pDocStream = writerfilter::ooxml::OOXMLDocumentFactory::createStream(m_xContext, xInputStream, bRepairStorage);
+        uno::Reference<task::XStatusIndicator> xStatusIndicator = aMediaDesc.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_STATUSINDICATOR(), uno::Reference<task::XStatusIndicator>());
+        writerfilter::ooxml::OOXMLDocument::Pointer_t pDocument(writerfilter::ooxml::OOXMLDocumentFactory::createDocument(pDocStream, xStatusIndicator));
+
+        uno::Reference<frame::XModel> xModel(m_xDstDoc, uno::UNO_QUERY_THROW);
+        pDocument->setModel(xModel);
+
+        uno::Reference<drawing::XDrawPageSupplier> xDrawings
+        (m_xDstDoc, uno::UNO_QUERY_THROW);
+        uno::Reference<drawing::XDrawPage> xDrawPage
+        (xDrawings->getDrawPage(), uno::UNO_SET_THROW);
+        pDocument->setDrawPage(xDrawPage);
+
+        try
+        {
+            pDocument->resolve(*pStream);
+        }
+        catch (xml::sax::SAXParseException const& e)
+        {
+            // note: SfxObjectShell checks for WrongFormatException
+            io::WrongFormatException wfe(lcl_GetExceptionMessage(e));
+            throw lang::WrappedTargetRuntimeException("",
+                    static_cast<OWeakObject*>(this), uno::makeAny(wfe));
+        }
+        catch (xml::sax::SAXException const& e)
+        {
+            // note: SfxObjectShell checks for WrongFormatException
+            io::WrongFormatException wfe(lcl_GetExceptionMessage(e));
+            throw lang::WrappedTargetRuntimeException("",
+                    static_cast<OWeakObject*>(this), uno::makeAny(wfe));
+        }
+        catch (uno::RuntimeException const&)
+        {
+            throw;
+        }
+        catch (uno::Exception const& e)
+        {
+            SAL_WARN("writerfilter", "WriterFilter::filter(): "
+                     "failed with exception " << e.Message);
+            throw lang::WrappedTargetRuntimeException("",
+                    static_cast<OWeakObject*>(this), uno::makeAny(e));
+        }
+
+        // Adding some properties to the document's grab bag for interoperability purposes:
+        comphelper::SequenceAsHashMap aGrabBagProperties;
+
+        // Adding the saved Theme DOM
+        aGrabBagProperties["OOXTheme"] = uno::makeAny(pDocument->getThemeDom());
+
+        // Adding the saved custom xml DOM
+        aGrabBagProperties["OOXCustomXml"] = uno::makeAny(pDocument->getCustomXmlDomList());
+        aGrabBagProperties["OOXCustomXmlProps"] = uno::makeAny(pDocument->getCustomXmlDomPropsList());
+
+        // Adding the saved ActiveX DOM
+        aGrabBagProperties["OOXActiveX"] = uno::makeAny(pDocument->getActiveXDomList());
+        aGrabBagProperties["OOXActiveXBin"] = uno::makeAny(pDocument->getActiveXBinList());
+
+        // Adding the saved Glossary Documnet DOM to the document's grab bag
+        aGrabBagProperties["OOXGlossary"] = uno::makeAny(pDocument->getGlossaryDocDom());
+        aGrabBagProperties["OOXGlossaryDom"] = uno::makeAny(pDocument->getGlossaryDomList());
+
+        // Adding the saved embedding document to document's grab bag
+        aGrabBagProperties["OOXEmbeddings"] = uno::makeAny(pDocument->getEmbeddingsList());
+
+        putPropertiesToDocumentGrabBag(aGrabBagProperties);
+
+        writerfilter::ooxml::OOXMLStream::Pointer_t  pVBAProjectStream(writerfilter::ooxml::OOXMLDocumentFactory::createStream(pDocStream, writerfilter::ooxml::OOXMLStream::VBAPROJECT));
+        oox::StorageRef xVbaPrjStrg(new ::oox::ole::OleStorage(m_xContext, pVBAProjectStream->getDocumentStream(), false));
+        if (xVbaPrjStrg.get() && xVbaPrjStrg->isStorage())
+        {
+            ::oox::ole::VbaProject aVbaProject(m_xContext, xModel, "Writer");
+            uno::Reference< frame::XFrame > xFrame = aMediaDesc.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_FRAME(), uno::Reference< frame::XFrame > ());
+
+            // if no XFrame try fallback to what we can glean from the Model
+            if (!xFrame.is())
+            {
+                uno::Reference< frame::XController > xController =  xModel->getCurrentController();
+                xFrame =  xController.is() ? xController->getFrame() : nullptr;
+            }
+
+            oox::GraphicHelper gHelper(m_xContext, xFrame, xVbaPrjStrg);
+            aVbaProject.importVbaProject(*xVbaPrjStrg, gHelper);
+        }
+
+        // Document signature.
+        writerfilter::ooxml::OOXMLStream::Pointer_t pSignatureStream;
+        pSignatureStream = writerfilter::ooxml::OOXMLDocumentFactory::createStream(m_xContext, xInputStream, bRepairStorage, writerfilter::ooxml::OOXMLStream::SIGNATURE);
+        if (pSignatureStream->getDocumentStream().is())
+        {
+            // TODO found, handle it.
+        }
+
+        pStream.reset();
+
+        return sal_True;
+    }
+    return sal_False;
+}
+
+
+void WriterFilter::cancel() throw (uno::RuntimeException, std::exception)
+{
+}
+
+void WriterFilter::setTargetDocument(const uno::Reference< lang::XComponent >& xDoc) throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
+{
+    m_xDstDoc = xDoc;
+
+    // Set some compatibility options that are valid for all the formats
+    uno::Reference< lang::XMultiServiceFactory > xFactory(xDoc, uno::UNO_QUERY);
+    uno::Reference< beans::XPropertySet > xSettings(xFactory->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY);
+
+    xSettings->setPropertyValue("AddFrameOffsets", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("UseOldNumbering", uno::makeAny(sal_False));
+    xSettings->setPropertyValue("IgnoreFirstLineIndentInNumbering", uno::makeAny(sal_False));
+    xSettings->setPropertyValue("DoNotResetParaAttrsForNumFont", uno::makeAny(sal_False));
+    xSettings->setPropertyValue("UseFormerLineSpacing", uno::makeAny(sal_False));
+    xSettings->setPropertyValue("AddParaSpacingToTableCells", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("UseFormerObjectPositioning", uno::makeAny(sal_False));
+    xSettings->setPropertyValue("ConsiderTextWrapOnObjPos", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("UseFormerTextWrapping", uno::makeAny(sal_False));
+    xSettings->setPropertyValue("TableRowKeep", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("IgnoreTabsAndBlanksForLineCalculation", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("InvertBorderSpacing", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("CollapseEmptyCellPara", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("TabOverflow", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("UnbreakableNumberings", uno::makeAny(sal_True));
+
+    xSettings->setPropertyValue("FloattableNomargins", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("ClippedPictures", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("BackgroundParaOverDrawings", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("TabOverMargin", uno::makeAny(sal_True));
+    xSettings->setPropertyValue("PropLineSpacingShrinksFirstLine", uno::makeAny(sal_True));
+}
+
+void WriterFilter::setSourceDocument(const uno::Reference< lang::XComponent >& xDoc) throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
+{
+    m_xSrcDoc = xDoc;
+}
+
+void WriterFilter::initialize(const uno::Sequence< uno::Any >& /*rArguments*/) throw (uno::Exception, uno::RuntimeException, std::exception)
+{
+}
+
+OUString WriterFilter::getImplementationName() throw (uno::RuntimeException, std::exception)
+{
+    return OUString("com.sun.star.comp.Writer.WriterFilter");
+}
+
+
+sal_Bool WriterFilter::supportsService(const OUString& rServiceName) throw (uno::RuntimeException, std::exception)
+{
+    return cppu::supportsService(this, rServiceName);
+}
+
+
+uno::Sequence<OUString> WriterFilter::getSupportedServiceNames() throw (uno::RuntimeException, std::exception)
+{
+    uno::Sequence<OUString> aRet =
+    {
+        OUString("com.sun.star.document.ImportFilter"),
+        OUString("com.sun.star.document.ExportFilter")
+    };
+    return aRet;
+}
+
+void WriterFilter::putPropertiesToDocumentGrabBag(const comphelper::SequenceAsHashMap& rProperties)
+{
+    try
+    {
+        uno::Reference<beans::XPropertySet> xDocProps(m_xDstDoc, uno::UNO_QUERY);
+        if (xDocProps.is())
+        {
+            uno::Reference<beans::XPropertySetInfo> xPropsInfo = xDocProps->getPropertySetInfo();
+
+            const OUString aGrabBagPropName = "InteropGrabBag";
+            if (xPropsInfo.is() && xPropsInfo->hasPropertyByName(aGrabBagPropName))
+            {
+                // get existing grab bag
+                comphelper::SequenceAsHashMap aGrabBag(xDocProps->getPropertyValue(aGrabBagPropName));
+
+                // put the new items
+                aGrabBag.update(rProperties);
+
+                // put it back to the document
+                xDocProps->setPropertyValue(aGrabBagPropName, uno::Any(aGrabBag.getAsConstPropertyValueList()));
+            }
+        }
+    }
+    catch (const uno::Exception&)
+    {
+        SAL_WARN("writerfilter","Failed to save documents grab bag");
+    }
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface* SAL_CALL com_sun_star_comp_Writer_WriterFilter_get_implementation(uno::XComponentContext* component, uno::Sequence<uno::Any> const&)
+{
+    return cppu::acquire(new WriterFilter(component));
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/filter/WriterFilter.hxx b/writerfilter/source/filter/WriterFilter.hxx
deleted file mode 100644
index bb32213..0000000
--- a/writerfilter/source/filter/WriterFilter.hxx
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice 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/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_WRITERFILTER_SOURCE_FILTER_WRITERFILTER_HXX
-#define INCLUDED_WRITERFILTER_SOURCE_FILTER_WRITERFILTER_HXX
-
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XImporter.hpp>
-#include <com/sun/star/document/XExporter.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
-#include <cppuhelper/implbase5.hxx>
-#include <comphelper/sequenceashashmap.hxx>
-
-/// Common DOC/DOCX filter, calls DocxExportFilter via UNO or does the DOCX import.
-class WriterFilter : public cppu::WeakImplHelper5
-<
-    com::sun::star::document::XFilter,
-    com::sun::star::document::XImporter,
-    com::sun::star::document::XExporter,
-    com::sun::star::lang::XInitialization,
-    com::sun::star::lang::XServiceInfo
->
-{
-
-protected:
-    ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
-    ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > m_xSrcDoc, m_xDstDoc;
-    ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > m_xHandler;
-
-
-public:
-   WriterFilter( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext)
-        : m_xContext( rxContext )
-   {}
-   virtual ~WriterFilter() {}
-
-    // XFilter
-    virtual sal_Bool SAL_CALL filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor )
-        throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-    virtual void SAL_CALL cancel(  )
-        throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-
-    // XImporter
-    virtual void SAL_CALL setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc )
-        throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-
-    // XExporter
-    virtual void SAL_CALL setSourceDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc )
-        throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-
-    // XInitialization
-    virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
-        throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-
-    // XServiceInfo
-    virtual OUString SAL_CALL getImplementationName(  )
-        throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-    virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
-        throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-    virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
-        throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-
-private:
-    void putPropertiesToDocumentGrabBag(const comphelper::SequenceAsHashMap& rProperties);
-
-};
-
-
-OUString WriterFilter_getImplementationName()
-    throw ( ::com::sun::star::uno::RuntimeException );
-
-bool SAL_CALL WriterFilter_supportsService( const OUString& ServiceName )
-    throw ( ::com::sun::star::uno::RuntimeException );
-
-::com::sun::star::uno::Sequence< OUString > SAL_CALL WriterFilter_getSupportedServiceNames(  )
-    throw ( ::com::sun::star::uno::RuntimeException );
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list