summaryrefslogtreecommitdiff
path: root/writerfilter/source/filter
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-07-21 18:38:50 +0200
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-07-21 18:38:50 +0200
commit112be98c928c38c5cc63c99e86e0b58b8d2dfe29 (patch)
tree053e3d7dfa670c6c1924d4095d9cfbe622b4b5ba /writerfilter/source/filter
parent03e6f1338cc18d047582fdb22787ebf0f693d8a2 (diff)
parentd90e0b5999ff65ab9bceb4cbd5ecbd5af232ac3b (diff)
resyncing to master
Diffstat (limited to 'writerfilter/source/filter')
-rw-r--r--writerfilter/source/filter/RtfFilter.cxx39
-rw-r--r--writerfilter/source/filter/WriterFilter.cxx5
2 files changed, 39 insertions, 5 deletions
diff --git a/writerfilter/source/filter/RtfFilter.cxx b/writerfilter/source/filter/RtfFilter.cxx
index b018aed2cfda..3c326d98bf29 100644
--- a/writerfilter/source/filter/RtfFilter.cxx
+++ b/writerfilter/source/filter/RtfFilter.cxx
@@ -32,10 +32,16 @@
#include <osl/module.hxx>
#include <tools/solar.h>
#include <RtfFilter.hxx>
+#include <comphelper/mediadescriptor.hxx>
+#include <dmapper/DomainMapper.hxx>
+#include <rtftok/RTFDocument.hxx>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <svtools/miscopt.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,6 +71,39 @@ sal_Bool RtfFilter::filter( const uno::Sequence< beans::PropertyValue >& aDescri
}
else if ( m_xDstDoc.is() )
{
+ SvtMiscOptions aMiscOptions;
+ if (aMiscOptions.IsExperimentalMode())
+ {
+ MediaDescriptor aMediaDesc( aDescriptor );
+#ifdef DEBUG_IMPORT
+ OUString sURL = aMediaDesc.getUnpackedValueOrDefault( MediaDescriptor::PROP_URL(), OUString() );
+ ::std::string sURLc = OUStringToOString(sURL, RTL_TEXTENCODING_ASCII_US).getStr();
+
+ writerfilter::TagLogger::Pointer_t dmapperLogger
+ (writerfilter::TagLogger::getInstance("DOMAINMAPPER"));
+ dmapperLogger->setFileName(sURLc);
+ dmapperLogger->startDocument();
+#endif
+ uno::Reference< io::XInputStream > xInputStream;
+
+ aMediaDesc.addInputStream();
+ aMediaDesc[ MediaDescriptor::PROP_INPUTSTREAM() ] >>= xInputStream;
+
+ uno::Reference<frame::XFrame> xFrame = aMediaDesc.getUnpackedValueOrDefault(MediaDescriptor::PROP_FRAME(),
+ uno::Reference<frame::XFrame>());
+
+ 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(m_xContext, xInputStream, m_xDstDoc, xFrame));
+ pDocument->resolve(*pStream);
+#ifdef DEBUG_IMPORT
+ dmapperLogger->endDocument();
+#endif
+ return sal_True;
+ }
+
+ // if not, then use the old importer
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())
diff --git a/writerfilter/source/filter/WriterFilter.cxx b/writerfilter/source/filter/WriterFilter.cxx
index 1e039d6febc6..252d4ac6903b 100644
--- a/writerfilter/source/filter/WriterFilter.cxx
+++ b/writerfilter/source/filter/WriterFilter.cxx
@@ -60,11 +60,6 @@ static struct ::cppu::ImplementationEntry s_component_entries [] =
{ 0, 0, 0, 0, 0, 0 } // terminate with NULL
};
-SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
-{
- *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-}
-
SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(sal_Char const * implName, ::com::sun::star::lang::XMultiServiceFactory * xMgr, ::com::sun::star::registry::XRegistryKey * xRegistry )
{
return ::cppu::component_getFactoryHelper(implName, xMgr, xRegistry, s_component_entries );