diff --git a/filter/source/config/fragments/filters/Beagle_Works_Draw.xcu b/filter/source/config/fragments/filters/Beagle_Works_Draw.xcu
new file mode 100644
index 000000000000..57b5879c6566
--- /dev/null
+++ b/filter/source/config/fragments/filters/Beagle_Works_Draw.xcu
@@ -0,0 +1,29 @@
+
+
+
+
+ IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ BeagleWorks/WordPerfect Works v1 Document
+
+
+ 0
+
+
+ draw_Beagle_Works
+
+
+ com.sun.star.drawing.DrawingDocument
+
+
diff --git a/filter/source/config/fragments/filters/ClarisWorks_Draw.xcu b/filter/source/config/fragments/filters/ClarisWorks_Draw.xcu
new file mode 100644
index 000000000000..f4924b7ee1f7
--- /dev/null
+++ b/filter/source/config/fragments/filters/ClarisWorks_Draw.xcu
@@ -0,0 +1,30 @@
+
+
+ IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ ClarisWorks/AppleWorks Document
+
+ 0
+ draw_ClarisWorks
+
+ com.sun.star.drawing.DrawingDocument
+
diff --git a/filter/source/config/fragments/filters/Great_Works_Draw.xcu b/filter/source/config/fragments/filters/Great_Works_Draw.xcu
new file mode 100644
index 000000000000..4bb0667fc2b4
--- /dev/null
+++ b/filter/source/config/fragments/filters/Great_Works_Draw.xcu
@@ -0,0 +1,29 @@
+
+
+
+
+ IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED
+
+
+ com.sun.star.comp.Draaw.MWAWDrawImportFilter
+
+
+ GreatWorks Document
+
+
+ 0
+
+
+ draw_Great_Works
+
+
+ com.sun.star.drawing.DrawingDocument
+
+
diff --git a/filter/source/config/fragments/filters/MacPaint_Draw.xcu b/filter/source/config/fragments/filters/MacPaint_Draw.xcu
new file mode 100644
index 000000000000..80f8021e5490
--- /dev/null
+++ b/filter/source/config/fragments/filters/MacPaint_Draw.xcu
@@ -0,0 +1,30 @@
+
+
+ IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ MacPaint (v1)
+
+ 0
+ draw_MacPaint
+
+ com.sun.star.drawing.DrawingDocument
+
diff --git a/filter/source/config/fragments/filters/Mac_Works_Draw.xcu b/filter/source/config/fragments/filters/Mac_Works_Draw.xcu
new file mode 100644
index 000000000000..1c02f3f498b4
--- /dev/null
+++ b/filter/source/config/fragments/filters/Mac_Works_Draw.xcu
@@ -0,0 +1,30 @@
+
+
+ IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ Microsoft Works for Mac Document (v1 - v4)
+
+ 0
+ draw_Mac_Works
+
+ com.sun.star.drawing.DrawingDocument
+
diff --git a/filter/source/config/fragments/filters/SuperPaint_Draw.xcu b/filter/source/config/fragments/filters/SuperPaint_Draw.xcu
new file mode 100644
index 000000000000..ccac8639685f
--- /dev/null
+++ b/filter/source/config/fragments/filters/SuperPaint_Draw.xcu
@@ -0,0 +1,30 @@
+
+
+ IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ SuperPaint (v1)
+
+ 0
+ draw_SuperPaint
+
+ com.sun.star.drawing.DrawingDocument
+
diff --git a/filter/source/config/fragments/types/draw_Beagle_Works.xcu b/filter/source/config/fragments/types/draw_Beagle_Works.xcu
new file mode 100644
index 000000000000..177ad9713d94
--- /dev/null
+++ b/filter/source/config/fragments/types/draw_Beagle_Works.xcu
@@ -0,0 +1,29 @@
+
+
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ dummy
+
+
+
+
+
+ true
+
+
+ Beagle_Works_Draw
+
+
+ BeagleWorks/WordPerfect Works Document
+
+
diff --git a/filter/source/config/fragments/types/draw_ClarisWorks.xcu b/filter/source/config/fragments/types/draw_ClarisWorks.xcu
new file mode 100644
index 000000000000..74672eb8984f
--- /dev/null
+++ b/filter/source/config/fragments/types/draw_ClarisWorks.xcu
@@ -0,0 +1,29 @@
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+ cwk
+ application/clarisworks
+ true
+ Claris_Works_Draw
+
+ ClarisWorks/AppleWorks Document
+
+
+
diff --git a/filter/source/config/fragments/types/draw_Great_Works.xcu b/filter/source/config/fragments/types/draw_Great_Works.xcu
new file mode 100644
index 000000000000..f9aeb0781f0f
--- /dev/null
+++ b/filter/source/config/fragments/types/draw_Great_Works.xcu
@@ -0,0 +1,29 @@
+
+
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+
+ dummy
+
+
+
+
+
+ true
+
+
+ Great_Works_Draw
+
+
+ GreatWorks Document
+
+
diff --git a/filter/source/config/fragments/types/draw_MacPaint.xcu b/filter/source/config/fragments/types/draw_MacPaint.xcu
new file mode 100644
index 000000000000..5811ea584ffd
--- /dev/null
+++ b/filter/source/config/fragments/types/draw_MacPaint.xcu
@@ -0,0 +1,29 @@
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+ wps
+ application/vnd.ms-works
+ true
+ MacPaint_Draw
+
+ MacPaint (v1)
+
+
+
diff --git a/filter/source/config/fragments/types/draw_Mac_Works.xcu b/filter/source/config/fragments/types/draw_Mac_Works.xcu
new file mode 100644
index 000000000000..79ef12c92170
--- /dev/null
+++ b/filter/source/config/fragments/types/draw_Mac_Works.xcu
@@ -0,0 +1,29 @@
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+ wps
+ application/vnd.ms-works
+ true
+ Mac_Works_Draw
+
+ Microsoft Works for Mac Document (v1 - v4)
+
+
+
diff --git a/filter/source/config/fragments/types/draw_SuperPaint.xcu b/filter/source/config/fragments/types/draw_SuperPaint.xcu
new file mode 100644
index 000000000000..6dbd4a9dc083
--- /dev/null
+++ b/filter/source/config/fragments/types/draw_SuperPaint.xcu
@@ -0,0 +1,29 @@
+
+
+ com.sun.star.comp.Draw.MWAWDrawImportFilter
+
+ wps
+ application/vnd.ms-works
+ true
+ SuperPaint_Draw
+
+ SuperPaint (v1)
+
+
+
diff --git a/writerperfect/source/draw/MWAWDrawImportFilter.cxx b/writerperfect/source/draw/MWAWDrawImportFilter.cxx
new file mode 100644
index 000000000000..feddcdbdc6cf
--- /dev/null
+++ b/writerperfect/source/draw/MWAWDrawImportFilter.cxx
@@ -0,0 +1,191 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* MWAWDrawImportFilter: Sets up the filter, and calls DocumentCollector
+ * to do the actual filtering
+ *
+ * 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/.
+ */
+
+#include
+#include
+
+#include
+#include
+
+#include "MWAWDrawImportFilter.hxx"
+
+using com::sun::star::uno::Sequence;
+using com::sun::star::uno::Reference;
+using com::sun::star::uno::Any;
+using com::sun::star::uno::XInterface;
+using com::sun::star::uno::Exception;
+using com::sun::star::uno::RuntimeException;
+using com::sun::star::uno::XComponentContext;
+
+static bool handleEmbeddedMWAWGraphicObject(const librevenge::RVNGBinaryData &data, OdfDocumentHandler *pHandler, const OdfStreamType streamType)
+{
+ OdgGenerator exporter;
+ exporter.addDocumentHandler(pHandler, streamType);
+ return MWAWDocument::decodeGraphic(data, &exporter);
+}
+
+static bool handleEmbeddedMWAWSpreadsheetObject(const librevenge::RVNGBinaryData &data, OdfDocumentHandler *pHandler, const OdfStreamType streamType)
+{
+ OdsGenerator exporter;
+ exporter.addDocumentHandler(pHandler, streamType);
+ return MWAWDocument::decodeSpreadsheet(data, &exporter);
+}
+
+bool MWAWDrawImportFilter::doImportDocument( librevenge::RVNGInputStream &rInput, librevenge::RVNGDrawingInterface &rGenerator )
+{
+ return MWAWDocument::MWAW_R_OK == MWAWDocument::parse(&rInput, &rGenerator);
+}
+
+bool MWAWDrawImportFilter::doDetectFormat( librevenge::RVNGInputStream &rInput, OUString &rTypeName )
+{
+ rTypeName = "";
+
+ MWAWDocument::Type docType = MWAWDocument::MWAW_T_UNKNOWN;
+ MWAWDocument::Kind docKind = MWAWDocument::MWAW_K_UNKNOWN;
+ const MWAWDocument::Confidence confidence = MWAWDocument::isFileFormatSupported(&rInput, docType, docKind);
+
+ if (confidence == MWAWDocument::MWAW_C_EXCELLENT)
+ {
+ if ( docKind == MWAWDocument::MWAW_K_DRAW || docKind == MWAWDocument::MWAW_K_PAINT )
+ {
+ switch (docType)
+ {
+ case MWAWDocument::MWAW_T_BEAGLEWORKS:
+ rTypeName = "draw_Beagle_Works";
+ break;
+ case MWAWDocument::MWAW_T_CLARISWORKS:
+ rTypeName = "draw_ClarisWorks";
+ break;
+ case MWAWDocument::MWAW_T_GREATWORKS:
+ rTypeName = "draw_Great_Works";
+ break;
+ case MWAWDocument::MWAW_T_MACPAINT:
+ rTypeName = "draw_MacPaint";
+ break;
+ case MWAWDocument::MWAW_T_MICROSOFTWORKS:
+ rTypeName = "draw_Mac_Works";
+ break;
+ case MWAWDocument::MWAW_T_SUPERPAINT:
+ rTypeName = "draw_SuperPaint";
+ break;
+
+ case MWAWDocument::MWAW_T_ACTA:
+ case MWAWDocument::MWAW_T_ADOBEILLUSTRATOR:
+ case MWAWDocument::MWAW_T_CLARISRESOLVE:
+ case MWAWDocument::MWAW_T_DBASE:
+ case MWAWDocument::MWAW_T_DOCMAKER:
+ case MWAWDocument::MWAW_T_EDOC:
+ case MWAWDocument::MWAW_T_FAMILYTREEMAKER:
+ case MWAWDocument::MWAW_T_FILEMAKER:
+ case MWAWDocument::MWAW_T_FOXBASE:
+ case MWAWDocument::MWAW_T_FRAMEMAKER:
+ case MWAWDocument::MWAW_T_FULLIMPACT:
+ case MWAWDocument::MWAW_T_FULLPAINT:
+ case MWAWDocument::MWAW_T_FULLWRITE:
+ case MWAWDocument::MWAW_T_INFOGENIE:
+ case MWAWDocument::MWAW_T_KALEIDAGRAPH:
+ case MWAWDocument::MWAW_T_HANMACWORDJ:
+ case MWAWDocument::MWAW_T_HANMACWORDK:
+ case MWAWDocument::MWAW_T_LIGHTWAYTEXT:
+ case MWAWDocument::MWAW_T_MACDOC:
+ case MWAWDocument::MWAW_T_MACDRAFT:
+ case MWAWDocument::MWAW_T_MACDRAW:
+ case MWAWDocument::MWAW_T_MACDRAWPRO:
+ case MWAWDocument::MWAW_T_MACWRITE:
+ case MWAWDocument::MWAW_T_MACWRITEPRO:
+ case MWAWDocument::MWAW_T_MARINERWRITE:
+ case MWAWDocument::MWAW_T_MINDWRITE:
+ case MWAWDocument::MWAW_T_MICROSOFTFILE:
+ case MWAWDocument::MWAW_T_MICROSOFTMULTIPLAN:
+ case MWAWDocument::MWAW_T_MICROSOFTWORD:
+ case MWAWDocument::MWAW_T_MORE:
+ case MWAWDocument::MWAW_T_NISUSWRITER:
+ case MWAWDocument::MWAW_T_OVERVUE:
+ case MWAWDocument::MWAW_T_PAGEMAKER:
+ case MWAWDocument::MWAW_T_PIXELPAINT:
+ case MWAWDocument::MWAW_T_RAGTIME:
+ case MWAWDocument::MWAW_T_READYSETGO:
+ case MWAWDocument::MWAW_T_SYMPOSIUM:
+ case MWAWDocument::MWAW_T_TEACHTEXT:
+ case MWAWDocument::MWAW_T_TEXEDIT:
+ case MWAWDocument::MWAW_T_TRAPEZE:
+ case MWAWDocument::MWAW_T_WINGZ:
+ case MWAWDocument::MWAW_T_WRITENOW:
+ case MWAWDocument::MWAW_T_WRITERPLUS:
+ case MWAWDocument::MWAW_T_XPRESS:
+ case MWAWDocument::MWAW_T_ZWRITE:
+ case MWAWDocument::MWAW_T_4DIMENSION:
+
+ case MWAWDocument::MWAW_T_RESERVED1:
+ case MWAWDocument::MWAW_T_RESERVED2:
+ case MWAWDocument::MWAW_T_RESERVED3:
+ case MWAWDocument::MWAW_T_RESERVED4:
+ case MWAWDocument::MWAW_T_RESERVED5:
+ case MWAWDocument::MWAW_T_RESERVED6:
+ case MWAWDocument::MWAW_T_RESERVED7:
+ case MWAWDocument::MWAW_T_RESERVED8:
+ case MWAWDocument::MWAW_T_RESERVED9:
+ case MWAWDocument::MWAW_T_UNKNOWN:
+ default:
+ break;
+ }
+ }
+ }
+
+ return !rTypeName.isEmpty();
+}
+
+void MWAWDrawImportFilter::doRegisterHandlers( OdgGenerator &rGenerator )
+{
+ rGenerator.registerEmbeddedObjectHandler("image/mwaw-odg", &handleEmbeddedMWAWGraphicObject);
+ rGenerator.registerEmbeddedObjectHandler("image/mwaw-ods", &handleEmbeddedMWAWSpreadsheetObject);
+}
+
+OUString MWAWDrawImportFilter_getImplementationName ()
+throw (RuntimeException)
+{
+ return OUString ( "com.sun.star.comp.Draw.MWAWDrawImportFilter" );
+}
+
+Sequence< OUString > SAL_CALL MWAWDrawImportFilter_getSupportedServiceNames( )
+throw (RuntimeException)
+{
+ Sequence < OUString > aRet(2);
+ OUString *pArray = aRet.getArray();
+ pArray[0] = "com.sun.star.document.ImportFilter";
+ pArray[1] = "com.sun.star.document.ExtendedTypeDetection";
+ return aRet;
+}
+
+Reference< XInterface > SAL_CALL MWAWDrawImportFilter_createInstance( const Reference< XComponentContext > &rContext)
+throw( Exception )
+{
+ return (cppu::OWeakObject *) new MWAWDrawImportFilter( rContext );
+}
+
+// XServiceInfo
+OUString SAL_CALL MWAWDrawImportFilter::getImplementationName( )
+throw (RuntimeException, std::exception)
+{
+ return MWAWDrawImportFilter_getImplementationName();
+}
+sal_Bool SAL_CALL MWAWDrawImportFilter::supportsService( const OUString &rServiceName )
+throw (RuntimeException, std::exception)
+{
+ return cppu::supportsService( this, rServiceName );
+}
+Sequence< OUString > SAL_CALL MWAWDrawImportFilter::getSupportedServiceNames( )
+throw (RuntimeException, std::exception)
+{
+ return MWAWDrawImportFilter_getSupportedServiceNames();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerperfect/source/draw/MWAWDrawImportFilter.hxx b/writerperfect/source/draw/MWAWDrawImportFilter.hxx
new file mode 100644
index 000000000000..173629e2e3b4
--- /dev/null
+++ b/writerperfect/source/draw/MWAWDrawImportFilter.hxx
@@ -0,0 +1,53 @@
+/* -*- 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/.
+ */
+
+#ifndef _MWAWDRAWIMPORTFILTER_HXX
+#define _MWAWDRAWIMPORTFILTER_HXX
+
+#include
+#include
+
+#include "ImportFilterBase.hxx"
+
+/* This component will be instantiated for both import or export. Whether it calls
+ * setSourceDocument or setTargetDocument determines which Impl function the filter
+ * member calls */
+class MWAWDrawImportFilter : public writerperfect::draw::ImportFilterBase
+{
+public:
+ MWAWDrawImportFilter( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > &rxContext )
+ : writerperfect::draw::ImportFilterBase( rxContext ) {}
+
+ // 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:
+ virtual bool doDetectFormat( librevenge::RVNGInputStream &rInput, OUString &rTypeName ) SAL_OVERRIDE;
+ virtual bool doImportDocument( librevenge::RVNGInputStream &rInput, librevenge::RVNGDrawingInterface &rGenerator ) SAL_OVERRIDE;
+ virtual void doRegisterHandlers( OdgGenerator &rGenerator ) SAL_OVERRIDE;
+};
+
+OUString MWAWDrawImportFilter_getImplementationName()
+throw ( ::com::sun::star::uno::RuntimeException );
+
+::com::sun::star::uno::Sequence< OUString > SAL_CALL MWAWDrawImportFilter_getSupportedServiceNames( )
+throw ( ::com::sun::star::uno::RuntimeException );
+
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
+SAL_CALL MWAWDrawImportFilter_createInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > &rContext)
+throw ( ::com::sun::star::uno::Exception );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */