summaryrefslogtreecommitdiff
path: root/writerfilter/source/filter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@frugalware.org>2011-05-24 15:28:46 +0200
committerMiklos Vajna <vmiklos@frugalware.org>2011-05-27 11:25:58 +0200
commitbf39a12179547ea3567b593139c8d1eef8713bd5 (patch)
treec448c6e2a2c6121d4bdbbe94c957de2cef2195ab /writerfilter/source/filter
parentada1bcd5e08df567f32718cf5cf0a797a4e9793f (diff)
wip: let RtfFilter::filter call RTFDocument::resolve
Diffstat (limited to 'writerfilter/source/filter')
-rw-r--r--writerfilter/source/filter/RtfFilter.cxx26
1 files changed, 16 insertions, 10 deletions
diff --git a/writerfilter/source/filter/RtfFilter.cxx b/writerfilter/source/filter/RtfFilter.cxx
index b018aed2cfda..716ae1778bf8 100644
--- a/writerfilter/source/filter/RtfFilter.cxx
+++ b/writerfilter/source/filter/RtfFilter.cxx
@@ -32,10 +32,14 @@
#include <osl/module.hxx>
#include <tools/solar.h>
#include <RtfFilter.hxx>
+#include <comphelper/mediadescriptor.hxx>
+#include <dmapper/DomainMapper.hxx>
+#include <rtftok/RTFDocument.hxx>
using namespace ::rtl;
using namespace ::cppu;
using namespace ::com::sun::star;
+using ::comphelper::MediaDescriptor;
RtfFilter::RtfFilter( const uno::Reference< uno::XComponentContext >& rxContext) :
m_xContext( rxContext )
@@ -65,16 +69,18 @@ sal_Bool RtfFilter::filter( const uno::Sequence< beans::PropertyValue >& aDescri
}
else if ( m_xDstDoc.is() )
{
- uno::Reference< lang::XMultiServiceFactory > xMSF(m_xContext->getServiceManager(), uno::UNO_QUERY_THROW);
- uno::Reference< uno::XInterface > xIfc( xMSF->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.comp.Writer.RtfImport" ))), uno::UNO_QUERY_THROW);
- if (!xIfc.is())
- return sal_False;
- uno::Reference< document::XImporter > xImprtr(xIfc, uno::UNO_QUERY_THROW);
- uno::Reference< document::XFilter > xFltr(xIfc, uno::UNO_QUERY_THROW);
- if (!xImprtr.is() || !xFltr.is())
- return sal_False;
- xImprtr->setTargetDocument(m_xDstDoc);
- return xFltr->filter(aDescriptor);
+ MediaDescriptor aMediaDesc( aDescriptor );
+ uno::Reference< io::XInputStream > xInputStream;
+
+ aMediaDesc.addInputStream();
+ aMediaDesc[ MediaDescriptor::PROP_INPUTSTREAM() ] >>= xInputStream;
+
+ writerfilter::Stream::Pointer_t pStream(
+ new writerfilter::dmapper::DomainMapper(m_xContext, xInputStream, m_xDstDoc, writerfilter::dmapper::DOCUMENT_RTF));
+ writerfilter::rtftok::RTFDocument::Pointer_t const pDocument(
+ writerfilter::rtftok::RTFDocumentFactory::createDocument(xInputStream) );
+ pDocument->resolve(*pStream);
+ return sal_True;
}
return sal_False;
}