diff options
author | Matúš Kukan <matus.kukan@collabora.com> | 2013-12-17 21:59:50 +0100 |
---|---|---|
committer | Matúš Kukan <matus.kukan@collabora.com> | 2013-12-20 16:26:35 +0100 |
commit | 4a969ac35174520f1ffeb4f919f5d7bb6d99a628 (patch) | |
tree | 887738c0aeae027c1067e7c1092d5c7ef401d654 /svx/source/xml | |
parent | 296b1e76071698c990e726d2f7935cef9ca07fbe (diff) |
svx: split into direct implementation getFactories
Change-Id: I888f10a923dc2b97247b2a66cc6bd116eee280a7
Diffstat (limited to 'svx/source/xml')
-rw-r--r-- | svx/source/xml/xmlgrhlp.cxx | 95 |
1 files changed, 54 insertions, 41 deletions
diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx index 0509b7c8309e..4cd46118933e 100644 --- a/svx/source/xml/xmlgrhlp.cxx +++ b/svx/source/xml/xmlgrhlp.cxx @@ -28,7 +28,6 @@ #include <com/sun/star/lang/XInitialization.hpp> #include <cppuhelper/compbase4.hxx> #include <cppuhelper/supportsservice.hxx> - #include <unotools/ucbstreamhelper.hxx> #include <unotools/streamwrap.hxx> #include <unotools/tempfile.hxx> @@ -54,6 +53,8 @@ using ::com::sun::star::lang::XMultiServiceFactory; #define XML_GRAPHICSTORAGE_NAME "Pictures" #define XML_GRAPHICOBJECT_URL_BASE "vnd.sun.star.GraphicObject:" +namespace { + const MetaCommentAction* ImplCheckForEPS( GDIMetaFile& rMtf ) { const MetaCommentAction* pComment = NULL; @@ -346,6 +347,8 @@ const GraphicObject& SvXMLGraphicOutputStream::GetGraphicObject() return maGrfObj; } +} + SvXMLGraphicHelper::SvXMLGraphicHelper( SvXMLGraphicHelperMode eCreateMode ) : ::cppu::WeakComponentImplHelper2< ::com::sun::star::document::XGraphicObjectResolver, ::com::sun::star::document::XBinaryStreamResolver >( maMutex ) @@ -884,9 +887,9 @@ OUString SAL_CALL SvXMLGraphicHelper::resolveOutputStream( const Reference< XOut return aRet; } +namespace { + // for instantiation via service manager -namespace svx -{ namespace impl { @@ -1014,8 +1017,8 @@ OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName() throw (uno::RuntimeException) { if( m_eGraphicHelperMode == GRAPHICHELPER_MODE_READ ) - return SvXMLGraphicImportHelper_getImplementationName(); - return SvXMLGraphicExportHelper_getImplementationName(); + return OUString("com.sun.star.comp.Svx.GraphicImportHelper"); + return OUString("com.sun.star.comp.Svx.GraphicExportHelper"); } ::sal_Bool SAL_CALL SvXMLGraphicImportExportHelper::supportsService( const OUString& ServiceName ) @@ -1027,25 +1030,6 @@ OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName() Sequence< OUString > SAL_CALL SvXMLGraphicImportExportHelper::getSupportedServiceNames() throw (uno::RuntimeException) { - if( m_eGraphicHelperMode == GRAPHICHELPER_MODE_READ ) - return SvXMLGraphicImportHelper_getSupportedServiceNames(); - return SvXMLGraphicExportHelper_getSupportedServiceNames(); -} - -// import -Reference< XInterface > SAL_CALL SvXMLGraphicImportHelper_createInstance(const Reference< XMultiServiceFactory > & /* rSMgr */ ) - throw( Exception ) -{ - return static_cast< XWeak* >( new SvXMLGraphicImportExportHelper( GRAPHICHELPER_MODE_READ )); -} -OUString SAL_CALL SvXMLGraphicImportHelper_getImplementationName() - throw() -{ - return OUString( "com.sun.star.comp.Svx.GraphicImportHelper" ); -} -Sequence< OUString > SAL_CALL SvXMLGraphicImportHelper_getSupportedServiceNames() - throw() -{ // XGraphicObjectResolver and XBinaryStreamResolver are not part of any service Sequence< OUString > aSupportedServiceNames( 2 ); aSupportedServiceNames[0] = "com.sun.star.document.GraphicObjectResolver"; @@ -1053,27 +1037,56 @@ Sequence< OUString > SAL_CALL SvXMLGraphicImportHelper_getSupportedServiceNames( return aSupportedServiceNames; } -// export -Reference< XInterface > SAL_CALL SvXMLGraphicExportHelper_createInstance(const Reference< XMultiServiceFactory > & /* rSMgr */ ) - throw( Exception ) -{ - return static_cast< XWeak* >( new SvXMLGraphicImportExportHelper( GRAPHICHELPER_MODE_WRITE )); } -OUString SAL_CALL SvXMLGraphicExportHelper_getImplementationName() - throw() + +/** Create this with createInstanceWithArguments. service name + "com.sun.star.comp.Svx.GraphicImportHelper", one argument which is the + XStorage. Without arguments no helper class is created. With an empty + argument the helper class is created and initialized like in the CTOR to + SvXMLGraphicHelper that only gets the create mode. + + You should call dispose after you no longer need this component. + + uses eCreateMode == GRAPHICHELPER_MODE_READ, bDirect == sal_True in + SvXMLGraphicHelper + */ +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +com_sun_star_comp_Svx_GraphicImportHelper_implementation_getFactory( + SAL_UNUSED_PARAMETER css::uno::XComponentContext *, + uno_Sequence * arguments) { - return OUString( "com.sun.star.comp.Svx.GraphicExportHelper" ); + assert(arguments != 0 && arguments->nElements == 0); (void) arguments; + css::uno::Reference<css::uno::XInterface> x( + static_cast<cppu::OWeakObject *>(new SvXMLGraphicImportExportHelper( + GRAPHICHELPER_MODE_READ ))); + x->acquire(); + return x.get(); } -Sequence< OUString > SAL_CALL SvXMLGraphicExportHelper_getSupportedServiceNames() - throw() + +/** Create this with createInstanceWithArguments. service name + "com.sun.star.comp.Svx.GraphicExportHelper", one argument which is the + XStorage. Without arguments no helper class is created. With an empty + argument the helper class is created and initialized like in the CTOR to + SvXMLGraphicHelper that only gets the create mode + + To write the Pictures stream, you have to call dispose at this component. + Make sure you call dipose before you commit the parent storage. + + uses eCreateMode == GRAPHICHELPER_MODE_WRITE, bDirect == sal_True in + SvXMLGraphicHelper + */ + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +com_sun_star_comp_Svx_GraphicExportHelper_implementation_getFactory( + SAL_UNUSED_PARAMETER css::uno::XComponentContext *, + uno_Sequence * arguments) { - // XGraphicObjectResolver and XBinaryStreamResolver are not part of any service - Sequence< OUString > aSupportedServiceNames( 2 ); - aSupportedServiceNames[0] = "com.sun.star.document.GraphicObjectResolver"; - aSupportedServiceNames[1] = "com.sun.star.document.BinaryStreamResolver"; - return aSupportedServiceNames; + assert(arguments != 0 && arguments->nElements == 0); (void) arguments; + css::uno::Reference<css::uno::XInterface> x( + static_cast<cppu::OWeakObject *>(new SvXMLGraphicImportExportHelper( + GRAPHICHELPER_MODE_WRITE ))); + x->acquire(); + return x.get(); } -} // namespace svx - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |