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,\
svl/util/svl \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
......
......@@ -110,6 +110,7 @@ $(eval $(call gb_CppunitTest_use_components,chart2_import,\
svl/util/svl \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
......
......@@ -31,19 +31,12 @@
#include <com/sun/star/embed/XStorage.hpp>
#include <svx/svxdllapi.h>
// ----------------------
// - SvXMLGraphicHelper -
// ----------------------
enum SvXMLGraphicHelperMode
{
GRAPHICHELPER_MODE_READ = 0,
GRAPHICHELPER_MODE_WRITE = 1
};
// ----------------------
// - SvXMLGraphicHelper -
// ----------------------
struct SvxGraphicHelperStream_Impl
{
::com::sun::star::uno::Reference < ::com::sun::star::embed::XStorage > xStorage;
......@@ -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);
};
// 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
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -96,6 +96,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_chart_regression_test,\
svl/source/fsstor/fsstorage \
svl/util/svl \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
......
......@@ -100,6 +100,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_filters_test,\
sot/util/sot \
svl/util/svl \
svx/util/svx \
svx/util/svxcore \
svtools/util/svt \
toolkit/util/tk \
ucb/source/core/ucb1 \
......
......@@ -97,6 +97,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_macros_test,\
svl/source/fsstor/fsstorage \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
......
......@@ -96,6 +96,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_opencl_test,\
sot/util/sot \
svl/util/svl \
svx/util/svx \
svx/util/svxcore \
svtools/util/svt \
toolkit/util/tk \
ucb/source/core/ucb1 \
......
......@@ -110,6 +110,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_rangelst_test,\
svl/source/fsstor/fsstorage \
svl/util/svl \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
......
......@@ -27,7 +27,6 @@
#include <svx/xtable.hxx>
#include "svx/unoshcol.hxx"
#include "recoveryui.hxx"
#include "svx/xmlgrhlp.hxx"
#include "tbunocontroller.hxx"
#include "tbunosearchcontrollers.hxx"
......@@ -348,22 +347,6 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL svx_component_getFactory (
drawinglayer::primitive2d::XPrimitiveFactory2DProvider_createInstance,
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())
{
......
......@@ -54,6 +54,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 +348,8 @@ const GraphicObject& SvXMLGraphicOutputStream::GetGraphicObject()
return maGrfObj;
}
}
SvXMLGraphicHelper::SvXMLGraphicHelper( SvXMLGraphicHelperMode eCreateMode ) :
::cppu::WeakComponentImplHelper2< ::com::sun::star::document::XGraphicObjectResolver,
::com::sun::star::document::XBinaryStreamResolver >( maMutex )
......@@ -885,8 +889,7 @@ OUString SAL_CALL SvXMLGraphicHelper::resolveOutputStream( const Reference< XOut
}
// for instantiation via service manager
namespace svx
{
namespace {
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 )
......@@ -1026,25 +1029,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 );
......@@ -1053,27 +1037,71 @@ 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);
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
Sequence< OUString > aSupportedServiceNames( 2 );
aSupportedServiceNames[0] = "com.sun.star.document.GraphicObjectResolver";
aSupportedServiceNames[1] = "com.sun.star.document.BinaryStreamResolver";
return aSupportedServiceNames;
assert(arguments != 0);
css::uno::Reference<css::uno::XInterface> x(
static_cast<cppu::OWeakObject *>(new SvXMLGraphicImportExportHelper(
GRAPHICHELPER_MODE_WRITE )));
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: */
......@@ -22,14 +22,6 @@
<implementation name="com.sun.star.comp.Draw.GraphicExporter">
<service name="com.sun.star.drawing.GraphicExportFilter"/>
</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">
<service name="com.sun.star.gallery.GalleryThemeProvider"/>
</implementation>
......
......@@ -36,4 +36,14 @@
<implementation name="com.sun.star.comp.svx.FontworkCharacterSpacingController">
<service name="com.sun.star.frame.ToolbarController"/>
</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>
......@@ -71,6 +71,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_ooxmlexport,\
svl/source/fsstor/fsstorage \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
......
......@@ -72,6 +72,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_ooxmlimport,\
svl/util/svl \
svtools/util/svt \
svx/util/svx \
svx/util/svxcore \
toolkit/util/tk \
ucb/source/core/ucb1 \
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