INTEGRATION: CWS canvas05 (1.5.56); FILE MERGED

2008/06/09 12:51:48 thb 1.5.56.3: #i88081# Join from CWS impress144 (fixing the dxcanvas crash), extended for the other canvas impls
2008/04/21 07:27:25 thb 1.5.56.2: RESYNC: (1.5-1.6); FILE MERGED
2007/10/01 13:02:02 thb 1.5.56.1: #i78888# #i78925# #i79258# #i79437# Merge from CWS picom
This commit is contained in:
Kurt Zenker 2008-06-24 09:44:25 +00:00
parent adc8db8700
commit b2a95c6918

View File

@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite * OpenOffice.org - a multi-platform office productivity suite
* *
* $RCSfile: null_spritecanvas.cxx,v $ * $RCSfile: null_spritecanvas.cxx,v $
* $Revision: 1.6 $ * $Revision: 1.7 $
* *
* This file is part of OpenOffice.org. * This file is part of OpenOffice.org.
* *
@ -32,6 +32,7 @@
#include "precompiled_canvas.hxx" #include "precompiled_canvas.hxx"
#include <canvas/debug.hxx> #include <canvas/debug.hxx>
#include <tools/diagnose_ex.h>
#include <canvas/verbosetrace.hxx> #include <canvas/verbosetrace.hxx>
#include <canvas/canvastools.hxx> #include <canvas/canvastools.hxx>
@ -61,31 +62,33 @@ namespace nullcanvas
{ {
SpriteCanvas::SpriteCanvas( const uno::Sequence< uno::Any >& aArguments, SpriteCanvas::SpriteCanvas( const uno::Sequence< uno::Any >& aArguments,
const uno::Reference< uno::XComponentContext >& rxContext ) : const uno::Reference< uno::XComponentContext >& rxContext ) :
maArguments(aArguments),
mxComponentContext( rxContext ) mxComponentContext( rxContext )
{ {
// #i64742# Only call initialize when not in probe mode
if( aArguments.getLength() != 0 )
initialize( aArguments );
} }
void SpriteCanvas::initialize( const uno::Sequence< uno::Any >& aArguments ) void SpriteCanvas::initialize()
{ {
// #i64742# Only call initialize when not in probe mode
if( maArguments.getLength() == 0 )
return;
VERBOSE_TRACE( "SpriteCanvas::initialize called" ); VERBOSE_TRACE( "SpriteCanvas::initialize called" );
// At index 1, we expect a system window handle here, // At index 1, we expect a system window handle here,
// containing a pointer to a valid window, on which to output // containing a pointer to a valid window, on which to output
// At index 2, we expect the current window bound rect // At index 2, we expect the current window bound rect
CHECK_AND_THROW( aArguments.getLength() >= 4 && ENSURE_ARG_OR_THROW( maArguments.getLength() >= 4 &&
aArguments[1].getValueTypeClass() == uno::TypeClass_LONG, maArguments[1].getValueTypeClass() == uno::TypeClass_LONG,
"SpriteCanvas::initialize: wrong number of arguments, or wrong types" ); "SpriteCanvas::initialize: wrong number of arguments, or wrong types" );
awt::Rectangle aRect; awt::Rectangle aRect;
aArguments[2] >>= aRect; maArguments[2] >>= aRect;
const ::basegfx::B2ISize aSize(aRect.Width, const ::basegfx::B2ISize aSize(aRect.Width,
aRect.Height); aRect.Height);
sal_Bool bIsFullscreen( sal_False ); sal_Bool bIsFullscreen( sal_False );
aArguments[3] >>= bIsFullscreen; maArguments[3] >>= bIsFullscreen;
// setup helper // setup helper
maDeviceHelper.init( *this, maDeviceHelper.init( *this,
@ -95,6 +98,8 @@ namespace nullcanvas
*this, *this,
aSize, aSize,
false ); false );
maArguments.realloc(0);
} }
void SAL_CALL SpriteCanvas::disposing() void SAL_CALL SpriteCanvas::disposing()
@ -145,15 +150,17 @@ namespace nullcanvas
return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) ); return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) );
} }
static uno::Reference<uno::XInterface> initCanvas( SpriteCanvas* pCanvas )
{
uno::Reference<uno::XInterface> xRet(static_cast<cppu::OWeakObject*>(pCanvas));
pCanvas->initialize();
return xRet;
}
namespace sdecl = comphelper::service_decl; namespace sdecl = comphelper::service_decl;
#if defined (__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ <= 3) sdecl::class_<SpriteCanvas, sdecl::with_args<true> > serviceImpl(&initCanvas);
sdecl::class_<SpriteCanvas, sdecl::with_args<true> > serviceImpl;
const sdecl::ServiceDecl nullCanvasDecl( const sdecl::ServiceDecl nullCanvasDecl(
serviceImpl, serviceImpl,
#else
const sdecl::ServiceDecl nullCanvasDecl(
sdecl::class_<SpriteCanvas, sdecl::with_args<true> >(),
#endif
"com.sun.star.comp.rendering.NullCanvas", "com.sun.star.comp.rendering.NullCanvas",
SERVICE_NAME ); SERVICE_NAME );
} }