1*c45d927aSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*c45d927aSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*c45d927aSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*c45d927aSAndrew Rist * distributed with this work for additional information 6*c45d927aSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*c45d927aSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*c45d927aSAndrew Rist * "License"); you may not use this file except in compliance 9*c45d927aSAndrew Rist * with the License. You may obtain a copy of the License at 10*c45d927aSAndrew Rist * 11*c45d927aSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*c45d927aSAndrew Rist * 13*c45d927aSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*c45d927aSAndrew Rist * software distributed under the License is distributed on an 15*c45d927aSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*c45d927aSAndrew Rist * KIND, either express or implied. See the License for the 17*c45d927aSAndrew Rist * specific language governing permissions and limitations 18*c45d927aSAndrew Rist * under the License. 19*c45d927aSAndrew Rist * 20*c45d927aSAndrew Rist *************************************************************/ 21*c45d927aSAndrew Rist 22*c45d927aSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef SD_PRESENTER_PRESENTER_CANVAS_HXX 25cdf0e10cSrcweir #define SD_PRESENTER_PRESENTER_CANVAS_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "CanvasUpdateRequester.hxx" 28cdf0e10cSrcweir #include <basegfx/range/b2drectangle.hxx> 29cdf0e10cSrcweir #include <com/sun/star/awt/Point.hpp> 30cdf0e10cSrcweir #include <com/sun/star/awt/XWindow.hpp> 31cdf0e10cSrcweir #include <com/sun/star/awt/XWindowListener.hpp> 32cdf0e10cSrcweir #include <com/sun/star/geometry/AffineMatrix2D.hpp> 33cdf0e10cSrcweir #include <com/sun/star/lang/XInitialization.hpp> 34cdf0e10cSrcweir #include <com/sun/star/lang/IllegalArgumentException.hpp> 35cdf0e10cSrcweir #include <com/sun/star/rendering/XSpriteCanvas.hpp> 36cdf0e10cSrcweir #include <com/sun/star/rendering/VolatileContentDestroyedException.hpp> 37cdf0e10cSrcweir #include <cppuhelper/basemutex.hxx> 38cdf0e10cSrcweir #include <cppuhelper/compbase4.hxx> 39cdf0e10cSrcweir #include <boost/noncopyable.hpp> 40cdf0e10cSrcweir #include <boost/shared_ptr.hpp> 41cdf0e10cSrcweir 42cdf0e10cSrcweir namespace css = ::com::sun::star; 43cdf0e10cSrcweir 44cdf0e10cSrcweir namespace sd { namespace presenter { 45cdf0e10cSrcweir 46cdf0e10cSrcweir namespace { 47cdf0e10cSrcweir typedef ::cppu::WeakComponentImplHelper4 < 48cdf0e10cSrcweir css::rendering::XSpriteCanvas, 49cdf0e10cSrcweir css::rendering::XBitmap, 50cdf0e10cSrcweir css::awt::XWindowListener, 51cdf0e10cSrcweir css::lang::XInitialization 52cdf0e10cSrcweir > PresenterCanvasInterfaceBase; 53cdf0e10cSrcweir } 54cdf0e10cSrcweir 55cdf0e10cSrcweir /** Wrapper around a shared canvas that forwards most of its methods to the 56cdf0e10cSrcweir shared canvas. Most notable differences are: 57cdf0e10cSrcweir 1. The transformation of the ViewState of forwarded calls is modified by adding 58cdf0e10cSrcweir an offset. 59cdf0e10cSrcweir 2. The clip polygon of the ViewState of forwarded calls is intersected 60cdf0e10cSrcweir with a clip rectangle that can be set via SetClip(). 61cdf0e10cSrcweir 3. Calls to updateScreen() are collected. One call to the updateScreen() 62cdf0e10cSrcweir method of the shared canvas is made asynchronously. 63cdf0e10cSrcweir 64cdf0e10cSrcweir The canvas can use different canvases for sharing and for sprite 65cdf0e10cSrcweir construction. This allows the shared canvas to be a canvas of sprite itself. 66cdf0e10cSrcweir */ 67cdf0e10cSrcweir class PresenterCanvas 68cdf0e10cSrcweir : private ::boost::noncopyable, 69cdf0e10cSrcweir private ::cppu::BaseMutex, 70cdf0e10cSrcweir public PresenterCanvasInterfaceBase 71cdf0e10cSrcweir { 72cdf0e10cSrcweir public: 73cdf0e10cSrcweir /** This constructor is used when a PresenterCanvas object is created as 74cdf0e10cSrcweir a service. 75cdf0e10cSrcweir */ 76cdf0e10cSrcweir PresenterCanvas (void); 77cdf0e10cSrcweir 78cdf0e10cSrcweir /** This constructor is used when a PresenterCanvas object is created 79cdf0e10cSrcweir directly, typically by the PresenterCanvasFactory. 80cdf0e10cSrcweir @param rxUpdateCanvas 81cdf0e10cSrcweir This canvas is used to call updateScreen() at and to create 82cdf0e10cSrcweir sprites. In the typical case this canvas is identical to the 83cdf0e10cSrcweir rxSharedCanvas argument. 84cdf0e10cSrcweir @param rxUpdateWindow 85cdf0e10cSrcweir The window that belongs to the canvas given by the 86cdf0e10cSrcweir rxUpdateCanvas argument. 87cdf0e10cSrcweir @param rxSharedCanvas 88cdf0e10cSrcweir The canvas that is wrapped by the new instance of this class. 89cdf0e10cSrcweir Typically this is a regular XSpriteCanvas and then is identical 90cdf0e10cSrcweir to the one given by the rxUpdateCanvas argument. It may be the 91cdf0e10cSrcweir canvas of a sprite which does not support the XSpriteCanvas 92cdf0e10cSrcweir interface. In that case the canvas that created the sprite can 93cdf0e10cSrcweir be given as rxUpdateCanvas argument to allow to create further 94cdf0e10cSrcweir sprites and to have proper calls to updateScreen(). 95cdf0e10cSrcweir @param rxSharedWindow 96cdf0e10cSrcweir The window that belongs to the canvas given by the 97cdf0e10cSrcweir rxSharedCanvas argument. 98cdf0e10cSrcweir @param rxWindow 99cdf0e10cSrcweir The window that is represented by the new PresenterCanvas 100cdf0e10cSrcweir object. It is expected to be a direct decendent of 101cdf0e10cSrcweir rxSharedWindow. Its position inside rxSharedWindow defines the 102cdf0e10cSrcweir offset of the canvas implemented by the new PresenterCanvas 103cdf0e10cSrcweir object and rxSharedCanvas. 104cdf0e10cSrcweir */ 105cdf0e10cSrcweir PresenterCanvas ( 106cdf0e10cSrcweir const css::uno::Reference<css::rendering::XSpriteCanvas>& rxUpdateCanvas, 107cdf0e10cSrcweir const css::uno::Reference<css::awt::XWindow>& rxUpdateWindow, 108cdf0e10cSrcweir const css::uno::Reference<css::rendering::XCanvas>& rxSharedCanvas, 109cdf0e10cSrcweir const css::uno::Reference<css::awt::XWindow>& rxSharedWindow, 110cdf0e10cSrcweir const css::uno::Reference<css::awt::XWindow>& rxWindow); 111cdf0e10cSrcweir virtual ~PresenterCanvas (void); 112cdf0e10cSrcweir 113cdf0e10cSrcweir virtual void SAL_CALL disposing (void) 114cdf0e10cSrcweir throw (css::uno::RuntimeException); 115cdf0e10cSrcweir 116cdf0e10cSrcweir css::awt::Point GetOffset (const css::uno::Reference<css::awt::XWindow>& rxBaseWindow); 117cdf0e10cSrcweir 118cdf0e10cSrcweir /** Merge the given view state with the view state that translates the 119cdf0e10cSrcweir (virtual) child canvas to the shared canvas. 120cdf0e10cSrcweir */ 121cdf0e10cSrcweir css::rendering::ViewState MergeViewState ( 122cdf0e10cSrcweir const css::rendering::ViewState& rViewState, 123cdf0e10cSrcweir const css::awt::Point& raOffset); 124cdf0e10cSrcweir 125cdf0e10cSrcweir css::uno::Reference<css::rendering::XCanvas> GetSharedCanvas (void) const; 126cdf0e10cSrcweir 127cdf0e10cSrcweir /** This method is typically called by CanvasPane objects to set the 128cdf0e10cSrcweir repaint rectangle of a windowPaint() call as clip rectangle. When 129cdf0e10cSrcweir no or an empty rectangle is given then the window bounds are used 130cdf0e10cSrcweir instead. 131cdf0e10cSrcweir @param rClipRectangle 132cdf0e10cSrcweir A valid rectangle is used to clip the view state clip polygon. 133cdf0e10cSrcweir When an empty rectangle is given then the view state clip 134cdf0e10cSrcweir polygons are clipped against the window bounds. 135cdf0e10cSrcweir */ 136cdf0e10cSrcweir void SetClip (const css::awt::Rectangle& rClipRectangle); 137cdf0e10cSrcweir 138cdf0e10cSrcweir /** Called by custom sprites to update their clip polygon so that they 139cdf0e10cSrcweir are clipped at the borders of the canvas. This method has to be 140cdf0e10cSrcweir called after each change of the sprite location so that the bounds 141cdf0e10cSrcweir of the canvas can be transformed into the coordinate system of the 142cdf0e10cSrcweir sprite. 143cdf0e10cSrcweir */ 144cdf0e10cSrcweir css::uno::Reference<css::rendering::XPolyPolygon2D> UpdateSpriteClip ( 145cdf0e10cSrcweir const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxOriginalClip, 146cdf0e10cSrcweir const css::geometry::RealPoint2D& rLocation, 147cdf0e10cSrcweir const css::geometry::RealSize2D& rSize); 148cdf0e10cSrcweir 149cdf0e10cSrcweir 150cdf0e10cSrcweir // XInitialization 151cdf0e10cSrcweir 152cdf0e10cSrcweir virtual void SAL_CALL initialize ( 153cdf0e10cSrcweir const css::uno::Sequence<css::uno::Any>& rArguments) 154cdf0e10cSrcweir throw(css::uno::Exception, css::uno::RuntimeException); 155cdf0e10cSrcweir 156cdf0e10cSrcweir 157cdf0e10cSrcweir // XCanvas 158cdf0e10cSrcweir 159cdf0e10cSrcweir virtual void SAL_CALL clear (void) 160cdf0e10cSrcweir throw (css::uno::RuntimeException); 161cdf0e10cSrcweir 162cdf0e10cSrcweir virtual void SAL_CALL drawPoint ( 163cdf0e10cSrcweir const css::geometry::RealPoint2D& aPoint, 164cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 165cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 166cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 167cdf0e10cSrcweir 168cdf0e10cSrcweir virtual void SAL_CALL drawLine ( 169cdf0e10cSrcweir const css::geometry::RealPoint2D& aStartPoint, 170cdf0e10cSrcweir const css::geometry::RealPoint2D& aEndPoint, 171cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 172cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 173cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 174cdf0e10cSrcweir 175cdf0e10cSrcweir virtual void SAL_CALL drawBezier ( 176cdf0e10cSrcweir const css::geometry::RealBezierSegment2D& aBezierSegment, 177cdf0e10cSrcweir const css::geometry::RealPoint2D& aEndPoint, 178cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 179cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 180cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 181cdf0e10cSrcweir 182cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL drawPolyPolygon ( 183cdf0e10cSrcweir const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon, 184cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 185cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 186cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 187cdf0e10cSrcweir 188cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL strokePolyPolygon ( 189cdf0e10cSrcweir const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon, 190cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 191cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 192cdf0e10cSrcweir const css::rendering::StrokeAttributes& aStrokeAttributes) 193cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 194cdf0e10cSrcweir 195cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 196cdf0e10cSrcweir strokeTexturedPolyPolygon ( 197cdf0e10cSrcweir const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon, 198cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 199cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 200cdf0e10cSrcweir const css::uno::Sequence< css::rendering::Texture >& aTextures, 201cdf0e10cSrcweir const css::rendering::StrokeAttributes& aStrokeAttributes) 202cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 203cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 204cdf0e10cSrcweir css::uno::RuntimeException); 205cdf0e10cSrcweir 206cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 207cdf0e10cSrcweir strokeTextureMappedPolyPolygon( 208cdf0e10cSrcweir const css::uno::Reference<css::rendering::XPolyPolygon2D >& xPolyPolygon, 209cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 210cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 211cdf0e10cSrcweir const css::uno::Sequence<css::rendering::Texture>& aTextures, 212cdf0e10cSrcweir const css::uno::Reference<css::geometry::XMapping2D>& xMapping, 213cdf0e10cSrcweir const css::rendering::StrokeAttributes& aStrokeAttributes) 214cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 215cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 216cdf0e10cSrcweir css::uno::RuntimeException); 217cdf0e10cSrcweir 218cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XPolyPolygon2D> SAL_CALL 219cdf0e10cSrcweir queryStrokeShapes( 220cdf0e10cSrcweir const css::uno::Reference<css::rendering::XPolyPolygon2D>& xPolyPolygon, 221cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 222cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 223cdf0e10cSrcweir const css::rendering::StrokeAttributes& aStrokeAttributes) 224cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 225cdf0e10cSrcweir 226cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 227cdf0e10cSrcweir fillPolyPolygon( 228cdf0e10cSrcweir const css::uno::Reference<css::rendering::XPolyPolygon2D>& xPolyPolygon, 229cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 230cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 231cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 232cdf0e10cSrcweir css::uno::RuntimeException); 233cdf0e10cSrcweir 234cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 235cdf0e10cSrcweir fillTexturedPolyPolygon( 236cdf0e10cSrcweir const css::uno::Reference<css::rendering::XPolyPolygon2D>& xPolyPolygon, 237cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 238cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 239cdf0e10cSrcweir const css::uno::Sequence<css::rendering::Texture>& xTextures) 240cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 241cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 242cdf0e10cSrcweir css::uno::RuntimeException); 243cdf0e10cSrcweir 244cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 245cdf0e10cSrcweir fillTextureMappedPolyPolygon( 246cdf0e10cSrcweir const css::uno::Reference< css::rendering::XPolyPolygon2D >& xPolyPolygon, 247cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 248cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 249cdf0e10cSrcweir const css::uno::Sequence< css::rendering::Texture >& xTextures, 250cdf0e10cSrcweir const css::uno::Reference< css::geometry::XMapping2D >& xMapping) 251cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 252cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 253cdf0e10cSrcweir css::uno::RuntimeException); 254cdf0e10cSrcweir 255cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCanvasFont> SAL_CALL 256cdf0e10cSrcweir createFont( 257cdf0e10cSrcweir const css::rendering::FontRequest& aFontRequest, 258cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& aExtraFontProperties, 259cdf0e10cSrcweir const css::geometry::Matrix2D& aFontMatrix) 260cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 261cdf0e10cSrcweir css::uno::RuntimeException); 262cdf0e10cSrcweir 263cdf0e10cSrcweir virtual css::uno::Sequence<css::rendering::FontInfo> SAL_CALL 264cdf0e10cSrcweir queryAvailableFonts( 265cdf0e10cSrcweir const css::rendering::FontInfo& aFilter, 266cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& aFontProperties) 267cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 268cdf0e10cSrcweir 269cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 270cdf0e10cSrcweir drawText( 271cdf0e10cSrcweir const css::rendering::StringContext& aText, 272cdf0e10cSrcweir const css::uno::Reference< css::rendering::XCanvasFont >& xFont, 273cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 274cdf0e10cSrcweir const css::rendering::RenderState& aRenderState, 275cdf0e10cSrcweir ::sal_Int8 nTextDirection) 276cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 277cdf0e10cSrcweir 278cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 279cdf0e10cSrcweir drawTextLayout( 280cdf0e10cSrcweir const css::uno::Reference< css::rendering::XTextLayout >& xLayoutetText, 281cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 282cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 283cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 284cdf0e10cSrcweir 285cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 286cdf0e10cSrcweir drawBitmap( 287cdf0e10cSrcweir const css::uno::Reference< css::rendering::XBitmap >& xBitmap, 288cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 289cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 290cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 291cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 292cdf0e10cSrcweir css::uno::RuntimeException); 293cdf0e10cSrcweir 294cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XCachedPrimitive> SAL_CALL 295cdf0e10cSrcweir drawBitmapModulated( 296cdf0e10cSrcweir const css::uno::Reference< css::rendering::XBitmap>& xBitmap, 297cdf0e10cSrcweir const css::rendering::ViewState& aViewState, 298cdf0e10cSrcweir const css::rendering::RenderState& aRenderState) 299cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 300cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 301cdf0e10cSrcweir css::uno::RuntimeException); 302cdf0e10cSrcweir 303cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XGraphicDevice> SAL_CALL 304cdf0e10cSrcweir getDevice (void) 305cdf0e10cSrcweir throw (css::uno::RuntimeException); 306cdf0e10cSrcweir 307cdf0e10cSrcweir 308cdf0e10cSrcweir // XBitmapCanvas 309cdf0e10cSrcweir 310cdf0e10cSrcweir void SAL_CALL copyRect( 311cdf0e10cSrcweir const css::uno::Reference< css::rendering::XBitmapCanvas >& sourceCanvas, 312cdf0e10cSrcweir const css::geometry::RealRectangle2D& sourceRect, 313cdf0e10cSrcweir const css::rendering::ViewState& sourceViewState, 314cdf0e10cSrcweir const css::rendering::RenderState& sourceRenderState, 315cdf0e10cSrcweir const css::geometry::RealRectangle2D& destRect, 316cdf0e10cSrcweir const css::rendering::ViewState& destViewState, 317cdf0e10cSrcweir const css::rendering::RenderState& destRenderState) 318cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 319cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 320cdf0e10cSrcweir css::uno::RuntimeException); 321cdf0e10cSrcweir 322cdf0e10cSrcweir 323cdf0e10cSrcweir // XSpriteCanvas 324cdf0e10cSrcweir 325cdf0e10cSrcweir css::uno::Reference< css::rendering::XAnimatedSprite > SAL_CALL 326cdf0e10cSrcweir createSpriteFromAnimation ( 327cdf0e10cSrcweir const css::uno::Reference< css::rendering::XAnimation >& animation) 328cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 329cdf0e10cSrcweir 330cdf0e10cSrcweir css::uno::Reference< css::rendering::XAnimatedSprite > SAL_CALL 331cdf0e10cSrcweir createSpriteFromBitmaps ( 332cdf0e10cSrcweir const css::uno::Sequence< 333cdf0e10cSrcweir css::uno::Reference< css::rendering::XBitmap > >& animationBitmaps, 334cdf0e10cSrcweir ::sal_Int8 interpolationMode) 335cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, 336cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException, 337cdf0e10cSrcweir css::uno::RuntimeException); 338cdf0e10cSrcweir 339cdf0e10cSrcweir css::uno::Reference< css::rendering::XCustomSprite > SAL_CALL 340cdf0e10cSrcweir createCustomSprite ( 341cdf0e10cSrcweir const css::geometry::RealSize2D& spriteSize) 342cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 343cdf0e10cSrcweir 344cdf0e10cSrcweir css::uno::Reference< css::rendering::XSprite > SAL_CALL 345cdf0e10cSrcweir createClonedSprite ( 346cdf0e10cSrcweir const css::uno::Reference< css::rendering::XSprite >& original) 347cdf0e10cSrcweir throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); 348cdf0e10cSrcweir 349cdf0e10cSrcweir ::sal_Bool SAL_CALL updateScreen (::sal_Bool bUpdateAll) 350cdf0e10cSrcweir throw (css::uno::RuntimeException); 351cdf0e10cSrcweir 352cdf0e10cSrcweir 353cdf0e10cSrcweir // XEventListener 354cdf0e10cSrcweir 355cdf0e10cSrcweir virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent) 356cdf0e10cSrcweir throw (css::uno::RuntimeException); 357cdf0e10cSrcweir 358cdf0e10cSrcweir 359cdf0e10cSrcweir // XWindowListener 360cdf0e10cSrcweir 361cdf0e10cSrcweir virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent) 362cdf0e10cSrcweir throw (css::uno::RuntimeException); 363cdf0e10cSrcweir 364cdf0e10cSrcweir virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent) 365cdf0e10cSrcweir throw (css::uno::RuntimeException); 366cdf0e10cSrcweir 367cdf0e10cSrcweir virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent) 368cdf0e10cSrcweir throw (css::uno::RuntimeException); 369cdf0e10cSrcweir 370cdf0e10cSrcweir virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent) 371cdf0e10cSrcweir throw (css::uno::RuntimeException); 372cdf0e10cSrcweir 373cdf0e10cSrcweir 374cdf0e10cSrcweir // XBitmap 375cdf0e10cSrcweir 376cdf0e10cSrcweir virtual css::geometry::IntegerSize2D SAL_CALL getSize (void) 377cdf0e10cSrcweir throw (css::uno::RuntimeException); 378cdf0e10cSrcweir 379cdf0e10cSrcweir virtual sal_Bool SAL_CALL hasAlpha (void) 380cdf0e10cSrcweir throw (css::uno::RuntimeException); 381cdf0e10cSrcweir 382cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XBitmapCanvas> SAL_CALL queryBitmapCanvas (void) 383cdf0e10cSrcweir throw (css::uno::RuntimeException); 384cdf0e10cSrcweir 385cdf0e10cSrcweir virtual css::uno::Reference<css::rendering::XBitmap> SAL_CALL getScaledBitmap( 386cdf0e10cSrcweir const css::geometry::RealSize2D& rNewSize, 387cdf0e10cSrcweir sal_Bool bFast) 388cdf0e10cSrcweir throw (css::uno::RuntimeException, 389cdf0e10cSrcweir css::lang::IllegalArgumentException, 390cdf0e10cSrcweir css::rendering::VolatileContentDestroyedException); 391cdf0e10cSrcweir 392cdf0e10cSrcweir private: 393cdf0e10cSrcweir css::uno::Reference<css::rendering::XSpriteCanvas> mxUpdateCanvas; 394cdf0e10cSrcweir css::uno::Reference<css::awt::XWindow> mxUpdateWindow; 395cdf0e10cSrcweir css::uno::Reference<css::rendering::XCanvas> mxSharedCanvas; 396cdf0e10cSrcweir css::uno::Reference<css::awt::XWindow> mxSharedWindow; 397cdf0e10cSrcweir 398cdf0e10cSrcweir /** The window for which a canvas is emulated. 399cdf0e10cSrcweir */ 400cdf0e10cSrcweir css::uno::Reference<css::awt::XWindow> mxWindow; 401cdf0e10cSrcweir 402cdf0e10cSrcweir /** Offset of the emulated canvas with respect to the shared canvas. 403cdf0e10cSrcweir */ 404cdf0e10cSrcweir css::awt::Point maOffset; 405cdf0e10cSrcweir 406cdf0e10cSrcweir /** The UpdateRequester is used by updateScreen() to schedule 407cdf0e10cSrcweir updateScreen() calls at the shared canvas. 408cdf0e10cSrcweir */ 409cdf0e10cSrcweir ::boost::shared_ptr<CanvasUpdateRequester> mpUpdateRequester; 410cdf0e10cSrcweir 411cdf0e10cSrcweir /** The clip rectangle as given to SetClip(). 412cdf0e10cSrcweir */ 413cdf0e10cSrcweir css::awt::Rectangle maClipRectangle; 414cdf0e10cSrcweir 415cdf0e10cSrcweir /** When this flag is true (it is set to true after every call to 416cdf0e10cSrcweir updateScreen()) then the next call to MergeViewState updates the 417cdf0e10cSrcweir maOffset member. A possible optimization would set this flag only 418cdf0e10cSrcweir to true when one of the windows between mxWindow and mxSharedWindow 419cdf0e10cSrcweir changes its position. 420cdf0e10cSrcweir */ 421cdf0e10cSrcweir bool mbOffsetUpdatePending; 422cdf0e10cSrcweir 423cdf0e10cSrcweir ::basegfx::B2DRectangle GetClipRectangle ( 424cdf0e10cSrcweir const css::geometry::AffineMatrix2D& rViewTransform, 425cdf0e10cSrcweir const css::awt::Point& rOffset); 426cdf0e10cSrcweir 427cdf0e10cSrcweir css::rendering::ViewState MergeViewState (const css::rendering::ViewState& rViewState); 428cdf0e10cSrcweir 429cdf0e10cSrcweir /** This method throws a DisposedException when the object has already been 430cdf0e10cSrcweir disposed. 431cdf0e10cSrcweir */ 432cdf0e10cSrcweir void ThrowIfDisposed (void) 433cdf0e10cSrcweir throw (css::lang::DisposedException); 434cdf0e10cSrcweir }; 435cdf0e10cSrcweir 436cdf0e10cSrcweir 437cdf0e10cSrcweir 438cdf0e10cSrcweir } } // end of namespace ::sd::presenter 439cdf0e10cSrcweir 440cdf0e10cSrcweir #endif 441