diff options
Diffstat (limited to 'canvas/inc/canvas/base/canvascustomspritebase.hxx')
-rw-r--r-- | canvas/inc/canvas/base/canvascustomspritebase.hxx | 280 |
1 files changed, 0 insertions, 280 deletions
diff --git a/canvas/inc/canvas/base/canvascustomspritebase.hxx b/canvas/inc/canvas/base/canvascustomspritebase.hxx deleted file mode 100644 index ecae3e76c8..0000000000 --- a/canvas/inc/canvas/base/canvascustomspritebase.hxx +++ /dev/null @@ -1,280 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_CANVAS_CANVASCUSTOMSPRITEBASE_HXX -#define INCLUDED_CANVAS_CANVASCUSTOMSPRITEBASE_HXX - -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/rendering/XCustomSprite.hpp> -#include <com/sun/star/rendering/XPolyPolygon2D.hpp> -#include <basegfx/point/b2dpoint.hxx> -#include <basegfx/vector/b2dvector.hxx> -#include <basegfx/range/b2drange.hxx> -#include <canvas/base/integerbitmapbase.hxx> -#include <canvas/base/sprite.hxx> - -#include <boost/utility.hpp> - - -namespace canvas -{ - /** Helper template to handle XCustomSprite method forwarding to - CanvasCustomSpriteHelper - - Use this helper to handle the XCustomSprite part of your - implementation. - - @tpl Base - Base class to use, most probably one of the - WeakComponentImplHelperN templates with the appropriate - interfaces. At least XCustomSprite and Sprite should be among - them (why else would you use this template, then?). Base class - must have an Base( const Mutex& ) constructor (like the - WeakComponentImplHelperN templates have). - - @tpl SpriteHelper - Sprite helper implementation for the backend in question - - @tpl CanvasHelper - Canvas helper implementation for the backend in question - - @tpl Mutex - Lock strategy to use. Defaults to using the - OBaseMutex-provided lock. Everytime one of the methods is - entered, an object of type Mutex is created with m_aMutex as - the sole parameter, and destroyed again when the method scope - is left. - - @tpl UnambiguousBase - Optional unambiguous base class for XInterface of Base. It's - sometimes necessary to specify this parameter, e.g. if Base - derives from multiple UNO interface (were each provides its - own version of XInterface, making the conversion ambiguous) - - @see CanvasCustomSpriteHelper for further contractual - requirements towards the SpriteHelper type, and some examples. - */ - template< class Base, - class SpriteHelper, - class CanvasHelper, - class Mutex=::osl::MutexGuard, - class UnambiguousBase=::com::sun::star::uno::XInterface > class CanvasCustomSpriteBase : - public IntegerBitmapBase< Base, CanvasHelper, Mutex, UnambiguousBase > - { - public: - typedef IntegerBitmapBase< Base, CanvasHelper, Mutex, UnambiguousBase > BaseType; - typedef SpriteHelper SpriteHelperType; - - CanvasCustomSpriteBase() : - maSpriteHelper() - { - } - - /** Object is being disposed. - - Called from the cppu helper base, to notify disposal of - this object. Already releases all internal references. - - @derive when overriding this method in derived classes, - <em>always</em> call the base class' method! - */ - virtual void disposeThis() - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.disposing(); - - // pass on to base class - BaseType::disposeThis(); - } - - // XCanvas: selectively override base's methods here, for opacity tracking - virtual void SAL_CALL clear() throw (::com::sun::star::uno::RuntimeException) - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.clearingContent( this ); - - // and forward to base class, which handles the actual rendering - return BaseType::clear(); - } - - virtual ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive > SAL_CALL - drawBitmap( const ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XBitmap >& xBitmap, - const ::com::sun::star::rendering::ViewState& viewState, - const ::com::sun::star::rendering::RenderState& renderState ) throw (::com::sun::star::lang::IllegalArgumentException, - ::com::sun::star::uno::RuntimeException) - { - tools::verifyArgs(xBitmap, viewState, renderState, - BOOST_CURRENT_FUNCTION, - static_cast< typename BaseType::UnambiguousBaseType* >(this)); - - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.checkDrawBitmap( this, xBitmap, viewState, renderState ); - - // and forward to base class, which handles the actual rendering - return BaseType::drawBitmap( xBitmap, - viewState, - renderState ); - } - - // TODO(F3): If somebody uses the XIntegerBitmap methods to - // clear pixel (setting alpha != 1.0 there), or a compositing - // mode results in similar alpha, maSpriteHelper might - // errorneously report fully opaque sprites. Effectively, all - // render methods must be overridden here; or better, - // functionality provided at the baseclass. - - // XSprite - virtual void SAL_CALL setAlpha( double alpha ) throw (::com::sun::star::lang::IllegalArgumentException, - ::com::sun::star::uno::RuntimeException) - { - tools::verifyRange( alpha, 0.0, 1.0 ); - - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.setAlpha( this, alpha ); - } - - virtual void SAL_CALL move( const ::com::sun::star::geometry::RealPoint2D& aNewPos, - const ::com::sun::star::rendering::ViewState& viewState, - const ::com::sun::star::rendering::RenderState& renderState ) throw (::com::sun::star::lang::IllegalArgumentException, - ::com::sun::star::uno::RuntimeException) - { - tools::verifyArgs(aNewPos, viewState, renderState, - BOOST_CURRENT_FUNCTION, - static_cast< typename BaseType::UnambiguousBaseType* >(this)); - - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.move( this, aNewPos, viewState, renderState ); - } - - virtual void SAL_CALL transform( const ::com::sun::star::geometry::AffineMatrix2D& aTransformation ) throw (::com::sun::star::lang::IllegalArgumentException, - ::com::sun::star::uno::RuntimeException) - { - tools::verifyArgs(aTransformation, - BOOST_CURRENT_FUNCTION, - static_cast< typename BaseType::UnambiguousBaseType* >(this)); - - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.transform( this, aTransformation ); - } - - virtual void SAL_CALL clip( const ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >& aClip ) throw (::com::sun::star::uno::RuntimeException) - { - // NULL xClip explicitely allowed here (to clear clipping) - - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.clip( this, aClip ); - } - - virtual void SAL_CALL setPriority( double nPriority ) throw (::com::sun::star::uno::RuntimeException) - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.setPriority( this, nPriority ); - } - - virtual void SAL_CALL show() throw (::com::sun::star::uno::RuntimeException) - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.show( this ); - } - - virtual void SAL_CALL hide() throw (::com::sun::star::uno::RuntimeException) - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - maSpriteHelper.hide( this ); - } - - // XCustomSprite - virtual ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvas > SAL_CALL - getContentCanvas() throw (::com::sun::star::uno::RuntimeException) - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return this; - } - - // Sprite - virtual bool isAreaUpdateOpaque( const ::basegfx::B2DRange& rUpdateArea ) const - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return maSpriteHelper.isAreaUpdateOpaque( rUpdateArea ); - } - - virtual bool isContentChanged() const - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return BaseType::mbSurfaceDirty; - } - - virtual ::basegfx::B2DPoint getPosPixel() const - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return maSpriteHelper.getPosPixel(); - } - - virtual ::basegfx::B2DVector getSizePixel() const - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return maSpriteHelper.getSizePixel(); - } - - virtual ::basegfx::B2DRange getUpdateArea() const - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return maSpriteHelper.getUpdateArea(); - } - - virtual double getPriority() const - { - typename BaseType::MutexType aGuard( BaseType::m_aMutex ); - - return maSpriteHelper.getPriority(); - } - - protected: - SpriteHelperType maSpriteHelper; - }; -} - -#endif /* INCLUDED_CANVAS_CANVASCUSTOMSPRITEBASE_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |