Kaydet (Commit) 6d564bac authored tarafından Matúš Kukan's avatar Matúš Kukan

svx: Use constructor feature for SvXMLGraphicImportExportHelper.

Change-Id: Icc281ece80b81cdd95b6660c6a82077d283f5a62
üst 02eb7511
...@@ -104,6 +104,7 @@ $(eval $(call gb_CppunitTest_use_components,chart2_export,\ ...@@ -104,6 +104,7 @@ $(eval $(call gb_CppunitTest_use_components,chart2_export,\
svl/util/svl \ svl/util/svl \
svtools/util/svt \ svtools/util/svt \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
...@@ -110,6 +110,7 @@ $(eval $(call gb_CppunitTest_use_components,chart2_import,\ ...@@ -110,6 +110,7 @@ $(eval $(call gb_CppunitTest_use_components,chart2_import,\
svl/util/svl \ svl/util/svl \
svtools/util/svt \ svtools/util/svt \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
...@@ -31,19 +31,12 @@ ...@@ -31,19 +31,12 @@
#include <com/sun/star/embed/XStorage.hpp> #include <com/sun/star/embed/XStorage.hpp>
#include <svx/svxdllapi.h> #include <svx/svxdllapi.h>
// ----------------------
// - SvXMLGraphicHelper -
// ----------------------
enum SvXMLGraphicHelperMode enum SvXMLGraphicHelperMode
{ {
GRAPHICHELPER_MODE_READ = 0, GRAPHICHELPER_MODE_READ = 0,
GRAPHICHELPER_MODE_WRITE = 1 GRAPHICHELPER_MODE_WRITE = 1
}; };
// ----------------------
// - SvXMLGraphicHelper -
// ----------------------
struct SvxGraphicHelperStream_Impl struct SvxGraphicHelperStream_Impl
{ {
::com::sun::star::uno::Reference < ::com::sun::star::embed::XStorage > xStorage; ::com::sun::star::uno::Reference < ::com::sun::star::embed::XStorage > xStorage;
...@@ -119,42 +112,6 @@ public: ...@@ -119,42 +112,6 @@ public:
virtual OUString SAL_CALL resolveOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& rxBinaryStream ) throw (::com::sun::star::uno::RuntimeException); virtual OUString SAL_CALL resolveOutputStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& rxBinaryStream ) throw (::com::sun::star::uno::RuntimeException);
}; };
// for instantiation via service manager
namespace svx
{
/** 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
*/
SVX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SvXMLGraphicImportHelper_createInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rSMgr) throw( ::com::sun::star::uno::Exception );
SVX_DLLPUBLIC ::com::sun::star::uno::Sequence< OUString > SAL_CALL SvXMLGraphicImportHelper_getSupportedServiceNames() throw();
SVX_DLLPUBLIC OUString SAL_CALL SvXMLGraphicImportHelper_getImplementationName() 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
*/
SVX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SvXMLGraphicExportHelper_createInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rSMgr) throw( ::com::sun::star::uno::Exception );
SVX_DLLPUBLIC ::com::sun::star::uno::Sequence< OUString > SAL_CALL SvXMLGraphicExportHelper_getSupportedServiceNames() throw();
SVX_DLLPUBLIC OUString SAL_CALL SvXMLGraphicExportHelper_getImplementationName() throw();
}
#endif #endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -96,6 +96,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_chart_regression_test,\ ...@@ -96,6 +96,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_chart_regression_test,\
svl/source/fsstor/fsstorage \ svl/source/fsstor/fsstorage \
svl/util/svl \ svl/util/svl \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
...@@ -100,6 +100,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_filters_test,\ ...@@ -100,6 +100,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_filters_test,\
sot/util/sot \ sot/util/sot \
svl/util/svl \ svl/util/svl \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
svtools/util/svt \ svtools/util/svt \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
......
...@@ -97,6 +97,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_macros_test,\ ...@@ -97,6 +97,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_macros_test,\
svl/source/fsstor/fsstorage \ svl/source/fsstor/fsstorage \
svtools/util/svt \ svtools/util/svt \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
...@@ -96,6 +96,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_opencl_test,\ ...@@ -96,6 +96,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_opencl_test,\
sot/util/sot \ sot/util/sot \
svl/util/svl \ svl/util/svl \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
svtools/util/svt \ svtools/util/svt \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
......
...@@ -110,6 +110,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_rangelst_test,\ ...@@ -110,6 +110,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_rangelst_test,\
svl/source/fsstor/fsstorage \ svl/source/fsstor/fsstorage \
svl/util/svl \ svl/util/svl \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <svx/xtable.hxx> #include <svx/xtable.hxx>
#include "svx/unoshcol.hxx" #include "svx/unoshcol.hxx"
#include "recoveryui.hxx" #include "recoveryui.hxx"
#include "svx/xmlgrhlp.hxx"
#include "tbunocontroller.hxx" #include "tbunocontroller.hxx"
#include "tbunosearchcontrollers.hxx" #include "tbunosearchcontrollers.hxx"
...@@ -348,22 +347,6 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL svx_component_getFactory ( ...@@ -348,22 +347,6 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL svx_component_getFactory (
drawinglayer::primitive2d::XPrimitiveFactory2DProvider_createInstance, drawinglayer::primitive2d::XPrimitiveFactory2DProvider_createInstance,
drawinglayer::primitive2d::PrimitiveFactory2D::getSupportedServiceNames_Static() ); drawinglayer::primitive2d::PrimitiveFactory2D::getSupportedServiceNames_Static() );
} }
else if( ::svx::SvXMLGraphicImportHelper_getImplementationName().equalsAscii( pImplName ) )
{
xFactory = ::cppu::createSingleFactory(
reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),
::svx::SvXMLGraphicImportHelper_getImplementationName(),
::svx::SvXMLGraphicImportHelper_createInstance,
::svx::SvXMLGraphicImportHelper_getSupportedServiceNames() );
}
else if( ::svx::SvXMLGraphicExportHelper_getImplementationName().equalsAscii( pImplName ) )
{
xFactory = ::cppu::createSingleFactory(
reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),
::svx::SvXMLGraphicExportHelper_getImplementationName(),
::svx::SvXMLGraphicExportHelper_createInstance,
::svx::SvXMLGraphicExportHelper_getSupportedServiceNames() );
}
if( xFactory.is()) if( xFactory.is())
{ {
......
...@@ -54,6 +54,8 @@ using ::com::sun::star::lang::XMultiServiceFactory; ...@@ -54,6 +54,8 @@ using ::com::sun::star::lang::XMultiServiceFactory;
#define XML_GRAPHICSTORAGE_NAME "Pictures" #define XML_GRAPHICSTORAGE_NAME "Pictures"
#define XML_GRAPHICOBJECT_URL_BASE "vnd.sun.star.GraphicObject:" #define XML_GRAPHICOBJECT_URL_BASE "vnd.sun.star.GraphicObject:"
namespace {
const MetaCommentAction* ImplCheckForEPS( GDIMetaFile& rMtf ) const MetaCommentAction* ImplCheckForEPS( GDIMetaFile& rMtf )
{ {
const MetaCommentAction* pComment = NULL; const MetaCommentAction* pComment = NULL;
...@@ -346,6 +348,8 @@ const GraphicObject& SvXMLGraphicOutputStream::GetGraphicObject() ...@@ -346,6 +348,8 @@ const GraphicObject& SvXMLGraphicOutputStream::GetGraphicObject()
return maGrfObj; return maGrfObj;
} }
}
SvXMLGraphicHelper::SvXMLGraphicHelper( SvXMLGraphicHelperMode eCreateMode ) : SvXMLGraphicHelper::SvXMLGraphicHelper( SvXMLGraphicHelperMode eCreateMode ) :
::cppu::WeakComponentImplHelper2< ::com::sun::star::document::XGraphicObjectResolver, ::cppu::WeakComponentImplHelper2< ::com::sun::star::document::XGraphicObjectResolver,
::com::sun::star::document::XBinaryStreamResolver >( maMutex ) ::com::sun::star::document::XBinaryStreamResolver >( maMutex )
...@@ -885,8 +889,7 @@ OUString SAL_CALL SvXMLGraphicHelper::resolveOutputStream( const Reference< XOut ...@@ -885,8 +889,7 @@ OUString SAL_CALL SvXMLGraphicHelper::resolveOutputStream( const Reference< XOut
} }
// for instantiation via service manager // for instantiation via service manager
namespace svx namespace {
{
namespace impl namespace impl
{ {
...@@ -1014,8 +1017,8 @@ OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName() ...@@ -1014,8 +1017,8 @@ OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName()
throw (uno::RuntimeException) throw (uno::RuntimeException)
{ {
if( m_eGraphicHelperMode == GRAPHICHELPER_MODE_READ ) if( m_eGraphicHelperMode == GRAPHICHELPER_MODE_READ )
return SvXMLGraphicImportHelper_getImplementationName(); return OUString("com.sun.star.comp.Svx.GraphicImportHelper");
return SvXMLGraphicExportHelper_getImplementationName(); return OUString("com.sun.star.comp.Svx.GraphicExportHelper");
} }
::sal_Bool SAL_CALL SvXMLGraphicImportExportHelper::supportsService( const OUString& ServiceName ) ::sal_Bool SAL_CALL SvXMLGraphicImportExportHelper::supportsService( const OUString& ServiceName )
...@@ -1026,25 +1029,6 @@ OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName() ...@@ -1026,25 +1029,6 @@ OUString SAL_CALL SvXMLGraphicImportExportHelper::getImplementationName()
Sequence< OUString > SAL_CALL SvXMLGraphicImportExportHelper::getSupportedServiceNames() Sequence< OUString > SAL_CALL SvXMLGraphicImportExportHelper::getSupportedServiceNames()
throw (uno::RuntimeException) 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 // XGraphicObjectResolver and XBinaryStreamResolver are not part of any service
Sequence< OUString > aSupportedServiceNames( 2 ); Sequence< OUString > aSupportedServiceNames( 2 );
...@@ -1053,27 +1037,71 @@ Sequence< OUString > SAL_CALL SvXMLGraphicImportHelper_getSupportedServiceNames( ...@@ -1053,27 +1037,71 @@ Sequence< OUString > SAL_CALL SvXMLGraphicImportHelper_getSupportedServiceNames(
return aSupportedServiceNames; 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);
css::uno::Reference<css::uno::XInterface> x(
static_cast<cppu::OWeakObject *>(new SvXMLGraphicImportExportHelper(
GRAPHICHELPER_MODE_READ)));
x->acquire();
css::uno::Reference< css::lang::XInitialization > xx(x, css::uno::UNO_QUERY);
if (xx.is())
{
css::uno::Sequence<css::uno::Any> aArgs(
reinterpret_cast<css::uno::Any *>(arguments->elements),
arguments->nElements);
xx->initialize(aArgs);
}
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 assert(arguments != 0);
Sequence< OUString > aSupportedServiceNames( 2 ); css::uno::Reference<css::uno::XInterface> x(
aSupportedServiceNames[0] = "com.sun.star.document.GraphicObjectResolver"; static_cast<cppu::OWeakObject *>(new SvXMLGraphicImportExportHelper(
aSupportedServiceNames[1] = "com.sun.star.document.BinaryStreamResolver"; GRAPHICHELPER_MODE_WRITE )));
return aSupportedServiceNames; x->acquire();
css::uno::Reference< css::lang::XInitialization > xx(x, css::uno::UNO_QUERY);
if (xx.is())
{
css::uno::Sequence<css::uno::Any> aArgs(
reinterpret_cast<css::uno::Any *>(arguments->elements),
arguments->nElements);
xx->initialize(aArgs);
}
return x.get();
} }
} // namespace svx
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -22,14 +22,6 @@ ...@@ -22,14 +22,6 @@
<implementation name="com.sun.star.comp.Draw.GraphicExporter"> <implementation name="com.sun.star.comp.Draw.GraphicExporter">
<service name="com.sun.star.drawing.GraphicExportFilter"/> <service name="com.sun.star.drawing.GraphicExportFilter"/>
</implementation> </implementation>
<implementation name="com.sun.star.comp.Svx.GraphicExportHelper">
<service name="com.sun.star.document.BinaryStreamResolver"/>
<service name="com.sun.star.document.GraphicObjectResolver"/>
</implementation>
<implementation name="com.sun.star.comp.Svx.GraphicImportHelper">
<service name="com.sun.star.document.BinaryStreamResolver"/>
<service name="com.sun.star.document.GraphicObjectResolver"/>
</implementation>
<implementation name="com.sun.star.comp.gallery.GalleryThemeProvider"> <implementation name="com.sun.star.comp.gallery.GalleryThemeProvider">
<service name="com.sun.star.gallery.GalleryThemeProvider"/> <service name="com.sun.star.gallery.GalleryThemeProvider"/>
</implementation> </implementation>
......
...@@ -36,4 +36,14 @@ ...@@ -36,4 +36,14 @@
<implementation name="com.sun.star.comp.svx.FontworkCharacterSpacingController"> <implementation name="com.sun.star.comp.svx.FontworkCharacterSpacingController">
<service name="com.sun.star.frame.ToolbarController"/> <service name="com.sun.star.frame.ToolbarController"/>
</implementation> </implementation>
<implementation name="com.sun.star.comp.Svx.GraphicExportHelper"
constructor="com_sun_star_comp_Svx_GraphicExportHelper_implementation_getFactory">
<service name="com.sun.star.document.BinaryStreamResolver"/>
<service name="com.sun.star.document.GraphicObjectResolver"/>
</implementation>
<implementation name="com.sun.star.comp.Svx.GraphicImportHelper"
constructor="com_sun_star_comp_Svx_GraphicImportHelper_implementation_getFactory">
<service name="com.sun.star.document.BinaryStreamResolver"/>
<service name="com.sun.star.document.GraphicObjectResolver"/>
</implementation>
</component> </component>
...@@ -71,6 +71,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_ooxmlexport,\ ...@@ -71,6 +71,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_ooxmlexport,\
svl/source/fsstor/fsstorage \ svl/source/fsstor/fsstorage \
svtools/util/svt \ svtools/util/svt \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
...@@ -72,6 +72,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_ooxmlimport,\ ...@@ -72,6 +72,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_ooxmlimport,\
svl/util/svl \ svl/util/svl \
svtools/util/svt \ svtools/util/svt \
svx/util/svx \ svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \ toolkit/util/tk \
ucb/source/core/ucb1 \ ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment