summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-02-10 11:37:26 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-02-12 11:57:19 +0100
commit7435040a18eb866be0fa77e71c6b4c626f1ae897 (patch)
tree7de6c3e1f02d3bb67cb41a197ed2124861213151 /include
parented3d1f3e1368f81e928cc1ecc4c127a3d540d96e (diff)
move some canvas/ headers inside the module
Change-Id: Iaa00cff88ad756b7e084cc68fe744d387328180b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88360 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include')
-rw-r--r--include/IwyuFilter_include.yaml8
-rw-r--r--include/canvas/base/basemutexhelper.hxx66
-rw-r--r--include/canvas/base/bitmapcanvasbase.hxx128
-rw-r--r--include/canvas/base/bufferedgraphicdevicebase.hxx261
-rw-r--r--include/canvas/base/cachedprimitivebase.hxx107
-rw-r--r--include/canvas/base/canvasbase.hxx454
-rw-r--r--include/canvas/base/canvascustomspritebase.hxx264
-rw-r--r--include/canvas/base/canvascustomspritehelper.hxx220
-rw-r--r--include/canvas/base/disambiguationhelper.hxx82
-rw-r--r--include/canvas/base/graphicdevicebase.hxx351
-rw-r--r--include/canvas/base/integerbitmapbase.hxx112
-rw-r--r--include/canvas/base/sprite.hxx113
-rw-r--r--include/canvas/base/spritecanvasbase.hxx193
-rw-r--r--include/canvas/base/spritesurface.hxx70
-rw-r--r--include/canvas/parametricpolypolygon.hxx155
-rw-r--r--include/canvas/propertysethelper.hxx146
-rw-r--r--include/canvas/rendering/icolorbuffer.hxx77
-rw-r--r--include/canvas/rendering/irendermodule.hxx136
-rw-r--r--include/canvas/rendering/isurface.hxx72
-rw-r--r--include/canvas/rendering/isurfaceproxy.hxx101
-rw-r--r--include/canvas/rendering/isurfaceproxymanager.hxx69
-rw-r--r--include/canvas/spriteredrawmanager.hxx409
-rw-r--r--include/canvas/vclwrapper.hxx153
-rw-r--r--include/canvas/verifyinput.hxx578
24 files changed, 0 insertions, 4325 deletions
diff --git a/include/IwyuFilter_include.yaml b/include/IwyuFilter_include.yaml
index 998881576742..88ad4981fd0a 100644
--- a/include/IwyuFilter_include.yaml
+++ b/include/IwyuFilter_include.yaml
@@ -481,14 +481,6 @@ blacklist:
- com/sun/star/document/XDocumentEventListener.hpp
# Don't propose hxx -> h change in URE libs
- cppuhelper/interfacecontainer.hxx
- include/canvas/base/cachedprimitivebase.hxx:
- # base class has to be a complete type
- - com/sun/star/rendering/XCachedPrimitive.hpp
- - com/sun/star/lang/XServiceInfo.hpp
- include/canvas/parametricpolypolygon.hxx:
- # base class has to be a complete type
- - com/sun/star/lang/XServiceInfo.hpp
- - com/sun/star/rendering/XParametricPolyPolygon2D.hpp
include/linguistic/hyphdta.hxx:
# base class has to be a complete type
- com/sun/star/linguistic2/XHyphenatedWord.hpp
diff --git a/include/canvas/base/basemutexhelper.hxx b/include/canvas/base/basemutexhelper.hxx
deleted file mode 100644
index d4291a3a0c62..000000000000
--- a/include/canvas/base/basemutexhelper.hxx
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_BASEMUTEXHELPER_HXX
-#define INCLUDED_CANVAS_BASE_BASEMUTEXHELPER_HXX
-
-#include <sal/config.h>
-
-#include <osl/mutex.hxx>
-
-/* Definition of the BaseMutexHelper class */
-
-namespace canvas
-{
- /** Base class, initializing its own baseclass with m_aMutex.
-
- This is necessary to make the CanvasBase, GraphicDeviceBase,
- etc. classes freely combinable - letting them perform this
- initialization would prohibit deriving e.g. CanvasBase from
- GraphicDeviceBase.
- */
- template< class Base > class BaseMutexHelper : public Base
- {
- protected:
- /** Construct BaseMutexHelper
-
- This method is the whole purpose of this template:
- initializing a base class with the provided m_aMutex
- member (the WeakComponentImplHelper templates need that,
- as they require the lifetime of the mutex to extend
- theirs).
- */
- BaseMutexHelper() :
- Base( m_aMutex )
- {
- }
-
- virtual void disposeThis() {}
-
- mutable osl::Mutex m_aMutex;
-
- private:
- virtual void SAL_CALL disposing() override
- { disposeThis(); }
- };
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/bitmapcanvasbase.hxx b/include/canvas/base/bitmapcanvasbase.hxx
deleted file mode 100644
index db4a2b1f75fe..000000000000
--- a/include/canvas/base/bitmapcanvasbase.hxx
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_BITMAPCANVASBASE_HXX
-#define INCLUDED_CANVAS_BASE_BITMAPCANVASBASE_HXX
-
-#include <canvas/base/canvasbase.hxx>
-#include <com/sun/star/geometry/IntegerSize2D.hpp>
-
-namespace com::sun::star::rendering { class XBitmapCanvas; }
-
-namespace canvas
-{
- /** Helper template to handle XBitmapCanvas method forwarding to
- BitmapCanvasHelper
-
- Use this helper to handle the XBitmapCanvas part of your
- implementation.
-
- @tpl Base
- Base class to use, most probably one of the
- WeakComponentImplHelperN templates with the appropriate
- interfaces. At least XBitmapCanvas should be among them (why
- else would you use this template, then?). Base class must have
- a Base( const Mutex& ) constructor (like the
- WeakComponentImplHelperN templates have).
-
- @tpl CanvasHelper
- Canvas helper implementation for the backend in question
-
- @tpl Mutex
- Lock strategy to use. Defaults to using the
- BaseMutex-provided lock. Every time 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 CanvasBase for further contractual requirements towards
- the CanvasHelper type, and some examples.
- */
- template< class Base,
- class CanvasHelper,
- class Mutex=::osl::MutexGuard,
- class UnambiguousBase=css::uno::XInterface > class BitmapCanvasBase :
- public CanvasBase< Base, CanvasHelper, Mutex, UnambiguousBase >
- {
- public:
- typedef CanvasBase< Base, CanvasHelper, Mutex, UnambiguousBase > BaseType;
-
- // XBitmap
- virtual css::geometry::IntegerSize2D SAL_CALL getSize( ) override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maCanvasHelper.getSize();
- }
-
- virtual sal_Bool SAL_CALL hasAlpha( ) override
- {
- return true;
- }
-
- virtual css::uno::Reference< css::rendering::XBitmap > SAL_CALL getScaledBitmap( const css::geometry::RealSize2D& newSize,
- sal_Bool beFast ) override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maCanvasHelper.getScaledBitmap( newSize, beFast );
- }
-
- };
-
- template< class Base,
- class CanvasHelper,
- class Mutex=::osl::MutexGuard,
- class UnambiguousBase = css::uno::XInterface > class BitmapCanvasBase2 :
- public BitmapCanvasBase< Base, CanvasHelper, Mutex, UnambiguousBase >
- {
- typedef BitmapCanvasBase< Base, CanvasHelper, Mutex, UnambiguousBase >
- BaseType;
-
- public:
- // XBitmapCanvas
- virtual void SAL_CALL copyRect( const css::uno::Reference< css::rendering::XBitmapCanvas >& sourceCanvas,
- const css::geometry::RealRectangle2D& sourceRect,
- const css::rendering::ViewState& sourceViewState,
- const css::rendering::RenderState& sourceRenderState,
- const css::geometry::RealRectangle2D& destRect,
- const css::rendering::ViewState& destViewState,
- const css::rendering::RenderState& destRenderState ) override
- {
- tools::verifyArgs(sourceCanvas, sourceRect, sourceViewState, sourceRenderState,
- destRect, destViewState, destRenderState,
- OSL_THIS_FUNC,
- static_cast< typename BaseType::UnambiguousBaseType* >(this));
-
- typename BaseType::BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- BaseType::BaseType::mbSurfaceDirty = true;
- }
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_BITMAPCANVASBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/bufferedgraphicdevicebase.hxx b/include/canvas/base/bufferedgraphicdevicebase.hxx
deleted file mode 100644
index f3d77d3e9fec..000000000000
--- a/include/canvas/base/bufferedgraphicdevicebase.hxx
+++ /dev/null
@@ -1,261 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_BUFFEREDGRAPHICDEVICEBASE_HXX
-#define INCLUDED_CANVAS_BASE_BUFFEREDGRAPHICDEVICEBASE_HXX
-
-#include <com/sun/star/awt/XWindow2.hpp>
-
-#include <canvas/canvastools.hxx>
-#include <canvas/base/graphicdevicebase.hxx>
-
-namespace com::sun::star::awt { class XTopWindow; }
-
-
-/* Definition of BufferedGraphicDeviceBase class */
-
-namespace canvas
-{
- /** Helper template base class for XGraphicDevice implementations
- on windows.
-
- Use this base class if your target device is a
- window. Additionally to GraphicDeviceBase, this template
- provides an implementation of the awt::XWindowListener
- interface, to receive notifications about state changes of the
- associated window.
-
- @tpl Base
- Base class to use, most probably one of the
- WeakComponentImplHelperN templates with the appropriate
- interfaces. At least XGraphicDevice 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). As the very least,
- the base class must be derived from uno::XInterface, as some
- error reporting mechanisms rely on that.
-
- @tpl DeviceHelper
- Device helper implementation for the backend in question. This
- object will be held as a member of this template class, and
- basically gets forwarded all XGraphicDevice API calls that
- could not be handled generically.
-
- @tpl Mutex
- Lock strategy to use. Defaults to using the
- BaseMutex-provided lock. Every time 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)
- */
- template< class Base,
- class DeviceHelper,
- class Mutex=::osl::MutexGuard,
- class UnambiguousBase = css::uno::XInterface > class BufferedGraphicDeviceBase :
- public GraphicDeviceBase< Base, DeviceHelper, Mutex, UnambiguousBase >
- {
- public:
- typedef GraphicDeviceBase< Base, DeviceHelper, Mutex, UnambiguousBase > BaseType;
- typedef Mutex MutexType;
-
- BufferedGraphicDeviceBase() :
- mxWindow(),
- maBounds(),
- mbIsVisible( false ),
- mbIsTopLevel( false )
- {
- BaseType::maPropHelper.addProperties(
- PropertySetHelper::MakeMap("Window",
- [this] () { return this->getXWindow(); }));
- }
-
- // XGraphicDevice
- virtual css::uno::Reference< css::rendering::XBufferController > SAL_CALL getBufferController( ) override
- {
- return this;
- }
-
- // XBufferController
- virtual ::sal_Int32 SAL_CALL createBuffers( ::sal_Int32 nBuffers ) override
- {
- tools::verifyRange( nBuffers, sal_Int32(1) );
-
- return 1;
- }
-
- virtual void SAL_CALL destroyBuffers( ) override
- {
- }
-
- virtual sal_Bool SAL_CALL showBuffer( sal_Bool bUpdateAll ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maDeviceHelper.showBuffer( mbIsVisible, bUpdateAll );
- }
-
- virtual sal_Bool SAL_CALL switchBuffer( sal_Bool bUpdateAll ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maDeviceHelper.switchBuffer( mbIsVisible, bUpdateAll );
- }
-
-
- /** Set corresponding canvas window
-
- Use this method to set the window this canvas displays
- on. Comes in handy when the canvas needs to adapt size or
- output position to the changing window.
-
- Whenever the bounds of the window change, <code>void
- notifySizeUpdate( const awt::Rectangle& rBounds )</code>
- is called, with rBounds the window bound rect relative to
- the frame window.
- */
- void setWindow( const css::uno::Reference< css::awt::XWindow2 >& rWindow )
- {
- if( mxWindow.is() )
- mxWindow->removeWindowListener( this );
-
- mxWindow = rWindow;
-
- if( mxWindow.is() )
- {
- mbIsVisible = mxWindow->isVisible();
- mbIsTopLevel =
- css::uno::Reference< css::awt::XTopWindow >(
- mxWindow,
- css::uno::UNO_QUERY ).is();
-
- maBounds = transformBounds( mxWindow->getPosSize() );
- mxWindow->addWindowListener( this );
- }
- }
-
- css::uno::Any getXWindow() const
- {
- return css::uno::makeAny(mxWindow);
- }
-
- virtual void disposeThis() override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- if( mxWindow.is() )
- {
- mxWindow->removeWindowListener(this);
- mxWindow.clear();
- }
-
- // pass on to base class
- BaseType::disposeThis();
- }
-
- css::awt::Rectangle transformBounds( const css::awt::Rectangle& rBounds )
- {
- // notifySizeUpdate's bounds are relative to the toplevel
- // window
- if( !mbIsTopLevel )
- return tools::getAbsoluteWindowRect(
- rBounds,
- mxWindow );
- else
- return css::awt::Rectangle( 0,0,rBounds.Width,rBounds.Height );
- }
-
- void boundsChanged( const css::awt::WindowEvent& e )
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- const css::awt::Rectangle& rNewBounds(
- transformBounds( css::awt::Rectangle( e.X,
- e.Y,
- e.Width,
- e.Height )));
-
- if( rNewBounds.X != maBounds.X ||
- rNewBounds.Y != maBounds.Y ||
- rNewBounds.Width != maBounds.Width ||
- rNewBounds.Height != maBounds.Height )
- {
- maBounds = rNewBounds;
- BaseType::maDeviceHelper.notifySizeUpdate( maBounds );
- }
- }
-
- // XWindowListener
- virtual void disposeEventSource( const css::lang::EventObject& Source ) override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- if( Source.Source == mxWindow )
- mxWindow.clear();
-
- BaseType::disposeEventSource(Source);
- }
-
- virtual void SAL_CALL windowResized( const css::awt::WindowEvent& e ) override
- {
- boundsChanged( e );
- }
-
- virtual void SAL_CALL windowMoved( const css::awt::WindowEvent& e ) override
- {
- boundsChanged( e );
- }
-
- virtual void SAL_CALL windowShown( const css::lang::EventObject& ) override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- mbIsVisible = true;
- }
-
- virtual void SAL_CALL windowHidden( const css::lang::EventObject& ) override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- mbIsVisible = false;
- }
-
- protected:
- css::uno::Reference< css::awt::XWindow2 > mxWindow;
-
- /// Current bounds of the owning Window
- css::awt::Rectangle maBounds;
-
- /// True, if the window this canvas is contained in, is visible
- bool mbIsVisible;
-
- private:
- /// True, if the window this canvas is contained in, is a toplevel window
- bool mbIsTopLevel;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_BUFFEREDGRAPHICDEVICEBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/cachedprimitivebase.hxx b/include/canvas/base/cachedprimitivebase.hxx
deleted file mode 100644
index 3897aecf6c29..000000000000
--- a/include/canvas/base/cachedprimitivebase.hxx
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_CACHEDPRIMITIVEBASE_HXX
-#define INCLUDED_CANVAS_BASE_CACHEDPRIMITIVEBASE_HXX
-
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/rendering/XCachedPrimitive.hpp>
-#include <com/sun/star/rendering/ViewState.hpp>
-#include <cppuhelper/compbase.hxx>
-#include <cppuhelper/basemutex.hxx>
-
-#include <canvas/canvastoolsdllapi.h>
-
-namespace com::sun::star::rendering { class XCanvas; }
-
-/* Definition of CachedPrimitiveBase class */
-
-namespace canvas
-{
- typedef cppu::WeakComponentImplHelper< css::rendering::XCachedPrimitive,
- css::lang::XServiceInfo > CachedPrimitiveBase_Base;
-
- /** Base class, providing common functionality for implementers of
- the XCachedPrimitive interface.
- */
- class CANVASTOOLS_DLLPUBLIC CachedPrimitiveBase:
- public cppu::BaseMutex, public CachedPrimitiveBase_Base
- {
- public:
-
- /** Create an XCachedPrimitive for given target canvas
-
- @param rUsedViewState
- The viewstate the original object was rendered with
-
- @param rTarget
- The target canvas the repaint should happen on.
- */
- CachedPrimitiveBase( const css::rendering::ViewState& rUsedViewState,
- const css::uno::Reference< css::rendering::XCanvas >& rTarget );
-
- /// Dispose all internal references
- virtual void SAL_CALL disposing() override;
-
- // XCachedPrimitive
- virtual ::sal_Int8 SAL_CALL redraw( const css::rendering::ViewState& aState ) override;
-
- // XServiceInfo
- virtual OUString SAL_CALL getImplementationName( ) override;
- virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
- virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
-
- protected:
- virtual ~CachedPrimitiveBase() override; // we're a ref-counted UNO class. _We_ destroy ourselves.
-
- private:
- CachedPrimitiveBase( const CachedPrimitiveBase& ) = delete;
- CachedPrimitiveBase& operator=( const CachedPrimitiveBase& ) = delete;
-
- /** Actually perform the requested redraw.
-
- Clients must override this method, instead of the public
- redraw() one.
-
- @param rNewState
- The viewstate to redraw with
-
- @param rOldState
- The viewstate this cache object was created with.
-
- @param rTargetCanvas
- Target canvas to render to.
-
- @param bSameViewTransform
- When true, rNewState and rOldState have the same transformation.
- */
- virtual ::sal_Int8 doRedraw( const css::rendering::ViewState& rNewState,
- const css::rendering::ViewState& rOldState,
- const css::uno::Reference< css::rendering::XCanvas >& rTargetCanvas,
- bool bSameViewTransform ) = 0;
-
- css::rendering::ViewState maUsedViewState;
- css::uno::Reference< css::rendering::XCanvas > mxTarget;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_CACHEDPRIMITIVEBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/canvasbase.hxx b/include/canvas/base/canvasbase.hxx
deleted file mode 100644
index 371b234b5ca1..000000000000
--- a/include/canvas/base/canvasbase.hxx
+++ /dev/null
@@ -1,454 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_CANVASBASE_HXX
-#define INCLUDED_CANVAS_BASE_CANVASBASE_HXX
-
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/rendering/TextDirection.hpp>
-#include <osl/diagnose.h>
-#include <osl/mutex.hxx>
-#include <canvas/verifyinput.hxx>
-
-namespace com::sun::star::beans { struct PropertyValue; }
-namespace com::sun::star::geometry { class XMapping2D; }
-namespace com::sun::star::rendering { class XBitmap; }
-namespace com::sun::star::rendering { class XCachedPrimitive; }
-namespace com::sun::star::rendering { class XCanvasFont; }
-namespace com::sun::star::rendering { class XGraphicDevice; }
-namespace com::sun::star::rendering { class XPolyPolygon2D; }
-namespace com::sun::star::rendering { class XTextLayout; }
-namespace com::sun::star::rendering { struct FontInfo; }
-namespace com::sun::star::rendering { struct StringContext; }
-
-
-namespace canvas
-{
- /** Helper template to handle XCanvas method forwarding to CanvasHelper
-
- Use this helper to handle the XCanvas part of your
- implementation. In theory, we could have provided CanvasHelper
- and CanvasBase as a single template, but that would duplicate
- a lot of code now residing in CanvasHelper only.
-
- This template basically interposes itself between the full
- interface you implement (i.e. not restricted to XCanvas. The
- problem with UNO partial interface implementation actually is,
- that you cannot do it the plain way, since deriving from a
- common base subclass always introduces the whole set of pure
- virtuals, that your baseclass helper just overridden) and your
- implementation class. You then only have to implement the
- functionality <em>besides</em> XCanvas.
-
- <pre>
- Example:
- typedef ::cppu::WeakComponentImplHelper < css::rendering::XSpriteCanvas,
- css::lang::XInitialization,
- css::lang::XServiceInfo,
- css::lang::XServiceName > CanvasBase_Base;
- typedef ::canvas::internal::CanvasBase< CanvasBase_Base, CanvasHelper > ExampleCanvas_Base;
-
- class ExampleCanvas : public ExampleCanvas_Base,
- public SpriteSurface,
- public RepaintTarget
- {
- };
- </pre>
-
- @tpl Base
- Base class to use, most probably the
- WeakComponentImplHelper template with the appropriate
- interfaces. At least XCanvas should be among them (why else
- would you use this template, then?). Base class must have an
- Base( const Mutex& ) constructor (like the
- WeakComponentImplHelper template has). As the very least,
- the base class must be derived from uno::XInterface, as some
- error reporting mechanisms rely on that.
-
- @tpl CanvasHelper
- Canvas helper implementation for the backend in question. This
- object will be held as a member of this template class, and
- basically gets forwarded all XCanvas API calls. Furthermore,
- every time the canvas API semantically changes the content of
- the canvas, CanvasHelper::modifying() will get called
- (<em>before</em> the actual modification takes place).
-
- @tpl Mutex
- Lock strategy to use. Defaults to using the
- BaseMutex-provided lock. Every time 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)
- */
- template< class Base,
- class CanvasHelper,
- class Mutex=::osl::MutexGuard,
- class UnambiguousBase=css::uno::XInterface > class CanvasBase :
- public Base
- {
- public:
- typedef Base BaseType;
- typedef Mutex MutexType;
- typedef UnambiguousBase UnambiguousBaseType;
-
- /** Create CanvasBase
- */
- CanvasBase() :
- maCanvasHelper(),
- mbSurfaceDirty( true )
- {
- }
-
- virtual void disposeThis() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- maCanvasHelper.disposing();
-
- // pass on to base class
- BaseType::disposeThis();
- }
-
- // XCanvas
- virtual void SAL_CALL clear() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- maCanvasHelper.clear();
- }
-
- virtual void SAL_CALL drawPoint(const css::geometry::RealPoint2D& aPoint,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState) override
- {
- tools::verifyArgs(aPoint, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
- }
-
- virtual void SAL_CALL drawLine(const css::geometry::RealPoint2D& aStartPoint,
- const css::geometry::RealPoint2D& aEndPoint,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState) override
- {
- tools::verifyArgs(aStartPoint, aEndPoint, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- maCanvasHelper.drawLine( this, aStartPoint, aEndPoint, viewState, renderState );
- }
-
- virtual void SAL_CALL drawBezier( const css::geometry::RealBezierSegment2D& aBezierSegment,
- const css::geometry::RealPoint2D& aEndPoint,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState ) override
- {
- tools::verifyArgs(aBezierSegment, aEndPoint, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- maCanvasHelper.drawBezier( this, aBezierSegment, aEndPoint, viewState, renderState );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- drawPolyPolygon(const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.drawPolyPolygon( this, xPolyPolygon, viewState, renderState );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- strokePolyPolygon(const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- const css::rendering::StrokeAttributes& strokeAttributes) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState, strokeAttributes,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.strokePolyPolygon( this, xPolyPolygon, viewState, renderState, strokeAttributes );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- strokeTexturedPolyPolygon( const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- const css::uno::Sequence< css::rendering::Texture >& textures,
- const css::rendering::StrokeAttributes& strokeAttributes ) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState, strokeAttributes,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.strokeTexturedPolyPolygon( this, xPolyPolygon, viewState, renderState, textures, strokeAttributes );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- strokeTextureMappedPolyPolygon( const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- const css::uno::Sequence< css::rendering::Texture >& textures,
- const css::uno::Reference< css::geometry::XMapping2D >& xMapping,
- const css::rendering::StrokeAttributes& strokeAttributes ) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState, textures, xMapping, strokeAttributes,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.strokeTextureMappedPolyPolygon( this, xPolyPolygon, viewState, renderState, textures, xMapping, strokeAttributes );
- }
-
- virtual css::uno::Reference< css::rendering::XPolyPolygon2D > SAL_CALL
- queryStrokeShapes( const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- const css::rendering::StrokeAttributes& strokeAttributes ) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState, strokeAttributes,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.queryStrokeShapes( this, xPolyPolygon, viewState, renderState, strokeAttributes );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- fillPolyPolygon(const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.fillPolyPolygon( this, xPolyPolygon, viewState, renderState );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- fillTexturedPolyPolygon(const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- const css::uno::Sequence< css::rendering::Texture >& textures) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState, textures,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.fillTexturedPolyPolygon( this, xPolyPolygon, viewState, renderState, textures );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- fillTextureMappedPolyPolygon( const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- const css::uno::Sequence< css::rendering::Texture >& textures,
- const css::uno::Reference< css::geometry::XMapping2D >& xMapping ) override
- {
- tools::verifyArgs(xPolyPolygon, viewState, renderState, textures, xMapping,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.fillTextureMappedPolyPolygon( this, xPolyPolygon, viewState, renderState, textures, xMapping );
- }
-
-
- virtual css::uno::Reference< css::rendering::XCanvasFont > SAL_CALL
- createFont( const css::rendering::FontRequest& fontRequest,
- const css::uno::Sequence< css::beans::PropertyValue >& extraFontProperties,
- const css::geometry::Matrix2D& fontMatrix ) override
- {
- tools::verifyArgs(fontRequest,
- // dummy, to keep argPos in sync
- fontRequest,
- fontMatrix,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- return maCanvasHelper.createFont( this, fontRequest, extraFontProperties, fontMatrix );
- }
-
-
- virtual css::uno::Sequence< css::rendering::FontInfo > SAL_CALL
- queryAvailableFonts( const css::rendering::FontInfo& aFilter,
- const css::uno::Sequence< css::beans::PropertyValue >& aFontProperties ) override
- {
- tools::verifyArgs(aFilter,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- return maCanvasHelper.queryAvailableFonts( this, aFilter, aFontProperties );
- }
-
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- drawText(const css::rendering::StringContext& text,
- const css::uno::Reference< css::rendering::XCanvasFont >& xFont,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState,
- sal_Int8 textDirection) override
- {
- tools::verifyArgs(xFont, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
- tools::verifyRange( textDirection,
- css::rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
- css::rendering::TextDirection::STRONG_RIGHT_TO_LEFT );
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.drawText( this, text, xFont, viewState, renderState, textDirection );
- }
-
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- drawTextLayout(const css::uno::Reference< css::rendering::XTextLayout >& laidOutText,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState) override
- {
- tools::verifyArgs(laidOutText, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.drawTextLayout( this, laidOutText, viewState, renderState );
- }
-
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- drawBitmap( const css::uno::Reference< css::rendering::XBitmap >& xBitmap,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState ) override
- {
- tools::verifyArgs(xBitmap, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.drawBitmap( this, xBitmap, viewState, renderState );
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- drawBitmapModulated( const css::uno::Reference< css::rendering::XBitmap >& xBitmap,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState ) override
- {
- tools::verifyArgs(xBitmap, viewState, renderState,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- mbSurfaceDirty = true;
-
- return maCanvasHelper.drawBitmapModulated( this, xBitmap, viewState, renderState );
- }
-
- virtual css::uno::Reference< css::rendering::XGraphicDevice > SAL_CALL
- getDevice() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return maCanvasHelper.getDevice();
- }
-
- protected:
- ~CanvasBase() {} // we're a ref-counted UNO class. _We_ destroy ourselves.
-
- CanvasHelper maCanvasHelper;
- mutable bool mbSurfaceDirty;
-
- private:
- CanvasBase( const CanvasBase& ) = delete;
- CanvasBase& operator=( const CanvasBase& ) = delete;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_CANVASBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/canvascustomspritebase.hxx b/include/canvas/base/canvascustomspritebase.hxx
deleted file mode 100644
index f67a7849f69c..000000000000
--- a/include/canvas/base/canvascustomspritebase.hxx
+++ /dev/null
@@ -1,264 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_CANVASCUSTOMSPRITEBASE_HXX
-#define INCLUDED_CANVAS_BASE_CANVASCUSTOMSPRITEBASE_HXX
-
-#include <com/sun/star/rendering/XCanvas.hpp>
-
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <canvas/base/integerbitmapbase.hxx>
-#include <canvas/base/bitmapcanvasbase.hxx>
-
-namespace com::sun::star::rendering { class XPolyPolygon2D; }
-
-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 a 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
- BaseMutex-provided lock. Every time 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 = css::uno::XInterface > class CanvasCustomSpriteBase :
- public IntegerBitmapBase< BitmapCanvasBase2<Base, CanvasHelper, Mutex, UnambiguousBase> >
- {
- public:
- typedef IntegerBitmapBase< BitmapCanvasBase2<Base, CanvasHelper, Mutex, UnambiguousBase> > BaseType;
-
- 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() override
- {
- 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() override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.clearingContent( this );
-
- // and forward to base class, which handles the actual rendering
- return BaseType::clear();
- }
-
- virtual css::uno::Reference< css::rendering::XCachedPrimitive > SAL_CALL
- drawBitmap( const css::uno::Reference< css::rendering::XBitmap >& xBitmap,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState ) override
- {
- tools::verifyArgs(xBitmap, viewState, renderState,
- OSL_THIS_FUNC,
- 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
- // erroneously 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 ) override
- {
- tools::verifyRange( alpha, 0.0, 1.0 );
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.setAlpha( this, alpha );
- }
-
- virtual void SAL_CALL move( const css::geometry::RealPoint2D& aNewPos,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState ) override
- {
- tools::verifyArgs(aNewPos, viewState, renderState,
- OSL_THIS_FUNC,
- 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 css::geometry::AffineMatrix2D& aTransformation ) override
- {
- tools::verifyArgs(aTransformation,
- OSL_THIS_FUNC,
- static_cast< typename BaseType::UnambiguousBaseType* >(this));
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.transform( this, aTransformation );
- }
-
- virtual void SAL_CALL clip( const css::uno::Reference< css::rendering::XPolyPolygon2D >& aClip ) override
- {
- // NULL xClip explicitly allowed here (to clear clipping)
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.clip( this, aClip );
- }
-
- virtual void SAL_CALL setPriority( double nPriority ) override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.setPriority( this, nPriority );
- }
-
- virtual void SAL_CALL show() override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.show( this );
- }
-
- virtual void SAL_CALL hide() override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maSpriteHelper.hide( this );
- }
-
- // XCustomSprite
- virtual css::uno::Reference< css::rendering::XCanvas > SAL_CALL
- getContentCanvas() override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return this;
- }
-
- // Sprite
- virtual bool isAreaUpdateOpaque( const ::basegfx::B2DRange& rUpdateArea ) const override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return maSpriteHelper.isAreaUpdateOpaque( rUpdateArea );
- }
-
- virtual bool isContentChanged() const override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::mbSurfaceDirty;
- }
-
- virtual ::basegfx::B2DPoint getPosPixel() const override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return maSpriteHelper.getPosPixel();
- }
-
- virtual ::basegfx::B2DVector getSizePixel() const override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return maSpriteHelper.getSizePixel();
- }
-
- virtual ::basegfx::B2DRange getUpdateArea() const override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return maSpriteHelper.getUpdateArea();
- }
-
- virtual double getPriority() const override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return maSpriteHelper.getPriority();
- }
-
- protected:
- SpriteHelper maSpriteHelper;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_CANVASCUSTOMSPRITEBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/canvascustomspritehelper.hxx b/include/canvas/base/canvascustomspritehelper.hxx
deleted file mode 100644
index e524a439e454..000000000000
--- a/include/canvas/base/canvascustomspritehelper.hxx
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_CANVASCUSTOMSPRITEHELPER_HXX
-#define INCLUDED_CANVAS_BASE_CANVASCUSTOMSPRITEHELPER_HXX
-
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <canvas/base/spritesurface.hxx>
-#include <canvas/canvastoolsdllapi.h>
-
-namespace com::sun::star::geometry { struct AffineMatrix2D; }
-namespace com::sun::star::geometry { struct RealPoint2D; }
-namespace com::sun::star::geometry { struct RealSize2D; }
-namespace com::sun::star::rendering { class XBitmap; }
-namespace com::sun::star::rendering { class XPolyPolygon2D; }
-namespace com::sun::star::rendering { struct RenderState; }
-namespace com::sun::star::rendering { struct ViewState; }
-
-
-namespace canvas
-{
- /* Definition of CanvasCustomSpriteHelper class */
-
- /** Base class for an XSprite helper implementation - to be used
- in concert with CanvasCustomSpriteBase
- */
- class CANVASTOOLS_DLLPUBLIC CanvasCustomSpriteHelper
- {
- public:
- CanvasCustomSpriteHelper();
- virtual ~CanvasCustomSpriteHelper() {}
-
- /** Init helper
-
- @param rSpriteSize
- Requested size of the sprite, as passed to the
- XSpriteCanvas::createCustomSprite() method
-
- @param rOwningSpriteCanvas
- The XSpriteCanvas this sprite is displayed on
- */
- void init( const css::geometry::RealSize2D& rSpriteSize,
- const SpriteSurface::Reference& rOwningSpriteCanvas );
-
- /** Object is being disposed, release all internal references
-
- @derive when overriding this method in derived classes,
- <em>always</em> call the base class' method!
- */
- void disposing();
-
- // XCanvas
- /// need to call this method for XCanvas::clear(), for opacity tracking
- void clearingContent( const Sprite::Reference& rSprite );
-
- /// need to call this method for XCanvas::drawBitmap(), for opacity tracking
- void checkDrawBitmap( const Sprite::Reference& rSprite,
- const css::uno::Reference< css::rendering::XBitmap >& xBitmap,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState );
-
- // XSprite
- void setAlpha( const Sprite::Reference& rSprite,
- double alpha );
- void move( const Sprite::Reference& rSprite,
- const css::geometry::RealPoint2D& aNewPos,
- const css::rendering::ViewState& viewState,
- const css::rendering::RenderState& renderState );
- void transform( const Sprite::Reference& rSprite,
- const css::geometry::AffineMatrix2D& aTransformation );
- void clip( const Sprite::Reference& rSprite,
- const css::uno::Reference< css::rendering::XPolyPolygon2D >& aClip );
- void setPriority( const Sprite::Reference& rSprite,
- double nPriority );
- void show( const Sprite::Reference& rSprite );
- void hide( const Sprite::Reference& rSprite );
-
- // Sprite
- bool isAreaUpdateOpaque( const ::basegfx::B2DRange& rUpdateArea ) const;
- const ::basegfx::B2DPoint& getPosPixel() const { return maPosition; }
- const ::basegfx::B2DVector& getSizePixel() const { return maSize; }
- ::basegfx::B2DRange getUpdateArea() const;
- double getPriority() const { return mfPriority; }
-
- // redraw must be implemented by derived - non sensible default implementation
- // void redraw( const Sprite::Reference& rSprite,
- // const ::basegfx::B2DPoint& rPos ) const;
-
-
- // Helper methods for derived classes
-
-
- /// Calc sprite update area from given raw sprite bounds
- ::basegfx::B2DRange getUpdateArea( const ::basegfx::B2DRange& rUntransformedSpriteBounds ) const;
-
- /** Returns true, if sprite content bitmap is fully opaque.
-
- This does not take clipping or transformation into
- account, but only denotes that the sprite bitmap's alpha
- channel is all 1.0
- */
- bool isContentFullyOpaque() const { return mbIsContentFullyOpaque; }
-
- /// Returns true, if transformation has changed since last transformUpdated() call
- bool hasTransformChanged() const { return mbTransformDirty; }
-
- /// Retrieve current alpha value
- double getAlpha() const { return mfAlpha; }
-
- /// Retrieve current clip
- const css::uno::Reference<
- css::rendering::XPolyPolygon2D >& getClip() const { return mxClipPoly; }
-
- const ::basegfx::B2DHomMatrix& getTransformation() const { return maTransform; }
-
- /// Retrieve current activation state
- bool isActive() const { return mbActive; }
-
- protected:
- /** Notifies that caller is again in sync with current transformation
-
- const, but modifies state visible to derived
- classes. beware of passing this information to the
- outside!
- */
- void transformUpdated() const { mbTransformDirty=false; }
-
- private:
- CanvasCustomSpriteHelper( const CanvasCustomSpriteHelper& ) = delete;
- CanvasCustomSpriteHelper& operator=( const CanvasCustomSpriteHelper& ) = delete;
-
- /** Called to convert an API polygon to a basegfx polygon
-
- @derive Needs to be provided by backend-specific code
- */
- virtual ::basegfx::B2DPolyPolygon polyPolygonFromXPolyPolygon2D(
- css::uno::Reference< css::rendering::XPolyPolygon2D >& xPoly ) const = 0;
-
- /** Update clip information from current state
-
- This method recomputes the maCurrClipBounds and
- mbIsCurrClipRectangle members from the current clip and
- transformation. IFF the clip changed from rectangular to
- rectangular again, this method issues a sequence of
- optimized SpriteSurface::updateSprite() calls.
-
- @return true, if SpriteSurface::updateSprite() was already
- called within this method.
- */
- bool updateClipState( const Sprite::Reference& rSprite );
-
-
- /// Owning sprite canvas
- SpriteSurface::Reference mpSpriteCanvas;
-
- /** Currently active clip area.
-
- This member is either empty, denoting that the current
- clip shows the full sprite content, or contains a
- rectangular subarea of the sprite, outside of which
- the sprite content is fully clipped.
-
- @see mbIsCurrClipRectangle
- */
- ::basegfx::B2DRange maCurrClipBounds;
-
- // sprite state
- ::basegfx::B2DPoint maPosition;
- ::basegfx::B2DVector maSize;
- ::basegfx::B2DHomMatrix maTransform;
- css::uno::Reference< css::rendering::XPolyPolygon2D > mxClipPoly;
- double mfPriority;
- double mfAlpha;
- bool mbActive; // true, if not hidden
-
- /** If true, denotes that the current sprite clip is a true
- rectangle, i.e. maCurrClipBounds <em>exactly</em>
- describes the visible area of the sprite.
-
- @see maCurrClipBounds
- */
- bool mbIsCurrClipRectangle;
-
- /** Redraw speedup.
-
- When true, this flag denotes that the current sprite
- content is fully opaque, thus, that blits to the screen do
- neither have to take alpha into account, nor prepare any
- background for the sprite area.
- */
- mutable bool mbIsContentFullyOpaque;
-
- /// True, iff maTransform has changed
- mutable bool mbTransformDirty;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_CANVASCUSTOMSPRITEHELPER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/disambiguationhelper.hxx b/include/canvas/base/disambiguationhelper.hxx
deleted file mode 100644
index 4a89d83e3525..000000000000
--- a/include/canvas/base/disambiguationhelper.hxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_DISAMBIGUATIONHELPER_HXX
-#define INCLUDED_CANVAS_BASE_DISAMBIGUATIONHELPER_HXX
-
-#include <com/sun/star/lang/EventObject.hpp>
-#include <osl/mutex.hxx>
-
-
-/* Definition of the DisambiguationHelper class */
-
-namespace canvas
-{
- /** Base class, initializing its own baseclass with m_aMutex.
-
- This is necessary to make the CanvasBase, GraphicDeviceBase,
- etc. classes freely combinable - letting them perform this
- initialization would prohibit deriving e.g. CanvasBase from
- GraphicDeviceBase.
-
- On top of that, disambiguates XEventListener::disposing and
- WeakComponentImplHelper::disposing.
-
- Having two virtual methods with the same name, and not
- overriding them in every derived class, will hide one of
- them. Later trying to override the same method, will generate
- a new vtable slot, and lead to very hard to spot errors.
- */
- template< class Base > class DisambiguationHelper : public Base
- {
- protected:
- /** Construct DisambiguationHelper
-
- This method is the whole purpose of this template:
- initializing a base class with the provided m_aMutex
- member (the WeakComponentImplHelper templates need that,
- as they require the lifetime of the mutex to extend
- theirs).
- */
- DisambiguationHelper() :
- Base( m_aMutex )
- {
- }
-
- virtual void disposeThis()
- {}
- /// @throws css::uno::RuntimeException
- virtual void disposeEventSource( const css::lang::EventObject& )
- {}
-
- mutable ::osl::Mutex m_aMutex;
-
- private:
- virtual void SAL_CALL disposing() override
- { disposeThis(); }
-
- virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override
- { disposeEventSource(Source); }
-
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_DISAMBIGUATIONHELPER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/graphicdevicebase.hxx b/include/canvas/base/graphicdevicebase.hxx
deleted file mode 100644
index 5590178a7d8f..000000000000
--- a/include/canvas/base/graphicdevicebase.hxx
+++ /dev/null
@@ -1,351 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_GRAPHICDEVICEBASE_HXX
-#define INCLUDED_CANVAS_BASE_GRAPHICDEVICEBASE_HXX
-
-#include <com/sun/star/rendering/XBufferController.hpp>
-#include <com/sun/star/rendering/XLinePolyPolygon2D.hpp>
-#include <com/sun/star/rendering/XBezierPolyPolygon2D.hpp>
-#include <com/sun/star/rendering/XBitmap.hpp>
-#include <com/sun/star/rendering/XVolatileBitmap.hpp>
-
-#include <rtl/ref.hxx>
-
-#include <canvas/parametricpolypolygon.hxx>
-#include <canvas/propertysethelper.hxx>
-#include <canvas/verifyinput.hxx>
-
-namespace com::sun::star::beans { class XPropertySetInfo; }
-namespace com::sun::star::lang { class XMultiServiceFactory; }
-namespace com::sun::star::rendering { class XColorSpace; }
-
-
-/* Definition of GraphicDeviceBase class */
-
-namespace canvas
-{
- /** Helper template base class for XGraphicDevice implementations.
-
- This base class provides partial implementations of the
- XGraphicDevice-related interface, such as XColorSpace.
-
- This template basically interposes itself between the full
- interface you implement (i.e. not restricted to XGraphicDevice
- etc.). The problem with UNO partial interface implementation
- actually is, that you cannot do it the plain way, since
- deriving from a common base subclass always introduces the
- whole set of pure virtuals, that your baseclass helper just
- overridden) and your implementation class. You then only have
- to implement the functionality <em>besides</em>
- XGraphicDevice. If you want to support the optional debug
- XUpdatable interface, also add that to the base classes
- (client code will call the corresponding update() method,
- whenever a burst of animations is over).
-
- <pre>
- Example:
- typedef ::cppu::WeakComponentImplHelper < css::rendering::XGraphicDevice,
- css::rendering::XColorSpace,
- css::rendering::XPropertySet,
- css::lang::XServiceInfo,
- css::lang::XServiceName > GraphicDeviceBase_Base;
- typedef ::canvas::internal::GraphicDeviceBase< GraphicDeviceBase, DeviceHelper > ExampleDevice_Base;
-
- class ExampleDevice : public ExampleDevice_Base
- {
- };
- </pre>
-
- @tpl Base
- Base class to use, most probably the
- WeakComponentImplHelper template with the appropriate
- interfaces. At least XGraphicDevice should be among them (why else
- would you use this template, then?). Base class must have an
- Base( const Mutex& ) constructor (like the
- WeakComponentImplHelper template has). As the very least,
- the base class must be derived from uno::XInterface, as some
- error reporting mechanisms rely on that.
-
- @tpl DeviceHelper
- Device helper implementation for the backend in question. This
- object will be held as a member of this template class, and
- basically gets forwarded all XGraphicDevice API calls that
- could not be handled generically.
-
- @tpl Mutex
- Lock strategy to use. Defaults to using the
- DisambiguationHelper-provided lock. Every time 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)
- */
- template< class Base,
- class DeviceHelper,
- class Mutex=::osl::MutexGuard,
- class UnambiguousBase=css::uno::XInterface > class GraphicDeviceBase :
- public Base
- {
- public:
- typedef Base BaseType;
- typedef Mutex MutexType;
- typedef UnambiguousBase UnambiguousBaseType;
-
- typedef ::rtl::Reference< GraphicDeviceBase > Reference;
-
- GraphicDeviceBase() :
- maDeviceHelper(),
- maPropHelper(),
- mbDumpScreenContent(false)
- {
- maPropHelper.initProperties( PropertySetHelper::MakeMap
- ("HardwareAcceleration",
- [this] () { return this->maDeviceHelper.isAccelerated(); } )
- ("DeviceHandle",
- [this] () { return this->maDeviceHelper.getDeviceHandle(); } )
- ("SurfaceHandle",
- [this] () { return this->maDeviceHelper.getSurfaceHandle(); } )
- ("DumpScreenContent",
- [this] () { return this->getDumpScreenContent(); },
- [this] (css::uno::Any const& rAny) { this->setDumpScreenContent(rAny); }));
- }
-
- virtual void disposeThis() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- maDeviceHelper.disposing();
-
- // pass on to base class
- BaseType::disposeThis();
- }
-
- // XGraphicDevice
- virtual css::uno::Reference< css::rendering::XBufferController > SAL_CALL getBufferController( ) override
- {
- return css::uno::Reference< css::rendering::XBufferController >();
- }
-
- virtual css::uno::Reference< css::rendering::XColorSpace > SAL_CALL getDeviceColorSpace( ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.getColorSpace();
- }
-
- virtual css::geometry::RealSize2D SAL_CALL getPhysicalResolution() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.getPhysicalResolution();
- }
-
- virtual css::geometry::RealSize2D SAL_CALL getPhysicalSize() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.getPhysicalSize();
- }
-
- virtual css::uno::Reference< css::rendering::XLinePolyPolygon2D > SAL_CALL createCompatibleLinePolyPolygon( const css::uno::Sequence< css::uno::Sequence< css::geometry::RealPoint2D > >& points ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.createCompatibleLinePolyPolygon( this, points );
- }
-
- virtual css::uno::Reference< css::rendering::XBezierPolyPolygon2D > SAL_CALL createCompatibleBezierPolyPolygon( const css::uno::Sequence< css::uno::Sequence< css::geometry::RealBezierSegment2D > >& points ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.createCompatibleBezierPolyPolygon( this, points );
- }
-
- virtual css::uno::Reference< css::rendering::XBitmap > SAL_CALL createCompatibleBitmap( const css::geometry::IntegerSize2D& size ) override
- {
- tools::verifyBitmapSize(size,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.createCompatibleBitmap( this, size );
- }
-
- virtual css::uno::Reference< css::rendering::XVolatileBitmap > SAL_CALL createVolatileBitmap( const css::geometry::IntegerSize2D& size ) override
- {
- tools::verifyBitmapSize(size,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.createVolatileBitmap( this, size );
- }
-
- virtual css::uno::Reference< css::rendering::XBitmap > SAL_CALL createCompatibleAlphaBitmap( const css::geometry::IntegerSize2D& size ) override
- {
- tools::verifyBitmapSize(size,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.createCompatibleAlphaBitmap( this, size );
- }
-
- virtual css::uno::Reference< css::rendering::XVolatileBitmap > SAL_CALL createVolatileAlphaBitmap( const css::geometry::IntegerSize2D& size ) override
- {
- tools::verifyBitmapSize(size,
- OSL_THIS_FUNC,
- static_cast< UnambiguousBaseType* >(this));
-
- MutexType aGuard( BaseType::m_aMutex );
-
- return maDeviceHelper.createVolatileAlphaBitmap( this, size );
- }
-
- virtual css::uno::Reference< css::lang::XMultiServiceFactory > SAL_CALL getParametricPolyPolygonFactory( ) override
- {
- return this;
- }
-
- virtual sal_Bool SAL_CALL hasFullScreenMode( ) override
- {
- return false;
- }
-
- virtual sal_Bool SAL_CALL enterFullScreenMode( sal_Bool ) override
- {
- return false;
- }
-
- // XMultiServiceFactory
- virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const OUString& aServiceSpecifier ) override
- {
- return css::uno::Reference< css::rendering::XParametricPolyPolygon2D >(
- ParametricPolyPolygon::create(this,
- aServiceSpecifier,
- css::uno::Sequence< css::uno::Any >()));
- }
-
- virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments( const OUString& aServiceSpecifier, const css::uno::Sequence< css::uno::Any >& Arguments ) override
- {
- return css::uno::Reference< css::rendering::XParametricPolyPolygon2D >(
- ParametricPolyPolygon::create(this,
- aServiceSpecifier,
- Arguments));
- }
-
- virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames( ) override
- {
- return ParametricPolyPolygon::getAvailableServiceNames();
- }
-
-
- // XUpdatable
- virtual void SAL_CALL update() override
- {
- MutexType aGuard( BaseType::m_aMutex );
-
- if( mbDumpScreenContent )
- maDeviceHelper.dumpScreenContent();
- }
-
-
- // XPropertySet
- virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
- {
- MutexType aGuard( BaseType::m_aMutex );
- return maPropHelper.getPropertySetInfo();
- }
-
- virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName,
- const css::uno::Any& aValue ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
- maPropHelper.setPropertyValue( aPropertyName, aValue );
- }
-
- virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& aPropertyName ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
- return maPropHelper.getPropertyValue( aPropertyName );
- }
-
- virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName,
- const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
- maPropHelper.addPropertyChangeListener( aPropertyName,
- xListener );
- }
-
- virtual void SAL_CALL removePropertyChangeListener( const OUString& ,
- const css::uno::Reference< css::beans::XPropertyChangeListener >& ) override
- {
- }
-
- virtual void SAL_CALL addVetoableChangeListener( const OUString& aPropertyName,
- const css::uno::Reference< css::beans::XVetoableChangeListener >& xListener ) override
- {
- MutexType aGuard( BaseType::m_aMutex );
- maPropHelper.addVetoableChangeListener( aPropertyName,
- xListener );
- }
-
- virtual void SAL_CALL removeVetoableChangeListener( const OUString& ,
- const css::uno::Reference< css::beans::XVetoableChangeListener >& ) override
- {
- }
-
- protected:
- ~GraphicDeviceBase() {} // we're a ref-counted UNO class. _We_ destroy ourselves.
-
- css::uno::Any getDumpScreenContent() const
- {
- return css::uno::makeAny( mbDumpScreenContent );
- }
-
- void setDumpScreenContent( const css::uno::Any& rAny )
- {
- // TODO(Q1): this was mbDumpScreenContent =
- // rAny.get<bool>(), only that gcc3.3 wouldn't eat it
- rAny >>= mbDumpScreenContent;
- }
-
- DeviceHelper maDeviceHelper;
- PropertySetHelper maPropHelper;
- bool mbDumpScreenContent;
-
- private:
- GraphicDeviceBase( const GraphicDeviceBase& ) = delete;
- GraphicDeviceBase& operator=( const GraphicDeviceBase& ) = delete;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_GRAPHICDEVICEBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/integerbitmapbase.hxx b/include/canvas/base/integerbitmapbase.hxx
deleted file mode 100644
index 2ea548452ce3..000000000000
--- a/include/canvas/base/integerbitmapbase.hxx
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_INTEGERBITMAPBASE_HXX
-#define INCLUDED_CANVAS_BASE_INTEGERBITMAPBASE_HXX
-
-#include <com/sun/star/rendering/IntegerBitmapLayout.hpp>
-#include <canvas/verifyinput.hxx>
-#include <osl/diagnose.h>
-
-
-namespace canvas
-{
- /** Helper template to handle XIntegerBitmap method forwarding to
- BitmapCanvasHelper
-
- Use this helper to handle the XIntegerBitmap part of your
- implementation.
-
- @tpl Base
- Either BitmapCanvasBase (just XBitmap) or BitmapCanvasBase2 (XBitmap and
- XBitmapCanvas).
- */
- template< class Base > class IntegerBitmapBase :
- public Base
- {
- public:
- // XIntegerBitmap
- virtual css::uno::Sequence< sal_Int8 > SAL_CALL getData( css::rendering::IntegerBitmapLayout& bitmapLayout,
- const css::geometry::IntegerRectangle2D& rect ) override
- {
- tools::verifyArgs(rect,
- OSL_THIS_FUNC,
- static_cast< typename Base::UnambiguousBaseType* >(this));
- tools::verifyIndexRange(rect, Base::getSize() );
-
- typename Base::MutexType aGuard( Base::m_aMutex );
-
- return Base::maCanvasHelper.getData( bitmapLayout,
- rect );
- }
-
- virtual void SAL_CALL setData( const css::uno::Sequence< sal_Int8 >&,
- const css::rendering::IntegerBitmapLayout& bitmapLayout,
- const css::geometry::IntegerRectangle2D& rect ) override
- {
- tools::verifyArgs(bitmapLayout, rect,
- OSL_THIS_FUNC,
- static_cast< typename Base::UnambiguousBaseType* >(this));
- tools::verifyIndexRange(rect, Base::getSize() );
-
- typename Base::MutexType aGuard( Base::m_aMutex );
-
- Base::mbSurfaceDirty = true;
- }
-
- virtual void SAL_CALL setPixel( const css::uno::Sequence< sal_Int8 >&,
- const css::rendering::IntegerBitmapLayout& bitmapLayout,
- const css::geometry::IntegerPoint2D& pos ) override
- {
- tools::verifyArgs(bitmapLayout, pos,
- OSL_THIS_FUNC,
- static_cast< typename Base::UnambiguousBaseType* >(this));
- tools::verifyIndexRange(pos, Base::getSize() );
-
- typename Base::MutexType aGuard( Base::m_aMutex );
-
- Base::mbSurfaceDirty = true;
- }
-
- virtual css::uno::Sequence< sal_Int8 > SAL_CALL getPixel( css::rendering::IntegerBitmapLayout& bitmapLayout,
- const css::geometry::IntegerPoint2D& pos ) override
- {
- tools::verifyArgs(pos,
- OSL_THIS_FUNC,
- static_cast< typename Base::UnambiguousBaseType* >(this));
- tools::verifyIndexRange(pos, Base::getSize() );
-
- typename Base::MutexType aGuard( Base::m_aMutex );
-
- return Base::maCanvasHelper.getPixel( bitmapLayout,
- pos );
- }
-
- virtual css::rendering::IntegerBitmapLayout SAL_CALL getMemoryLayout( ) override
- {
- typename Base::MutexType aGuard( Base::m_aMutex );
-
- return Base::maCanvasHelper.getMemoryLayout();
- }
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_INTEGERBITMAPBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/sprite.hxx b/include/canvas/base/sprite.hxx
deleted file mode 100644
index 937c0328474b..000000000000
--- a/include/canvas/base/sprite.hxx
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_SPRITE_HXX
-#define INCLUDED_CANVAS_BASE_SPRITE_HXX
-
-#include <rtl/ref.hxx>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <basegfx/point/b2dpoint.hxx>
-
-namespace basegfx
-{
- class B2DVector;
- class B2DRange;
-}
-
-namespace canvas
-{
- /* Definition of Sprite interface (as we mix with UNO here, has to
- be XInterface - reference holders to a Sprite must be able to
- control lifetime of reference target)
- */
-
- /** Helper interface to connect SpriteCanvas with various
- sprite implementations.
-
- This interface should be implemented from every sprite class,
- as it provides essential repaint and update area facilitates.
-
- @derive typically, each canvas implementation will derive
- another interface from this one, that adds rendering
- functionality (which, of course, is impossible here in a
- generic way)
- */
- class Sprite : public css::lang::XComponent
- {
- public:
- typedef ::rtl::Reference< Sprite > Reference;
-
- /** Query whether sprite update will fully cover the given area.
-
- Use this method to determine whether any background
- content (regardless of static or sprite) needs an update
- before rendering this sprite.
-
- @return true, if sprite redraw will fully overwrite given
- area (and thus, the background need not be redrawn
- beforehand).
- */
- virtual bool isAreaUpdateOpaque( const ::basegfx::B2DRange& rUpdateArea ) const = 0;
-
- /** Query whether content has changed
- */
- virtual bool isContentChanged() const = 0;
-
- /** Query position of the left, top pixel of the sprite
- */
- virtual ::basegfx::B2DPoint getPosPixel() const = 0;
-
- /** Query size of the sprite in pixel.
- */
- virtual ::basegfx::B2DVector getSizePixel() const = 0;
-
- /** Get area that is currently covered by the sprite
-
- This area is already adapted to clipping, alpha and
- transformation state of this sprite.
- */
- virtual ::basegfx::B2DRange getUpdateArea() const = 0;
-
- /** Query sprite priority
- */
- virtual double getPriority() const = 0;
-
- protected:
- ~Sprite() {}
- };
-
- /** Functor providing a StrictWeakOrdering for sprite references
- */
- struct SpriteWeakOrder
- {
- bool operator()( const Sprite::Reference& rLHS,
- const Sprite::Reference& rRHS )
- {
- const double nPrioL( rLHS->getPriority() );
- const double nPrioR( rRHS->getPriority() );
-
- // if prios are equal, tie-break on ptr value
- return nPrioL == nPrioR ? rLHS.get() < rRHS.get() : nPrioL < nPrioR;
- }
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_SPRITE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/spritecanvasbase.hxx b/include/canvas/base/spritecanvasbase.hxx
deleted file mode 100644
index 0f8de798207a..000000000000
--- a/include/canvas/base/spritecanvasbase.hxx
+++ /dev/null
@@ -1,193 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_SPRITECANVASBASE_HXX
-#define INCLUDED_CANVAS_BASE_SPRITECANVASBASE_HXX
-
-#include <rtl/ref.hxx>
-#include <com/sun/star/rendering/InterpolationMode.hpp>
-#include <canvas/base/integerbitmapbase.hxx>
-#include <canvas/base/bitmapcanvasbase.hxx>
-#include <canvas/spriteredrawmanager.hxx>
-
-namespace com::sun::star::rendering { class XAnimation; }
-namespace com::sun::star::rendering { class XAnimatedSprite; }
-namespace com::sun::star::rendering { class XCustomSprite; }
-namespace com::sun::star::rendering { class XSprite; }
-
-
-namespace canvas
-{
- /** Helper template to handle XIntegerBitmap method forwarding to
- BitmapCanvasHelper
-
- Use this helper to handle the XIntegerBitmap part of your
- implementation.
-
- @tpl Base
- Base class to use, most probably one of the
- WeakComponentImplHelperN templates with the appropriate
- interfaces. At least XSpriteCanvas and SpriteSurface should be
- among them (why else would you use this template, then?). Base
- class must have a Base( const Mutex& ) constructor (like the
- WeakComponentImplHelperN templates have).
-
- @tpl CanvasHelper
- Canvas helper implementation for the backend in question
-
- @tpl Mutex
- Lock strategy to use. Defaults to using the
- BaseMutex-provided lock. Every time 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 CanvasBase for further contractual requirements towards
- the CanvasHelper type, and some examples.
- */
- template< class Base,
- class CanvasHelper,
- class Mutex=::osl::MutexGuard,
- class UnambiguousBase = css::uno::XInterface > class SpriteCanvasBase :
- public IntegerBitmapBase< BitmapCanvasBase<Base, CanvasHelper, Mutex, UnambiguousBase> >
- {
- public:
- typedef IntegerBitmapBase< BitmapCanvasBase<Base, CanvasHelper, Mutex, UnambiguousBase> > BaseType;
- typedef ::rtl::Reference< SpriteCanvasBase > Reference;
-
- SpriteCanvasBase() :
- maRedrawManager()
- {
- }
-
- virtual void disposeThis() override
- {
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maRedrawManager.disposing();
-
- // pass on to base class
- BaseType::disposeThis();
- }
-
- // XSpriteCanvas
- virtual css::uno::Reference< css::rendering::XAnimatedSprite > SAL_CALL createSpriteFromAnimation( const css::uno::Reference< css::rendering::XAnimation >& animation ) override
- {
- tools::verifyArgs(animation,
- OSL_THIS_FUNC,
- static_cast< typename BaseType::UnambiguousBaseType* >(this));
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maCanvasHelper.createSpriteFromAnimation(animation);
- }
-
- virtual css::uno::Reference< css::rendering::XAnimatedSprite > SAL_CALL createSpriteFromBitmaps( const css::uno::Sequence< css::uno::Reference< css::rendering::XBitmap > >& animationBitmaps,
- sal_Int8 interpolationMode ) override
- {
- tools::verifyArgs(animationBitmaps,
- OSL_THIS_FUNC,
- static_cast< typename BaseType::UnambiguousBaseType* >(this));
- tools::verifyRange( interpolationMode,
- css::rendering::InterpolationMode::NEAREST_NEIGHBOR,
- css::rendering::InterpolationMode::BEZIERSPLINE4 );
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maCanvasHelper.createSpriteFromBitmaps(animationBitmaps, interpolationMode);
- }
-
- virtual css::uno::Reference< css::rendering::XCustomSprite > SAL_CALL createCustomSprite( const css::geometry::RealSize2D& spriteSize ) override
- {
- tools::verifySpriteSize(spriteSize,
- OSL_THIS_FUNC,
- static_cast< typename BaseType::UnambiguousBaseType* >(this));
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maCanvasHelper.createCustomSprite(spriteSize);
- }
-
- virtual css::uno::Reference< css::rendering::XSprite > SAL_CALL createClonedSprite( const css::uno::Reference< css::rendering::XSprite >& original ) override
- {
- tools::verifyArgs(original,
- OSL_THIS_FUNC,
- static_cast< typename BaseType::UnambiguousBaseType* >(this));
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- return BaseType::maCanvasHelper.createClonedSprite(original);
- }
-
- // SpriteSurface
- virtual void showSprite( const Sprite::Reference& rSprite ) override
- {
- OSL_ASSERT( rSprite.is() );
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maRedrawManager.showSprite( rSprite );
- }
-
- virtual void hideSprite( const Sprite::Reference& rSprite ) override
- {
- OSL_ASSERT( rSprite.is() );
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maRedrawManager.hideSprite( rSprite );
- }
-
- virtual void moveSprite( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rOldPos,
- const ::basegfx::B2DPoint& rNewPos,
- const ::basegfx::B2DVector& rSpriteSize ) override
- {
- OSL_ASSERT( rSprite.is() );
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maRedrawManager.moveSprite( rSprite, rOldPos, rNewPos, rSpriteSize );
- }
-
- virtual void updateSprite( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DRange& rUpdateArea ) override
- {
- OSL_ASSERT( rSprite.is() );
-
- typename BaseType::MutexType aGuard( BaseType::m_aMutex );
-
- maRedrawManager.updateSprite( rSprite, rPos, rUpdateArea );
- }
-
- protected:
- SpriteRedrawManager maRedrawManager;
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_SPRITECANVASBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/base/spritesurface.hxx b/include/canvas/base/spritesurface.hxx
deleted file mode 100644
index 0d47b97860ca..000000000000
--- a/include/canvas/base/spritesurface.hxx
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_BASE_SPRITESURFACE_HXX
-#define INCLUDED_CANVAS_BASE_SPRITESURFACE_HXX
-
-#include <canvas/base/sprite.hxx>
-
-namespace canvas
-{
- /* Definition of the SpriteSurface interface */
-
- /** Canvas surface containing sprites
-
- Every canvas surface that contains sprites must implement this
- interface, when employing the canvas base framework. The
- methods provided here are used from the individual sprites to
- notify the canvas about necessary screen updates.
- */
- class SpriteSurface : public css::uno::XInterface
- {
- public:
- typedef ::rtl::Reference< SpriteSurface > Reference;
-
- /// Sprites should call this from XSprite::show()
- virtual void showSprite( const Sprite::Reference& rSprite ) = 0;
-
- /// Sprites should call this from XSprite::hide()
- virtual void hideSprite( const Sprite::Reference& rSprite ) = 0;
-
- /// Sprites should call this from XSprite::move()
- virtual void moveSprite( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rOldPos,
- const ::basegfx::B2DPoint& rNewPos,
- const ::basegfx::B2DVector& rSpriteSize ) = 0;
-
- /** Sprites should call this when some part of the content has
- changed.
-
- That includes show/hide, i.e. for show, both showSprite()
- and updateSprite() must be called.
- */
- virtual void updateSprite( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DRange& rUpdateArea ) = 0;
-
- protected:
- ~SpriteSurface() {}
- };
-}
-
-#endif // INCLUDED_CANVAS_BASE_SPRITESURFACE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/parametricpolypolygon.hxx b/include/canvas/parametricpolypolygon.hxx
deleted file mode 100644
index 960f27c084b1..000000000000
--- a/include/canvas/parametricpolypolygon.hxx
+++ /dev/null
@@ -1,155 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_PARAMETRICPOLYPOLYGON_HXX
-#define INCLUDED_CANVAS_PARAMETRICPOLYPOLYGON_HXX
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/rendering/XParametricPolyPolygon2D.hpp>
-#include <cppuhelper/compbase.hxx>
-#include <cppuhelper/basemutex.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-
-#include <canvas/canvastoolsdllapi.h>
-
-namespace com::sun::star::rendering { class XGraphicDevice; }
-
-
-/* Definition of ParametricPolyPolygon class */
-
-namespace canvas
-{
- typedef cppu::WeakComponentImplHelper< css::rendering::XParametricPolyPolygon2D,
- css::lang::XServiceInfo > ParametricPolyPolygon_Base;
-
- class CANVASTOOLS_DLLPUBLIC ParametricPolyPolygon final : public ::cppu::BaseMutex,
- public ParametricPolyPolygon_Base
- {
- public:
- enum class GradientType
- {
- Linear,
- Elliptical,
- Rectangular
- };
-
- /** Structure of defining values for the ParametricPolyPolygon
-
- This is used to copy the state of the
- ParametricPolyPolygon atomically.
- */
- struct Values
- {
- Values( const ::basegfx::B2DPolygon& rGradientPoly,
- const css::uno::Sequence< css::uno::Sequence< double > >& rColors,
- const css::uno::Sequence< double >& rStops,
- double nAspectRatio,
- GradientType eType ) :
- maGradientPoly( rGradientPoly ),
- mnAspectRatio( nAspectRatio ),
- maColors( rColors ),
- maStops( rStops ),
- meType( eType )
- {
- }
-
- /// Polygonal gradient shape (ignored for linear and axial gradient)
- const ::basegfx::B2DPolygon maGradientPoly;
-
- /// Aspect ratio of gradient, affects scaling of innermost gradient polygon
- const double mnAspectRatio;
-
- /// Gradient colors
- const css::uno::Sequence< css::uno::Sequence< double > > maColors;
-
- /// Gradient color stops
- const css::uno::Sequence< double > maStops;
-
- /// Type of gradient to render (as e.g. linear grads are not represented by maGradientPoly)
- const GradientType meType;
- };
-
- static css::uno::Sequence< OUString > getAvailableServiceNames();
- static ParametricPolyPolygon* create(
- const css::uno::Reference< css::rendering::XGraphicDevice >& rDevice,
- const OUString& rServiceName,
- const css::uno::Sequence< css::uno::Any >& rArgs );
-
- /// Dispose all internal references
- virtual void SAL_CALL disposing() override;
-
- // XParametricPolyPolygon2D
- virtual css::uno::Reference< css::rendering::XPolyPolygon2D > SAL_CALL getOutline( double t ) override;
- virtual css::uno::Sequence< double > SAL_CALL getColor( double t ) override;
- virtual css::uno::Sequence< double > SAL_CALL getPointColor( const css::geometry::RealPoint2D& point ) override;
- virtual css::uno::Reference< css::rendering::XColorSpace > SAL_CALL getColorSpace() override;
-
- // XServiceInfo
- virtual OUString SAL_CALL getImplementationName( ) override;
- virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
- virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
-
- /// Query all defining values of this object atomically
- Values getValues() const;
-
- private:
- virtual ~ParametricPolyPolygon() override; // we're a ref-counted UNO class. _We_ destroy ourselves.
- ParametricPolyPolygon(const ParametricPolyPolygon&) = delete;
- ParametricPolyPolygon& operator=( const ParametricPolyPolygon& ) = delete;
-
- static ParametricPolyPolygon* createLinearHorizontalGradient( const css::uno::Reference<
- css::rendering::XGraphicDevice >& rDevice,
- const css::uno::Sequence< css::uno::Sequence< double > >& colors,
- const css::uno::Sequence< double >& stops );
- static ParametricPolyPolygon* createEllipticalGradient( const css::uno::Reference<
- css::rendering::XGraphicDevice >& rDevice,
- const css::uno::Sequence< css::uno::Sequence< double > >& colors,
- const css::uno::Sequence< double >& stops,
- double fAspect );
- static ParametricPolyPolygon* createRectangularGradient( const css::uno::Reference<
- css::rendering::XGraphicDevice >& rDevice,
- const css::uno::Sequence< css::uno::Sequence< double > >& colors,
- const css::uno::Sequence< double >& stops,
- double fAspect );
-
- /// Private, because objects can only be created from the static factories
- ParametricPolyPolygon( const css::uno::Reference<
- css::rendering::XGraphicDevice >& rDevice,
- const ::basegfx::B2DPolygon& rGradientPoly,
- GradientType eType,
- const css::uno::Sequence< css::uno::Sequence< double > >& colors,
- const css::uno::Sequence< double >& stops,
- double nAspectRatio );
- ParametricPolyPolygon( const css::uno::Reference<
- css::rendering::XGraphicDevice >& rDevice,
- GradientType eType,
- const css::uno::Sequence< css::uno::Sequence< double > >& colors,
- const css::uno::Sequence< double >& stops );
-
- css::uno::Reference<
- css::rendering::XGraphicDevice > mxDevice;
-
- /// All defining values of this object
- const Values maValues;
- };
-}
-
-#endif /* INCLUDED_CANVAS_PARAMETRICPOLYPOLYGON_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/propertysethelper.hxx b/include/canvas/propertysethelper.hxx
deleted file mode 100644
index 509bb45e2b72..000000000000
--- a/include/canvas/propertysethelper.hxx
+++ /dev/null
@@ -1,146 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_PROPERTYSETHELPER_HXX
-#define INCLUDED_CANVAS_PROPERTYSETHELPER_HXX
-
-#include <canvas/canvastools.hxx>
-
-#include <functional>
-#include <vector>
-#include <memory>
-
-#include <canvas/canvastoolsdllapi.h>
-
-namespace com::sun::star::beans { class XPropertyChangeListener; }
-namespace com::sun::star::beans { class XPropertySetInfo; }
-namespace com::sun::star::beans { class XVetoableChangeListener; }
-
-namespace canvas
-{
- /** Really simplistic XPropertySet helper for properties.
-
- This class provides easy access to properties, referenced via
- ASCII strings. The name/property modification callbacks pairs
- are passed into this class via a vector. Each time a property
- is set or queried, the corresponding getter or setter callback
- is called.
-
- Use this class as a delegate for the corresponding
- XPropertySet methods, and take care of UNO XInterface and lock
- handling by yourself.
-
- The core responsibility of this class is the name/value
- mapping for property sets.
- */
- class CANVASTOOLS_DLLPUBLIC PropertySetHelper
- {
- public:
- typedef std::function<css::uno::Any ()> GetterType;
- typedef std::function<void (const css::uno::Any&)> SetterType;
- struct Callbacks
- {
- GetterType getter;
- SetterType setter;
- };
- typedef tools::ValueMap< Callbacks > MapType;
- typedef std::vector< MapType::MapEntry > InputMap;
-
- class MakeMap : public InputMap
- {
- public:
- MakeMap(const char* name,
- const GetterType& getter,
- const SetterType& setter)
- {
- MapType::MapEntry aEntry={name, {getter, setter}};
- push_back(aEntry);
- }
- MakeMap(const char* name,
- const GetterType& getter)
- {
- MapType::MapEntry aEntry={name, {getter, SetterType()}};
- push_back(aEntry);
- }
- MakeMap& operator()(const char* name,
- const GetterType& getter,
- const SetterType& setter)
- {
- MapType::MapEntry aEntry={name, {getter, setter}};
- push_back(aEntry);
- return *this;
- }
- MakeMap& operator()(const char* name,
- const GetterType& getter)
- {
- MapType::MapEntry aEntry={name, {getter, SetterType()}};
- push_back(aEntry);
- return *this;
- }
- };
-
- /** Create helper with zero properties
- */
- PropertySetHelper();
-
- /** Init helper with new name/value map
-
- @param rMap
- Vector of name/function pointers. Each name is offered as
- a property, and reading/writing to this property is passed
- on to the given function pointer.
- */
- void initProperties( const InputMap& rMap );
-
- /** Add given properties to helper
-
- @param rMap
- Vector of name/function pointers. Each name is offered as
- a property, and reading/writing to this property is passed
- on to the given function pointer. These name/function
- pairs are added to the already existing ones.
- */
- void addProperties( const InputMap& rMap );
-
- /** Checks whether the given string corresponds to a valid
- property name.
-
- @return true, if the given name maps to a known property.
- */
- bool isPropertyName( const OUString& aPropertyName ) const;
-
- // XPropertySet implementation
- css::uno::Reference< css::beans::XPropertySetInfo > getPropertySetInfo() const;
- void setPropertyValue( const OUString& aPropertyName,
- const css::uno::Any& aValue );
- css::uno::Any getPropertyValue( const OUString& PropertyName ) const;
- void addPropertyChangeListener( const OUString& aPropertyName,
- const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener );
- void addVetoableChangeListener( const OUString& aPropertyName,
- const css::uno::Reference< css::beans::XVetoableChangeListener >& xListener );
-
- private:
- std::unique_ptr<MapType> mpMap;
- InputMap maMapEntries;
- };
-}
-
-#endif /* INCLUDED_CANVAS_PROPERTYSETHELPER_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/rendering/icolorbuffer.hxx b/include/canvas/rendering/icolorbuffer.hxx
deleted file mode 100644
index 7d851131eec8..000000000000
--- a/include/canvas/rendering/icolorbuffer.hxx
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_RENDERING_ICOLORBUFFER_HXX
-#define INCLUDED_CANVAS_RENDERING_ICOLORBUFFER_HXX
-
-#include <sal/types.h>
-
-namespace canvas
-{
- /** Interface for a raw memory pixel container
-
- Use this interface to represent a surface of raw pixel (e.g. a
- bitmap) to the canvas rendering framework.
- */
- struct IColorBuffer
- {
- /// The underlying pixel format for this buffer
- enum class Format
- {
- // 32-bit ARGB pixel format with alpha, 8 bits per channel.
- A8R8G8B8,
-
- // 32-bit RGB pixel format, 8 bits per channel.
- X8R8G8B8
- };
-
- virtual ~IColorBuffer() {}
-
- /** Get a pointer to the raw memory bits of the pixel
- */
- virtual sal_uInt8* lock() const = 0;
-
- /** unlock previous locked buffer
- */
- virtual void unlock() const = 0;
-
- /** Get width in pixel
- */
- virtual sal_uInt32 getWidth() const = 0;
-
- /** Get height in pixel
- */
- virtual sal_uInt32 getHeight() const = 0;
-
- /** Offset, in bytes, between consecutive scan lines of the bitmap.
- If the stride is positive, the bitmap is top-down.
- If the stride is negative, the bitmap is bottom-up.
- The returned value is only valid while the buffer is locked.
- */
- virtual sal_uInt32 getStride() const = 0;
-
- /** Get format of the color buffer
- */
- virtual Format getFormat() const = 0;
- };
-}
-
-#endif // INCLUDED_CANVAS_RENDERING_ICOLORBUFFER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/rendering/irendermodule.hxx b/include/canvas/rendering/irendermodule.hxx
deleted file mode 100644
index 186dc2b699e7..000000000000
--- a/include/canvas/rendering/irendermodule.hxx
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_RENDERING_IRENDERMODULE_HXX
-#define INCLUDED_CANVAS_RENDERING_IRENDERMODULE_HXX
-
-#include <memory>
-
-namespace basegfx
-{
- class B2IVector;
-}
-
-namespace canvas
-{
- struct ISurface;
-
- struct Vertex
- {
- float r,g,b,a;
- float u,v;
- float x,y,z;
- };
-
- /** Output module interface for backend render implementations.
-
- Implement this interface for each operating system- or
- library-specific rendering backend, which needs coupling with
- the canvas rendering framework (which can be shared between
- all backend implementations).
- */
- struct IRenderModule
- {
- /** Type of primitive passed to the render module via
- pushVertex()
- */
- enum class PrimitiveType
- {
- Unknown,
- Triangle,
- Quad
- };
-
- virtual ~IRenderModule() {}
-
- /// Lock rendermodule against concurrent access
- virtual void lock() const = 0;
-
- /// Unlock rendermodule for concurrent access
- virtual void unlock() const = 0;
-
- /** Maximal size of VRAM pages available
-
- This is typically the maximum texture size of the
- hardware, or some arbitrary limit if the backend is
- software.
- */
- virtual ::basegfx::B2IVector getPageSize() = 0;
-
- /** Create a (possibly hardware-accelerated) surface
-
- @return a pointer to a surface, which is an abstraction of
- a piece of (possibly hardware-accelerated) texture memory.
- */
- virtual std::shared_ptr<ISurface> createSurface( const ::basegfx::B2IVector& surfaceSize ) = 0;
-
- /** Begin rendering the given primitive.
-
- Each beginPrimitive() call must be matched with an
- endPrimitive() call.
- */
- virtual void beginPrimitive( PrimitiveType eType ) = 0;
-
- /** Finish rendering a primitive.
-
- Each beginPrimitive() call must be matched with an
- endPrimitive() call.
- */
- virtual void endPrimitive() = 0;
-
- /** Add given vertex to current primitive
-
- After issuing a beginPrimitive(), each pushVertex() adds a
- vertex to the active primitive.
- */
- virtual void pushVertex( const Vertex& vertex ) = 0;
-
- /** Query error status
-
- @returns true, if an error occurred during primitive
- construction.
- */
- virtual bool isError() = 0;
- };
-
- /// Little RAII wrapper for guarding access to IRenderModule interface
- class RenderModuleGuard
- {
- public:
- explicit RenderModuleGuard( const std::shared_ptr<IRenderModule>& rRenderModule ) :
- mpRenderModule( rRenderModule )
- {
- mpRenderModule->lock();
- }
-
- ~RenderModuleGuard()
- {
- mpRenderModule->unlock();
- }
-
- RenderModuleGuard(const RenderModuleGuard&) = delete;
- RenderModuleGuard& operator=( const RenderModuleGuard& ) = delete;
- private:
- const std::shared_ptr<IRenderModule> mpRenderModule;
- };
-}
-
-#endif // INCLUDED_CANVAS_RENDERING_IRENDERMODULE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/rendering/isurface.hxx b/include/canvas/rendering/isurface.hxx
deleted file mode 100644
index 67ce0f387dee..000000000000
--- a/include/canvas/rendering/isurface.hxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_RENDERING_ISURFACE_HXX
-#define INCLUDED_CANVAS_RENDERING_ISURFACE_HXX
-
-namespace basegfx
-{
- class B2IRange;
- class B2IPoint;
-}
-
-namespace canvas
-{
- struct IColorBuffer;
-
- struct ISurface
- {
- virtual ~ISurface() {}
-
- /** Select texture behind this interface to be the current one
- for primitive output.
- */
- virtual bool selectTexture() = 0;
-
- /** Tells whether the surface is valid or not
- */
- virtual bool isValid() = 0;
-
- /** Update surface content from given IColorBuffer
-
- This method updates the given subarea of the surface from
- the given color buffer bits.
-
- @param rDestPos
- Position in the surface, where the subset update should
- have its left, top edge
-
- @param rSourceRect
- Size and position of the rectangular subset update in the
- source color buffer
-
- @param rSource
- Source bits to use for the update
-
- @return true, if the update was successful
- */
- virtual bool update( const ::basegfx::B2IPoint& rDestPos,
- const ::basegfx::B2IRange& rSourceRect,
- IColorBuffer& rSource ) = 0;
- };
-}
-
-#endif // INCLUDED_CANVAS_RENDERING_ISURFACE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/rendering/isurfaceproxy.hxx b/include/canvas/rendering/isurfaceproxy.hxx
deleted file mode 100644
index d4d8e246118e..000000000000
--- a/include/canvas/rendering/isurfaceproxy.hxx
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_RENDERING_ISURFACEPROXY_HXX
-#define INCLUDED_CANVAS_RENDERING_ISURFACEPROXY_HXX
-
-namespace basegfx
-{
- class B2DRange;
- class B2DPoint;
- class B2DPolyPolygon;
- class B2DHomMatrix;
-}
-
-namespace canvas
-{
- struct ISurfaceProxy
- {
- virtual ~ISurfaceProxy() {}
-
- /** Notify the proxy that the color buffer has changed
- */
- virtual void setColorBufferDirty() = 0;
-
- /** Render the surface content to screen.
-
- @param fAlpha
- Overall alpha for content
-
- @param rPos
- Output position
-
- @param rTransform
- Output transformation (does not affect output position)
- */
- virtual bool draw( double fAlpha,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DHomMatrix& rTransform ) = 0;
-
- /** Render the surface content to screen.
-
- @param fAlpha
- Overall alpha for content
-
- @param rPos
- Output position
-
- @param rArea
- Subset of the surface to render. Coordinate system are
- surface area pixel, given area will be clipped to the
- surface bounds.
-
- @param rTransform
- Output transformation (does not affect output position)
- */
- virtual bool draw( double fAlpha,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DRange& rArea,
- const ::basegfx::B2DHomMatrix& rTransform ) = 0;
-
- /** Render the surface content to screen.
-
- @param fAlpha
- Overall alpha for content
-
- @param rPos
- Output position
-
- @param rClipPoly
- Clip polygon for the surface. The clip polygon is also
- subject to the output transformation.
-
- @param rTransform
- Output transformation (does not affect output position)
- */
- virtual bool draw( double fAlpha,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DPolyPolygon& rClipPoly,
- const ::basegfx::B2DHomMatrix& rTransform ) = 0;
- };
-}
-
-#endif // INCLUDED_CANVAS_RENDERING_ISURFACEPROXY_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/rendering/isurfaceproxymanager.hxx b/include/canvas/rendering/isurfaceproxymanager.hxx
deleted file mode 100644
index 155c6f81a199..000000000000
--- a/include/canvas/rendering/isurfaceproxymanager.hxx
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_RENDERING_ISURFACEPROXYMANAGER_HXX
-#define INCLUDED_CANVAS_RENDERING_ISURFACEPROXYMANAGER_HXX
-
-#include <canvas/canvastoolsdllapi.h>
-#include <memory>
-
-namespace canvas
-{
- struct ISurfaceProxy;
- struct IColorBuffer;
- struct IRenderModule;
-
- /** Manager interface, which handles surface proxy objects.
-
- Typically, each canvas instantiation has one
- SurfaceProxyManager object, to handle their surfaces. Surfaces
- itself are opaque objects, which encapsulate a framebuffer to
- render upon, plus an optional (possibly accelerated) texture.
- */
- struct ISurfaceProxyManager
- {
- virtual ~ISurfaceProxyManager() {}
-
- /** Create a surface proxy for a color buffer.
-
- The whole idea is build around the concept that you create
- some arbitrary buffer which contains the image data and
- tell the texture manager about it. From there on you can
- draw into this image using any kind of graphics api you
- want. In the technical sense we allocate some space in
- local videomemory or AGP memory which will be filled on
- demand, which means if there exists any rendering
- operation that needs to read from this memory location.
- This method creates a logical hardware surface object
- which uses the given color buffer as the image source.
- Internally this texture may even be distributed to several
- real hardware surfaces.
- */
- virtual std::shared_ptr< ISurfaceProxy > createSurfaceProxy(
- const std::shared_ptr<IColorBuffer>& pBuffer ) const = 0;
- };
-
- /** Create a surface proxy for the given render module.
- */
- CANVASTOOLS_DLLPUBLIC std::shared_ptr<ISurfaceProxyManager> createSurfaceProxyManager( const std::shared_ptr<IRenderModule>& rRenderModule );
-}
-
-#endif // INCLUDED_CANVAS_RENDERING_ISURFACEPROXYMANAGER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/spriteredrawmanager.hxx b/include/canvas/spriteredrawmanager.hxx
deleted file mode 100644
index f31ab8330370..000000000000
--- a/include/canvas/spriteredrawmanager.hxx
+++ /dev/null
@@ -1,409 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_SPRITEREDRAWMANAGER_HXX
-#define INCLUDED_CANVAS_SPRITEREDRAWMANAGER_HXX
-
-#include <basegfx/range/b2dconnectedranges.hxx>
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/vector/b2dvector.hxx>
-#include <basegfx/range/b2drange.hxx>
-#include <basegfx/range/b2drectangle.hxx>
-
-#include <vector>
-#include <algorithm>
-
-#include <canvas/base/sprite.hxx>
-#include <canvas/canvastoolsdllapi.h>
-
-/* Definition of SpriteRedrawManager class */
-
-namespace canvas
-{
- /** This class manages smooth SpriteCanvas updates
-
- Use this class to handle the ::canvas::SpriteSurface methods,
- that track and process sprite update events. Recorded update
- events are later grouped by connected areas (i.e. all sprites
- that somehow overlap over a rectangular area are grouped
- together); the forEachSpriteArea() method calls the passed
- functor for each of those connected areas.
-
- Note that, although this class generally works with IEEE
- doubles, the calculation of connected areas happens in the
- integer domain - it is generally expected that repaints can
- only be divided at pixel boundaries, without causing visible
- artifacts. Therefore, sprites that touch the same pixel (but
- don't necessarily have the same floating point coordinates
- there) will reside in a common sprite area and handled
- together in the forEachSpriteArea functor call.
- */
- class CANVASTOOLS_DLLPUBLIC SpriteRedrawManager
- {
- public:
- /** Data container for the connected components list
- */
- class SpriteInfo
- {
- public:
- /** Create sprite info
-
- @param rRef
- Sprite this info represents (might be the NULL ref)
-
- @param rTrueUpdateArea
- True (un-rounded) update area this sprite has recorded
-
- @param bNeedsUpdate
- When false, this sprite is not a member of the change
- record list. Thus, it only needs redraw if within the
- update area of other, changed sprites.
-
- @internal
- */
- SpriteInfo( const Sprite::Reference& rRef,
- const ::basegfx::B2DRange& rTrueUpdateArea,
- bool bNeedsUpdate ) :
- mpSprite( rRef ),
- maTrueUpdateArea( rTrueUpdateArea ),
- mbNeedsUpdate( bNeedsUpdate ),
- mbIsPureMove( false )
- {
- }
-
- /** Create sprite info, specify move type
-
- @param rRef
- Sprite this info represents (might be the NULL ref)
-
- @param rTrueUpdateArea
- True (un-rounded) update area this sprite has recorded
-
- @param bNeedsUpdate
- When false, this sprite is not a member of the change
- record list. Thus, it only needs redraw if within the
- update area of other, changed sprites.
-
- @param bIsPureMove
- When true, this sprite is _only_ moved, no other
- changes happened.
-
- @internal
- */
- SpriteInfo( const Sprite::Reference& rRef,
- const ::basegfx::B2DRange& rTrueUpdateArea,
- bool bNeedsUpdate,
- bool bIsPureMove ) :
- mpSprite( rRef ),
- maTrueUpdateArea( rTrueUpdateArea ),
- mbNeedsUpdate( bNeedsUpdate ),
- mbIsPureMove( bIsPureMove )
- {
- }
-
- const Sprite::Reference& getSprite() const { return mpSprite; }
-
- // #i61843# need to return by value here, to be used safely from bind
- const ::basegfx::B2DRange& getUpdateArea() const { return maTrueUpdateArea; }
- bool needsUpdate() const { return mbNeedsUpdate; }
- bool isPureMove() const { return mbIsPureMove; }
-
- private:
- Sprite::Reference mpSprite;
- ::basegfx::B2DRange maTrueUpdateArea;
- bool mbNeedsUpdate;
- bool mbIsPureMove;
- };
-
-
- /** Helper struct for SpriteTracer template
-
- This struct stores change information to a sprite's visual
- appearance (move, content updated, and the like).
- */
- struct SpriteChangeRecord
- {
- enum class ChangeType { move, update };
-
- SpriteChangeRecord( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rOldPos,
- const ::basegfx::B2DPoint& rNewPos,
- const ::basegfx::B2DVector& rSpriteSize ) :
- meChangeType( ChangeType::move ),
- mpAffectedSprite( rSprite ),
- maOldPos( rOldPos ),
- maUpdateArea( rNewPos.getX(),
- rNewPos.getY(),
- rNewPos.getX() + rSpriteSize.getX(),
- rNewPos.getY() + rSpriteSize.getY() )
- {
- }
-
- SpriteChangeRecord( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DRange& rUpdateArea ) :
- meChangeType( ChangeType::update ),
- mpAffectedSprite( rSprite ),
- maOldPos( rPos ),
- maUpdateArea( rUpdateArea )
- {
- }
-
- const Sprite::Reference& getSprite() const { return mpAffectedSprite; }
-
- ChangeType meChangeType;
- Sprite::Reference mpAffectedSprite;
- ::basegfx::B2DPoint maOldPos;
- ::basegfx::B2DRange maUpdateArea;
- };
-
- typedef ::std::vector< SpriteChangeRecord > VectorOfChangeRecords;
- typedef ::basegfx::B2DConnectedRanges< SpriteInfo > SpriteConnectedRanges;
- typedef SpriteConnectedRanges::ComponentType AreaComponent;
- typedef SpriteConnectedRanges::ConnectedComponents UpdateArea;
- typedef ::std::vector< Sprite::Reference > VectorOfSprites;
-
- SpriteRedrawManager();
- SpriteRedrawManager(const SpriteRedrawManager&) = delete;
- SpriteRedrawManager& operator=( const SpriteRedrawManager& ) = delete;
-
- /** Must be called when user of this object gets
- disposed. Frees all internal references.
- */
- void disposing();
-
- /** Functor, to be used from forEachSpriteArea
- */
- template< typename Functor > struct AreaUpdateCaller
- {
- AreaUpdateCaller( Functor& rFunc,
- const SpriteRedrawManager& rManager ) :
- mrFunc( rFunc ),
- mrManager( rManager )
- {
- }
-
- void operator()( const UpdateArea& rUpdateArea )
- {
- mrManager.handleArea( mrFunc, rUpdateArea );
- }
-
- Functor& mrFunc;
- const SpriteRedrawManager& mrManager;
- };
-
- /** Call given functor for each sprite area that needs an
- update.
-
- This method calls the given functor for each update area
- (calculated from the sprite change records).
-
- @tpl Functor
- Must provide the following four methods:
- <pre>
- void backgroundPaint( ::basegfx::B2DRange aUpdateRect );
- void scrollUpdate( ::basegfx::B2DRange& o_rMoveStart,
- ::basegfx::B2DRange& o_rMoveEnd,
- UpdateArea aUpdateArea );
- void opaqueUpdate( const ::basegfx::B2DRange& rTotalArea,
- const ::std::vector< ::canvas::Sprite::Reference >& rSortedUpdateSprites );
- void genericUpdate( const ::basegfx::B2DRange& rTotalArea,
- const ::std::vector< ::canvas::Sprite::Reference >& rSortedUpdateSprites );
- </pre>
- The backgroundPaint() method is called to simply repaint
- background content, the scrollUpdate() method is used to
- scroll a given area, and paint background in the uncovered
- areas, the opaqueUpdate() method is called when a sprite
- can be painted in the given area without taking background
- content into account, and finally, genericUpdate() is
- called for complex updates, where first the background and
- then all sprites consecutively have to be repainted.
- */
- template< typename Functor > void forEachSpriteArea( Functor& rFunc ) const
- {
- SpriteConnectedRanges aUpdateAreas;
-
- setupUpdateAreas( aUpdateAreas );
-
- aUpdateAreas.forEachAggregate(
- AreaUpdateCaller< Functor >( rFunc, *this ) );
- }
-
- /** Call given functor for each active sprite.
-
- This method calls the given functor for each active
- sprite, in the order of sprite priority.
-
- @tpl Functor
- Must provide a Functor::operator( Sprite::Reference& )
- method.
- */
- template< typename Functor > void forEachSprite( const Functor& rFunc ) const
- {
- ::std::for_each( maSprites.begin(),
- maSprites.end(),
- rFunc );
- }
-
- /// Clear sprite change records (typically directly after a screen update)
- void clearChangeRecords();
-
- // SpriteSurface interface, is delegated to e.g. from SpriteCanvas
- void showSprite( const Sprite::Reference& rSprite );
- void hideSprite( const Sprite::Reference& rSprite );
- void moveSprite( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rOldPos,
- const ::basegfx::B2DPoint& rNewPos,
- const ::basegfx::B2DVector& rSpriteSize );
- void updateSprite( const Sprite::Reference& rSprite,
- const ::basegfx::B2DPoint& rPos,
- const ::basegfx::B2DRange& rUpdateArea );
-
- /** Internal, handles each distinct component for forEachAggregate()
-
- The reason why this must be public is that it needs to be
- accessible from the AreaUpdateCaller functor.
-
- @internal
- */
- template< typename Functor > void handleArea( Functor& rFunc,
- const UpdateArea& rUpdateArea ) const
- {
- // check whether this area contains changed sprites at all
- // (if not, just ignore it)
- if( areSpritesChanged( rUpdateArea ) )
- {
- // at least one of the sprites actually needs an
- // update - process whole area.
-
- // check whether this area could be handled special
- // (background paint, direct update, scroll, etc.)
- ::basegfx::B2DRange aMoveStart;
- ::basegfx::B2DRange aMoveEnd;
- if( rUpdateArea.maComponentList.empty() )
- {
- rFunc.backgroundPaint( rUpdateArea.maTotalBounds );
- }
- else
- {
- // cache number of sprites in this area (it's a
- // list, and both isAreaUpdateScroll() and
- // isAreaUpdateOpaque() need it).
- const ::std::size_t nNumSprites(
- rUpdateArea.maComponentList.size() );
-
- if( isAreaUpdateScroll( aMoveStart,
- aMoveEnd,
- rUpdateArea,
- nNumSprites ) )
- {
- rFunc.scrollUpdate( aMoveStart,
- aMoveEnd,
- rUpdateArea );
- }
- else
- {
- // potentially, more than a single sprite
- // involved. Have to sort component lists for
- // sprite prio.
- VectorOfSprites aSortedUpdateSprites;
- for (auto const& elem : rUpdateArea.maComponentList)
- {
- const Sprite::Reference& rSprite( elem.second.getSprite() );
- if( rSprite.is() )
- aSortedUpdateSprites.push_back( rSprite );
- }
-
- ::std::sort( aSortedUpdateSprites.begin(),
- aSortedUpdateSprites.end(),
- SpriteWeakOrder() );
-
- if( isAreaUpdateOpaque( rUpdateArea,
- nNumSprites ) )
- {
- rFunc.opaqueUpdate( rUpdateArea.maTotalBounds,
- aSortedUpdateSprites );
- }
- else
- {
- rFunc.genericUpdate( rUpdateArea.maTotalBounds,
- aSortedUpdateSprites );
- }
- }
- }
- }
- }
-
- private:
- /** Central method of this class. Calculates the set of
- disjunct components that need an update.
- */
- void setupUpdateAreas( SpriteConnectedRanges& rUpdateAreas ) const;
-
- bool areSpritesChanged( const UpdateArea& rUpdateArea ) const;
-
- bool isAreaUpdateNotOpaque( const ::basegfx::B2DRectangle& rUpdateRect,
- const AreaComponent& rComponent ) const;
-
- bool isAreaUpdateOpaque( const UpdateArea& rUpdateArea,
- ::std::size_t nNumSprites ) const;
-
- /** Check whether given update area can be handled by a simple
- scroll
-
- @param o_rMoveStart
- Start rect of the move
-
- @param o_rMoveEnd
- End rect of the move. The content must be moved from start
- to end rect
-
- @param rUpdateArea
- Area to check for scroll update optimization
- */
- bool isAreaUpdateScroll( ::basegfx::B2DRectangle& o_rMoveStart,
- ::basegfx::B2DRectangle& o_rMoveEnd,
- const UpdateArea& rUpdateArea,
- ::std::size_t nNumSprites ) const;
-
-
- VectorOfSprites maSprites; // list of active
- // sprite
- // objects. this
- // list is only
- // used for full
- // repaints,
- // otherwise, we
- // rely on the
- // active sprites
- // itself to notify
- // us.
-
- VectorOfChangeRecords maChangeRecords; // vector of
- // sprites
- // changes
- // since last
- // updateScreen()
- // call
- };
-}
-
-#endif /* INCLUDED_CANVAS_SPRITEREDRAWMANAGER_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/vclwrapper.hxx b/include/canvas/vclwrapper.hxx
deleted file mode 100644
index 3913219143bc..000000000000
--- a/include/canvas/vclwrapper.hxx
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_VCLWRAPPER_HXX
-#define INCLUDED_CANVAS_VCLWRAPPER_HXX
-
-#include <vcl/svapp.hxx>
-
-namespace canvas
-{
- namespace vcltools
- {
- /** This helper template wraps VCL objects, and protects
- object deletion with the Solar mutex. All other operations
- are unprotected, this must be handled by client code.
-
- The reason for this template is the fact that VCL objects
- hold by value in uno::Reference-handled classes are
- deleted without having the chance to get inbetween and
- lock the solar mutex.
-
- This template handles that problem transparently, the only
- inconvenience is the fact that object member access now
- has to be performed via operator->, since . is not
- overloadable.
-
- Otherwise, the template preserves the value semantics of
- the wrapped object, that is, copy operations are performed
- not by copying pointers, but by copying the underlying
- object. This includes constness, i.e. on a const
- VCLObject, only const methods of the wrapped object can be
- called. Simply imagine this to be a value object of type
- "template argument", with the only peculiarity that
- member/method access is performed by operator-> instead of
- the non-existing "operator.".
- */
- template< class Wrappee_ > class VCLObject
- {
- public:
- typedef Wrappee_ Wrappee;
-
- VCLObject() :
- mpWrappee( new Wrappee() )
- {
- }
-
- // no explicit here. VCLObjects should be freely
- // constructible with Wrappees, and AFAIK there is no other
- // implicit conversion path that could cause harm here
- VCLObject( std::unique_ptr<Wrappee> pWrappee ) :
- mpWrappee( pWrappee )
- {
- }
-
- // This object has value semantics, thus, forward copy
- // to wrappee
- VCLObject( const VCLObject& rOrig )
- {
- if( rOrig.mpWrappee )
- mpWrappee = new Wrappee( *rOrig.mpWrappee );
- else
- mpWrappee = nullptr;
- }
-
- VCLObject(VCLObject&& rOrig) noexcept
- : mpWrappee(std::move(rOrig.mpWrappee))
- {
- }
-
- // This object has value semantics, thus, forward copy
- // to wrappee
- VCLObject( const Wrappee& rOrig ) :
- mpWrappee( new Wrappee( rOrig ) )
- {
- }
-
- // This object has value semantics, thus, forward
- // assignment to wrappee
- VCLObject& operator=( const VCLObject& rhs )
- {
- if (this != &rhs)
- {
- if( mpWrappee )
- {
- if( rhs.mpWrappee )
- *mpWrappee = *rhs.mpWrappee;
- }
- else
- {
- if( rhs.mpWrappee )
- mpWrappee = new Wrappee( *rhs.mpWrappee );
- }
- }
- return *this;
- }
-
- VCLObject& operator=(VCLObject&& rhs) noexcept
- {
- std::swap(mpWrappee, rhs.mpWrappee);
-
- return *this;
- }
-
- ~VCLObject()
- {
- // This here is the whole purpose of the template:
- // protecting object deletion with the solar mutex
- SolarMutexGuard aGuard;
-
- mpWrappee.reset();
- }
-
- Wrappee* operator->() { return mpWrappee.get(); }
- const Wrappee* operator->() const { return mpWrappee.get(); }
-
- Wrappee& operator*() { return *mpWrappee; }
- const Wrappee& operator*() const { return *mpWrappee; }
-
- Wrappee& get() { return *mpWrappee; }
- const Wrappee& get() const { return *mpWrappee; }
-
- void swap( VCLObject& rOther )
- {
- ::std::swap( mpWrappee, rOther.mpWrappee );
- }
-
- private:
-
- std::unique_ptr<Wrappee> mpWrappee;
- };
-
- }
-}
-
-#endif /* INCLUDED_CANVAS_VCLWRAPPER_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/canvas/verifyinput.hxx b/include/canvas/verifyinput.hxx
deleted file mode 100644
index f7703f47e9f3..000000000000
--- a/include/canvas/verifyinput.hxx
+++ /dev/null
@@ -1,578 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_CANVAS_VERIFYINPUT_HXX
-#define INCLUDED_CANVAS_VERIFYINPUT_HXX
-
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/lang/IllegalArgumentException.hpp>
-
-#include <canvas/canvastoolsdllapi.h>
-
-namespace com { namespace sun { namespace star { namespace geometry
-{
- struct RealPoint2D;
- struct RealSize2D;
- struct RealBezierSegment2D;
- struct RealRectangle2D;
- struct AffineMatrix2D;
- struct Matrix2D;
- struct IntegerPoint2D;
- struct IntegerSize2D;
- struct IntegerRectangle2D;
-} } } }
-
-namespace com { namespace sun { namespace star { namespace rendering
-{
- struct RenderState;
- struct StrokeAttributes;
- struct Texture;
- struct ViewState;
- struct IntegerBitmapLayout;
- struct FontRequest;
-} } } }
-
-namespace com::sun::star::uno { template <class E> class Sequence; }
-
-namespace canvas
-{
- namespace tools
- {
-
- // Input checking facilities
-
-
- // This header provides methods to check all common
- // css::rendering::* method input parameters against
- // compliance to the API specification.
-
- /** Verify that the given transformation contains valid floating point
- values.
-
- @param rMatrix
- Matrix to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::AffineMatrix2D& rMatrix,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Verify that the given transformation contains valid floating point
- values.
-
- @param rMatrix
- Matrix to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::Matrix2D& rMatrix,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Verify that the given point contains valid floating point
- values.
-
- @param rPoint
- Point to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::RealPoint2D& rPoint,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Verify that the given bezier segment contains valid
- floating point values.
-
- @param rSegment
- Segment to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::RealBezierSegment2D& rSegment,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Verify that the given rectangle contains valid floating
- point values.
-
- @param rRect
- Rect to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::geometry::RealRectangle2D& rRect,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Basic check for view state validity.
-
- @param viewState
- Viewstate to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::ViewState& viewState,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Basic check for render state validity.
-
- @param renderState
- Renderstate to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @param nMinColorComponents
- Minimal number of color components available in
- RenderState::DeviceColor
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::RenderState& renderState,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos,
- sal_Int32 nMinColorComponents=0 );
-
- /** Basic check for stroke attributes validity.
-
- @param strokeAttributes
- Attributes to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::StrokeAttributes& strokeAttributes,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Basic check for texture validity.
-
- @param texture
- Texture to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::Texture& texture,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Basic check for bitmap layout validity.
-
- @param bitmapLayout
- Bitmap layout to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::IntegerBitmapLayout& bitmapLayout,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Basic check for font request validity.
-
- @param fontRequest
- Font request to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- CANVASTOOLS_DLLPUBLIC void verifyInput( const css::rendering::FontRequest& fontRequest,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos );
-
- /** Templatized check for uno::Reference validity.
-
- @param rRef
- Reference to check against non-NILness
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- template< class Interface > void verifyInput(
- const css::uno::Reference< Interface >& rRef,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos )
- {
- if( !rRef.is() )
- {
-#if OSL_DEBUG_LEVEL > 0
- throw css::lang::IllegalArgumentException(
- OUString::createFromAscii(pStr) + ": reference is NULL",
- xIf,
- nArgPos );
-#else
- (void)pStr; (void)xIf; (void)nArgPos;
- throw css::lang::IllegalArgumentException();
-#endif
- }
- }
-
- /** Templatized check for content-of-sequence validity.
-
- @param rSequence
- Sequence of things to check
-
- @param xIf
- The interface that should be reported as the one
- generating the exception.
-
- @param nArgPos
- Argument position on the call site (i.e. the position of
- the argument, checked here, on the UNO interface
- method. Counting starts at 0).
-
- @throws a lang::IllegalArgumentException, if anything is wrong
- */
- template< typename SequenceContent > void verifyInput(
- const css::uno::Sequence< SequenceContent >& rSequence,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf,
- ::sal_Int16 nArgPos )
- {
- const SequenceContent* pCurr = rSequence.getConstArray();
- const SequenceContent* pEnd = pCurr + rSequence.getLength();
- while( pCurr != pEnd )
- verifyInput( *pCurr++, pStr, xIf, nArgPos );
- }
-
- /// Catch-all, to handle cases that DON'T need input checking (i.e. the Integer geometry ones)
- template< typename T > void verifyInput( const T& /*rDummy*/,
- const char* /*pStr*/,
- const css::uno::Reference< css::uno::XInterface >& /*xIf*/,
- ::sal_Int16 /*nArgPos*/ )
- {
- }
-
- // TODO(Q2): Employ some template arglist magic here, to avoid
- // this duplication of code...
-
- template< typename Arg0 > void verifyArgs( const Arg0& rArg0,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- }
-
- template< typename Arg0,
- typename Arg1 > void verifyArgs( const Arg0& rArg0,
- const Arg1& rArg1,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- verifyInput( rArg1, pStr, xIf, 1 );
- }
-
- template< typename Arg0,
- typename Arg1,
- typename Arg2 > void verifyArgs( const Arg0& rArg0,
- const Arg1& rArg1,
- const Arg2& rArg2,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- verifyInput( rArg1, pStr, xIf, 1 );
- verifyInput( rArg2, pStr, xIf, 2 );
- }
-
- template< typename Arg0,
- typename Arg1,
- typename Arg2,
- typename Arg3 > void verifyArgs( const Arg0& rArg0,
- const Arg1& rArg1,
- const Arg2& rArg2,
- const Arg3& rArg3,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- verifyInput( rArg1, pStr, xIf, 1 );
- verifyInput( rArg2, pStr, xIf, 2 );
- verifyInput( rArg3, pStr, xIf, 3 );
- }
-
- template< typename Arg0,
- typename Arg1,
- typename Arg2,
- typename Arg3,
- typename Arg4 > void verifyArgs( const Arg0& rArg0,
- const Arg1& rArg1,
- const Arg2& rArg2,
- const Arg3& rArg3,
- const Arg4& rArg4,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- verifyInput( rArg1, pStr, xIf, 1 );
- verifyInput( rArg2, pStr, xIf, 2 );
- verifyInput( rArg3, pStr, xIf, 3 );
- verifyInput( rArg4, pStr, xIf, 4 );
- }
-
- template< typename Arg0,
- typename Arg1,
- typename Arg2,
- typename Arg3,
- typename Arg4,
- typename Arg5 > void verifyArgs( const Arg0& rArg0,
- const Arg1& rArg1,
- const Arg2& rArg2,
- const Arg3& rArg3,
- const Arg4& rArg4,
- const Arg5& rArg5,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- verifyInput( rArg1, pStr, xIf, 1 );
- verifyInput( rArg2, pStr, xIf, 2 );
- verifyInput( rArg3, pStr, xIf, 3 );
- verifyInput( rArg4, pStr, xIf, 4 );
- verifyInput( rArg5, pStr, xIf, 5 );
- }
-
- template< typename Arg0,
- typename Arg1,
- typename Arg2,
- typename Arg3,
- typename Arg4,
- typename Arg5,
- typename Arg6 > void verifyArgs( const Arg0& rArg0,
- const Arg1& rArg1,
- const Arg2& rArg2,
- const Arg3& rArg3,
- const Arg4& rArg4,
- const Arg5& rArg5,
- const Arg6& rArg6,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf )
- {
- verifyInput( rArg0, pStr, xIf, 0 );
- verifyInput( rArg1, pStr, xIf, 1 );
- verifyInput( rArg2, pStr, xIf, 2 );
- verifyInput( rArg3, pStr, xIf, 3 );
- verifyInput( rArg4, pStr, xIf, 4 );
- verifyInput( rArg5, pStr, xIf, 5 );
- verifyInput( rArg6, pStr, xIf, 6 );
- }
-
-
- /** Range checker, which throws css::lang::IllegalArgument exception, when
- range is violated
- */
- template< typename NumType > inline void verifyRange( NumType arg, NumType lowerBound, NumType upperBound )
- {
- if( arg < lowerBound ||
- arg > upperBound )
- {
- throw css::lang::IllegalArgumentException();
- }
- }
-
- /** Range checker, which throws css::lang::IllegalArgument exception, when
- range is violated
-
- The checked range is half open, i.e. only bound by the specified value.
-
- @param arg
- Arg to check
-
- @param bound
- Bound to check against
-
- @param bLowerBound
- When true, given bound is the lower bound. When false,
- given bound is the upper bound.
- */
- template< typename NumType > inline void verifyRange( NumType arg, NumType bound, bool bLowerBound=true )
- {
- if( (bLowerBound && arg < bound) ||
- (!bLowerBound && arg > bound) )
- {
- throw css::lang::IllegalArgumentException();
- }
- }
-
- /** Range checker, which throws css::lang::IndexOutOfBounds exception, when
- index range is violated
-
- @param rect
- Rect to verify
-
- @param size
- Given rectangle must be within ((0,0), (size.Width, size.Height))
- */
- CANVASTOOLS_DLLPUBLIC void verifyIndexRange( const css::geometry::IntegerRectangle2D& rect,
- const css::geometry::IntegerSize2D& size );
-
- /** Range checker, which throws css::lang::IndexOutOfBounds exception, when
- index range is violated
-
- @param pos
- Position to verify
-
- @param size
- Given position must be within ((0,0), (size.Width, size.Height))
- */
- CANVASTOOLS_DLLPUBLIC void verifyIndexRange( const css::geometry::IntegerPoint2D& pos,
- const css::geometry::IntegerSize2D& size );
-
- /** Range checker, which throws css::lang::IndexOutOfBounds exception, when
- the size is negative or null
-
- @param size
- Size to verify
- */
- CANVASTOOLS_DLLPUBLIC void verifyBitmapSize( const css::geometry::IntegerSize2D& size,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf );
-
- /** Range checker, which throws css::lang::IndexOutOfBounds exception, when
- the size is negative or null
-
- @param size
- Size to verify
- */
- CANVASTOOLS_DLLPUBLIC void verifySpriteSize( const css::geometry::RealSize2D& size,
- const char* pStr,
- const css::uno::Reference< css::uno::XInterface >& xIf );
- }
-}
-
-#endif /* INCLUDED_CANVAS_VERIFYINPUT_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */