From cae6c5d896b8b99269ac2f21cc995f9d69219976 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Tue, 14 Jul 2020 14:14:35 +0200 Subject: canvas/directx9: create instances with uno constructors See tdf#74608 for motivation. Change-Id: Id8d6ef240ba872f7e93752614cd2d45fc50897ae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98729 Tested-by: Jenkins Reviewed-by: Noel Grandin --- canvas/source/directx/directx9canvas.component | 5 +-- canvas/source/directx/dx_canvas.cxx | 9 +++-- canvas/source/directx/dx_spritecanvas.cxx | 49 ++++++++++++++------------ canvas/source/directx/dx_spritecanvas.hxx | 9 ++++- 4 files changed, 41 insertions(+), 31 deletions(-) (limited to 'canvas') diff --git a/canvas/source/directx/directx9canvas.component b/canvas/source/directx/directx9canvas.component index a515799d24c9..ac75940d2cad 100644 --- a/canvas/source/directx/directx9canvas.component +++ b/canvas/source/directx/directx9canvas.component @@ -18,8 +18,9 @@ --> - + xmlns="http://openoffice.org/2010/uno-components"> + diff --git a/canvas/source/directx/dx_canvas.cxx b/canvas/source/directx/dx_canvas.cxx index 39864b14e77d..1f4f1218beb9 100644 --- a/canvas/source/directx/dx_canvas.cxx +++ b/canvas/source/directx/dx_canvas.cxx @@ -48,11 +48,10 @@ #include "dx_graphicsprovider.hxx" #include "dx_winstuff.hxx" -#define CANVAS_TECH "GDI+" -#define CANVAS_SERVICE_NAME "com.sun.star.rendering.Canvas." CANVAS_TECH -#define CANVAS_IMPLEMENTATION_NAME "com.sun.star.comp.rendering.Canvas." CANVAS_TECH -#define BITMAPCANVAS_SERVICE_NAME "com.sun.star.rendering.BitmapCanvas." CANVAS_TECH -#define BITMAPCANVAS_IMPLEMENTATION_NAME "com.sun.star.comp.rendering.BitmapCanvas." CANVAS_TECH +#define CANVAS_SERVICE_NAME "com.sun.star.rendering.Canvas.GDI+" +#define CANVAS_IMPLEMENTATION_NAME "com.sun.star.comp.rendering.Canvas.GDI+" +#define BITMAPCANVAS_SERVICE_NAME "com.sun.star.rendering.BitmapCanvas.GDI+" +#define BITMAPCANVAS_IMPLEMENTATION_NAME "com.sun.star.comp.rendering.BitmapCanvas.GDI+" using namespace ::com::sun::star; diff --git a/canvas/source/directx/dx_spritecanvas.cxx b/canvas/source/directx/dx_spritecanvas.cxx index e4ef8a5764d6..eb589dfa9344 100644 --- a/canvas/source/directx/dx_spritecanvas.cxx +++ b/canvas/source/directx/dx_spritecanvas.cxx @@ -28,9 +28,7 @@ #include #include #include -#include -#include -#include +#include #include #include #include @@ -41,16 +39,9 @@ #include "dx_spritecanvas.hxx" #include "dx_winstuff.hxx" -#define CANVAS_TECH "DX9" - -#define SPRITECANVAS_SERVICE_NAME "com.sun.star.rendering.SpriteCanvas." CANVAS_TECH -#define SPRITECANVAS_IMPLEMENTATION_NAME "com.sun.star.comp.rendering.SpriteCanvas." CANVAS_TECH - using namespace ::com::sun::star; -namespace sdecl = comphelper::service_decl; - namespace dxcanvas { SpriteCanvas::SpriteCanvas( const uno::Sequence< uno::Any >& aArguments, @@ -151,7 +142,21 @@ namespace dxcanvas OUString SAL_CALL SpriteCanvas::getServiceName( ) { - return SPRITECANVAS_SERVICE_NAME; + return "com.sun.star.rendering.SpriteCanvas.DX9"; + } + + // XServiceInfo + css::uno::Sequence SpriteCanvas::getSupportedServiceNames( ) + { + return { "com.sun.star.rendering.SpriteCanvas.DX9" }; + } + OUString SpriteCanvas::getImplementationName( ) + { + return "com.sun.star.comp.rendering.SpriteCanvas.DX9"; + } + sal_Bool SpriteCanvas::supportsService( const OUString& sServiceName ) + { + return cppu::supportsService(this, sServiceName); } const IDXRenderModuleSharedPtr& SpriteCanvas::getRenderModule() const @@ -180,19 +185,17 @@ namespace dxcanvas return xRet; } - sdecl::class_ > const serviceImpl(&initCanvas); - const sdecl::ServiceDecl dxSpriteCanvasDecl( - serviceImpl, - SPRITECANVAS_IMPLEMENTATION_NAME, - SPRITECANVAS_SERVICE_NAME ); -} + extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* + canvas_directx9_SpriteCanvas_get_implementation( + css::uno::XComponentContext* context, css::uno::Sequence const& args) + { + rtl::Reference xCanvas(new SpriteCanvas(args, context)); + xCanvas->initialize(); + xCanvas->acquire(); + return static_cast(xCanvas.get()); + } -// The C shared lib entry points -extern "C" -SAL_DLLPUBLIC_EXPORT void* directx9canvas_component_getFactory( char const* pImplName, - void*, void* ) -{ - return sdecl::component_getFactoryHelper( pImplName, {&dxcanvas::dxSpriteCanvasDecl} ); } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/canvas/source/directx/dx_spritecanvas.hxx b/canvas/source/directx/dx_spritecanvas.hxx index 22832bccef89..26f62f4e68ba 100644 --- a/canvas/source/directx/dx_spritecanvas.hxx +++ b/canvas/source/directx/dx_spritecanvas.hxx @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -58,7 +59,8 @@ namespace dxcanvas css::awt::XWindowListener, css::util::XUpdatable, css::beans::XPropertySet, - css::lang::XServiceName > WindowGraphicDeviceBase_Base; + css::lang::XServiceName, + css::lang::XServiceInfo> WindowGraphicDeviceBase_Base; typedef ::canvas::BufferedGraphicDeviceBase< ::canvas::DisambiguationHelper< WindowGraphicDeviceBase_Base >, SpriteDeviceHelper, ::osl::MutexGuard, @@ -129,6 +131,11 @@ namespace dxcanvas // XServiceName virtual OUString SAL_CALL getServiceName( ) override; + // XServiceInfo + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames( ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual sal_Bool SAL_CALL supportsService( const OUString& ) override; + /// Retrieve rendermodule object for this Canvas const IDXRenderModuleSharedPtr& getRenderModule() const; -- cgit