diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2011-07-21 18:38:50 +0200 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2011-07-21 18:38:50 +0200 |
commit | 112be98c928c38c5cc63c99e86e0b58b8d2dfe29 (patch) | |
tree | 053e3d7dfa670c6c1924d4095d9cfbe622b4b5ba /writerfilter/source/filter | |
parent | 03e6f1338cc18d047582fdb22787ebf0f693d8a2 (diff) | |
parent | d90e0b5999ff65ab9bceb4cbd5ecbd5af232ac3b (diff) |
resyncing to master
Diffstat (limited to 'writerfilter/source/filter')
-rw-r--r-- | writerfilter/source/filter/RtfFilter.cxx | 39 | ||||
-rw-r--r-- | writerfilter/source/filter/WriterFilter.cxx | 5 |
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 ); |