1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir #ifndef INCLUDED_SLIDESHOW_DRAWSHAPE_HXX 29*cdf0e10cSrcweir #define INCLUDED_SLIDESHOW_DRAWSHAPE_HXX 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <osl/diagnose.hxx> 32*cdf0e10cSrcweir #include <com/sun/star/drawing/XShape.hpp> 33*cdf0e10cSrcweir 34*cdf0e10cSrcweir #include "attributableshape.hxx" 35*cdf0e10cSrcweir #include "doctreenodesupplier.hxx" 36*cdf0e10cSrcweir #include "gdimtftools.hxx" 37*cdf0e10cSrcweir #include "viewshape.hxx" 38*cdf0e10cSrcweir #include "hyperlinkarea.hxx" 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir #include <boost/optional.hpp> 41*cdf0e10cSrcweir #include <boost/shared_ptr.hpp> 42*cdf0e10cSrcweir #include <boost/weak_ptr.hpp> 43*cdf0e10cSrcweir #include <set> 44*cdf0e10cSrcweir #include <vector> 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir class Graphic; 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir namespace slideshow 49*cdf0e10cSrcweir { 50*cdf0e10cSrcweir namespace internal 51*cdf0e10cSrcweir { 52*cdf0e10cSrcweir class Activity; 53*cdf0e10cSrcweir struct SlideShowContext; 54*cdf0e10cSrcweir class DrawShapeSubsetting; 55*cdf0e10cSrcweir class DrawShape; 56*cdf0e10cSrcweir typedef ::boost::shared_ptr< DrawShape > DrawShapeSharedPtr; 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir /** This class is the representation of a draw document's 59*cdf0e10cSrcweir XShape, and implements the Shape, AnimatableShape, and 60*cdf0e10cSrcweir AttributableShape interfaces. 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir @attention this class is to be treated 'final', i.e. one 63*cdf0e10cSrcweir should not derive from it. 64*cdf0e10cSrcweir */ 65*cdf0e10cSrcweir class DrawShape : public AttributableShape, 66*cdf0e10cSrcweir public DocTreeNodeSupplier, 67*cdf0e10cSrcweir public HyperlinkArea, 68*cdf0e10cSrcweir public ::osl::DebugBase<DrawShape> 69*cdf0e10cSrcweir { 70*cdf0e10cSrcweir public: 71*cdf0e10cSrcweir /** Create a shape for the given XShape 72*cdf0e10cSrcweir 73*cdf0e10cSrcweir @param xShape 74*cdf0e10cSrcweir The XShape to represent. 75*cdf0e10cSrcweir 76*cdf0e10cSrcweir @param xContainingPage 77*cdf0e10cSrcweir The page that contains this shape. Needed for proper 78*cdf0e10cSrcweir import (currently, the UnoGraphicExporter needs this 79*cdf0e10cSrcweir information). 80*cdf0e10cSrcweir 81*cdf0e10cSrcweir @param nPrio 82*cdf0e10cSrcweir Externally-determined shape priority (used e.g. for 83*cdf0e10cSrcweir paint ordering). This number _must be_ unique! 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir @param bForeignSource 86*cdf0e10cSrcweir When true, the source of the shape metafile might be a 87*cdf0e10cSrcweir foreign application. The metafile is checked against 88*cdf0e10cSrcweir unsupported content, and, if necessary, returned as a 89*cdf0e10cSrcweir pre-rendererd bitmap. 90*cdf0e10cSrcweir */ 91*cdf0e10cSrcweir static DrawShapeSharedPtr create( 92*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 93*cdf0e10cSrcweir ::com::sun::star::drawing::XShape >& xShape, 94*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 95*cdf0e10cSrcweir ::com::sun::star::drawing::XDrawPage >& xContainingPage, 96*cdf0e10cSrcweir double nPrio, 97*cdf0e10cSrcweir bool bForeignSource, 98*cdf0e10cSrcweir const SlideShowContext& rContext ); // throw ShapeLoadFailedException; 99*cdf0e10cSrcweir 100*cdf0e10cSrcweir /** Create a shape for the given XShape and graphic content 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir @param xShape 103*cdf0e10cSrcweir The XShape to represent. 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir @param xContainingPage 106*cdf0e10cSrcweir The page that contains this shape. Needed for proper 107*cdf0e10cSrcweir import (currently, the UnoGraphicExporter needs this 108*cdf0e10cSrcweir information). 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir @param nPrio 111*cdf0e10cSrcweir Externally-determined shape priority (used e.g. for 112*cdf0e10cSrcweir paint ordering). This number _must be_ unique! 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir @param rGraphic 115*cdf0e10cSrcweir Graphic to display in the shape's bound rect. If this 116*cdf0e10cSrcweir Graphic contains animatable content, the created 117*cdf0e10cSrcweir DrawShape will register itself for intrinsic animation 118*cdf0e10cSrcweir events. 119*cdf0e10cSrcweir */ 120*cdf0e10cSrcweir static DrawShapeSharedPtr create( 121*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 122*cdf0e10cSrcweir ::com::sun::star::drawing::XShape >& xShape, 123*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 124*cdf0e10cSrcweir ::com::sun::star::drawing::XDrawPage >& xContainingPage, 125*cdf0e10cSrcweir double nPrio, 126*cdf0e10cSrcweir const Graphic& rGraphic, 127*cdf0e10cSrcweir const SlideShowContext& rContext ); // throw ShapeLoadFailedException; 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< 130*cdf0e10cSrcweir ::com::sun::star::drawing::XShape > getXShape() const; 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir virtual ~DrawShape(); 133*cdf0e10cSrcweir 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir // View layer methods 136*cdf0e10cSrcweir //------------------------------------------------------------------ 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir virtual void addViewLayer( const ViewLayerSharedPtr& rNewLayer, 139*cdf0e10cSrcweir bool bRedrawLayer ); 140*cdf0e10cSrcweir virtual bool removeViewLayer( const ViewLayerSharedPtr& rNewLayer ); 141*cdf0e10cSrcweir virtual bool clearAllViewLayers(); 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir // attribute methods 144*cdf0e10cSrcweir //------------------------------------------------------------------ 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir virtual ShapeAttributeLayerSharedPtr createAttributeLayer(); 147*cdf0e10cSrcweir virtual bool revokeAttributeLayer( const ShapeAttributeLayerSharedPtr& rLayer ); 148*cdf0e10cSrcweir virtual ShapeAttributeLayerSharedPtr getTopmostAttributeLayer() const; 149*cdf0e10cSrcweir virtual void setVisibility( bool bVisible ); 150*cdf0e10cSrcweir virtual ::basegfx::B2DRectangle getBounds() const; 151*cdf0e10cSrcweir virtual ::basegfx::B2DRectangle getDomBounds() const; 152*cdf0e10cSrcweir virtual ::basegfx::B2DRectangle getUpdateArea() const; 153*cdf0e10cSrcweir virtual bool isVisible() const; 154*cdf0e10cSrcweir virtual double getPriority() const; 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir 157*cdf0e10cSrcweir // animation methods 158*cdf0e10cSrcweir //------------------------------------------------------------------ 159*cdf0e10cSrcweir 160*cdf0e10cSrcweir virtual void enterAnimationMode(); 161*cdf0e10cSrcweir virtual void leaveAnimationMode(); 162*cdf0e10cSrcweir virtual bool isBackgroundDetached() const; 163*cdf0e10cSrcweir 164*cdf0e10cSrcweir // render methods 165*cdf0e10cSrcweir //------------------------------------------------------------------ 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir virtual bool update() const; 168*cdf0e10cSrcweir virtual bool render() const; 169*cdf0e10cSrcweir virtual bool isContentChanged() const; 170*cdf0e10cSrcweir 171*cdf0e10cSrcweir // Sub item specialities 172*cdf0e10cSrcweir //------------------------------------------------------------------ 173*cdf0e10cSrcweir 174*cdf0e10cSrcweir virtual const DocTreeNodeSupplier& getTreeNodeSupplier() const; 175*cdf0e10cSrcweir virtual DocTreeNodeSupplier& getTreeNodeSupplier(); 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir virtual DocTreeNode getSubsetNode() const; 178*cdf0e10cSrcweir virtual AttributableShapeSharedPtr getSubset( const DocTreeNode& rTreeNode ) const; 179*cdf0e10cSrcweir virtual bool createSubset( AttributableShapeSharedPtr& o_rSubset, 180*cdf0e10cSrcweir const DocTreeNode& rTreeNode ); 181*cdf0e10cSrcweir virtual bool revokeSubset( const AttributableShapeSharedPtr& rShape ); 182*cdf0e10cSrcweir 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir // DocTreeNodeSupplier methods 185*cdf0e10cSrcweir //------------------------------------------------------------------ 186*cdf0e10cSrcweir 187*cdf0e10cSrcweir virtual sal_Int32 getNumberOfTreeNodes ( DocTreeNode::NodeType eNodeType ) const; // throw ShapeLoadFailedException; 188*cdf0e10cSrcweir virtual DocTreeNode getTreeNode ( sal_Int32 nNodeIndex, 189*cdf0e10cSrcweir DocTreeNode::NodeType eNodeType ) const; // throw ShapeLoadFailedException; 190*cdf0e10cSrcweir virtual sal_Int32 getNumberOfSubsetTreeNodes ( const DocTreeNode& rParentNode, 191*cdf0e10cSrcweir DocTreeNode::NodeType eNodeType ) const; // throw ShapeLoadFailedException; 192*cdf0e10cSrcweir virtual DocTreeNode getSubsetTreeNode ( const DocTreeNode& rParentNode, 193*cdf0e10cSrcweir sal_Int32 nNodeIndex, 194*cdf0e10cSrcweir DocTreeNode::NodeType eNodeType ) const; // throw ShapeLoadFailedException; 195*cdf0e10cSrcweir 196*cdf0e10cSrcweir // HyperlinkArea methods 197*cdf0e10cSrcweir //------------------------------------------------------------------ 198*cdf0e10cSrcweir 199*cdf0e10cSrcweir virtual HyperlinkRegions getHyperlinkRegions() const; 200*cdf0e10cSrcweir virtual double getHyperlinkPriority() const; 201*cdf0e10cSrcweir 202*cdf0e10cSrcweir 203*cdf0e10cSrcweir // intrinsic animation methods 204*cdf0e10cSrcweir //------------------------------------------------------------------ 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir /** Display next frame of an intrinsic animation. 207*cdf0e10cSrcweir 208*cdf0e10cSrcweir Used by IntrinsicAnimationActivity, to show the next 209*cdf0e10cSrcweir animation frame. 210*cdf0e10cSrcweir */ 211*cdf0e10cSrcweir bool setIntrinsicAnimationFrame( ::std::size_t nCurrFrame ); 212*cdf0e10cSrcweir 213*cdf0e10cSrcweir /** forces the drawshape to load and return a specially 214*cdf0e10cSrcweir crafted metafile, usable to display drawing layer text 215*cdf0e10cSrcweir animations. 216*cdf0e10cSrcweir */ 217*cdf0e10cSrcweir GDIMetaFileSharedPtr forceScrollTextMetaFile(); 218*cdf0e10cSrcweir 219*cdf0e10cSrcweir private: 220*cdf0e10cSrcweir /** Create a shape for the given XShape 221*cdf0e10cSrcweir 222*cdf0e10cSrcweir @param xShape 223*cdf0e10cSrcweir The XShape to represent. 224*cdf0e10cSrcweir 225*cdf0e10cSrcweir @param xContainingPage 226*cdf0e10cSrcweir The page that contains this shape. Needed for proper 227*cdf0e10cSrcweir import (currently, the UnoGraphicExporter needs this 228*cdf0e10cSrcweir information). 229*cdf0e10cSrcweir 230*cdf0e10cSrcweir @param nPrio 231*cdf0e10cSrcweir Externally-determined shape priority (used e.g. for 232*cdf0e10cSrcweir paint ordering). This number _must be_ unique! 233*cdf0e10cSrcweir 234*cdf0e10cSrcweir @param bForeignSource 235*cdf0e10cSrcweir When true, the source of the shape metafile might be a 236*cdf0e10cSrcweir foreign application. The metafile is checked against 237*cdf0e10cSrcweir unsupported content, and, if necessary, returned as a 238*cdf0e10cSrcweir pre-rendererd bitmap. 239*cdf0e10cSrcweir */ 240*cdf0e10cSrcweir DrawShape( const ::com::sun::star::uno::Reference< 241*cdf0e10cSrcweir ::com::sun::star::drawing::XShape >& xShape, 242*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 243*cdf0e10cSrcweir ::com::sun::star::drawing::XDrawPage >& xContainingPage, 244*cdf0e10cSrcweir double nPrio, 245*cdf0e10cSrcweir bool bForeignSource, 246*cdf0e10cSrcweir const SlideShowContext& rContext ); // throw ShapeLoadFailedException; 247*cdf0e10cSrcweir 248*cdf0e10cSrcweir /** Create a shape for the given XShape and graphic content 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir @param xShape 251*cdf0e10cSrcweir The XShape to represent. 252*cdf0e10cSrcweir 253*cdf0e10cSrcweir @param xContainingPage 254*cdf0e10cSrcweir The page that contains this shape. Needed for proper 255*cdf0e10cSrcweir import (currently, the UnoGraphicExporter needs this 256*cdf0e10cSrcweir information). 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir @param nPrio 259*cdf0e10cSrcweir Externally-determined shape priority (used e.g. for 260*cdf0e10cSrcweir paint ordering). This number _must be_ unique! 261*cdf0e10cSrcweir 262*cdf0e10cSrcweir @param rGraphic 263*cdf0e10cSrcweir Graphic to display in the shape's bound rect. If this 264*cdf0e10cSrcweir Graphic contains animatable content, the created 265*cdf0e10cSrcweir DrawShape will register itself for intrinsic animation 266*cdf0e10cSrcweir events. 267*cdf0e10cSrcweir */ 268*cdf0e10cSrcweir DrawShape( const ::com::sun::star::uno::Reference< 269*cdf0e10cSrcweir ::com::sun::star::drawing::XShape >& xShape, 270*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 271*cdf0e10cSrcweir ::com::sun::star::drawing::XDrawPage >& xContainingPage, 272*cdf0e10cSrcweir double nPrio, 273*cdf0e10cSrcweir const Graphic& rGraphic, 274*cdf0e10cSrcweir const SlideShowContext& rContext ); // throw ShapeLoadFailedException; 275*cdf0e10cSrcweir 276*cdf0e10cSrcweir /** Private copy constructor 277*cdf0e10cSrcweir 278*cdf0e10cSrcweir Used to create subsetted shapes 279*cdf0e10cSrcweir */ 280*cdf0e10cSrcweir DrawShape( const DrawShape&, const DocTreeNode& rTreeNode, double nPrio ); 281*cdf0e10cSrcweir 282*cdf0e10cSrcweir int getUpdateFlags() const; 283*cdf0e10cSrcweir bool implRender( int nUpdateFlags ) const; 284*cdf0e10cSrcweir void updateStateIds() const; 285*cdf0e10cSrcweir 286*cdf0e10cSrcweir ViewShape::RenderArgs getViewRenderArgs() const; 287*cdf0e10cSrcweir ::basegfx::B2DRectangle getActualUnitShapeBounds() const; 288*cdf0e10cSrcweir 289*cdf0e10cSrcweir void ensureVerboseMtfComments() const; 290*cdf0e10cSrcweir bool hasIntrinsicAnimation() const; 291*cdf0e10cSrcweir bool hasHyperlinks() const; 292*cdf0e10cSrcweir void prepareHyperlinkIndices() const; 293*cdf0e10cSrcweir 294*cdf0e10cSrcweir /// The associated XShape 295*cdf0e10cSrcweir ::com::sun::star::uno::Reference< 296*cdf0e10cSrcweir ::com::sun::star::drawing::XShape > mxShape; 297*cdf0e10cSrcweir ::com::sun::star::uno::Reference< 298*cdf0e10cSrcweir ::com::sun::star::drawing::XDrawPage > mxPage; 299*cdf0e10cSrcweir 300*cdf0e10cSrcweir /** A vector of metafiles actually representing the Shape. 301*cdf0e10cSrcweir 302*cdf0e10cSrcweir If this shape is not animated, only a single entry is 303*cdf0e10cSrcweir available. 304*cdf0e10cSrcweir */ 305*cdf0e10cSrcweir mutable VectorOfMtfAnimationFrames maAnimationFrames; 306*cdf0e10cSrcweir ::std::size_t mnCurrFrame; 307*cdf0e10cSrcweir 308*cdf0e10cSrcweir /// Metafile of currently active frame (static for shapes w/o intrinsic animation) 309*cdf0e10cSrcweir mutable GDIMetaFileSharedPtr mpCurrMtf; 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir /// loadflags of current meta file 312*cdf0e10cSrcweir mutable int mnCurrMtfLoadFlags; 313*cdf0e10cSrcweir 314*cdf0e10cSrcweir /// Contains the current shape bounds, in unit rect space 315*cdf0e10cSrcweir mutable ::boost::optional<basegfx::B2DRectangle> maCurrentShapeUnitBounds; 316*cdf0e10cSrcweir 317*cdf0e10cSrcweir // The attributes of this Shape 318*cdf0e10cSrcweir const double mnPriority; 319*cdf0e10cSrcweir ::basegfx::B2DRectangle maBounds; // always needed for rendering. 320*cdf0e10cSrcweir // for subset shapes, this member 321*cdf0e10cSrcweir // might change when views are 322*cdf0e10cSrcweir // added, as minimal bounds are 323*cdf0e10cSrcweir // calculated 324*cdf0e10cSrcweir 325*cdf0e10cSrcweir // Pointer to modifiable shape attributes 326*cdf0e10cSrcweir ShapeAttributeLayerSharedPtr mpAttributeLayer; // only created lazily 327*cdf0e10cSrcweir 328*cdf0e10cSrcweir // held here, to signal our destruction 329*cdf0e10cSrcweir boost::weak_ptr<Activity> mpIntrinsicAnimationActivity; 330*cdf0e10cSrcweir 331*cdf0e10cSrcweir // The attribute states, to detect attribute changes, 332*cdf0e10cSrcweir // without buffering and querying each single attribute 333*cdf0e10cSrcweir mutable State::StateId mnAttributeTransformationState; 334*cdf0e10cSrcweir mutable State::StateId mnAttributeClipState; 335*cdf0e10cSrcweir mutable State::StateId mnAttributeAlphaState; 336*cdf0e10cSrcweir mutable State::StateId mnAttributePositionState; 337*cdf0e10cSrcweir mutable State::StateId mnAttributeContentState; 338*cdf0e10cSrcweir mutable State::StateId mnAttributeVisibilityState; 339*cdf0e10cSrcweir 340*cdf0e10cSrcweir /// the list of active view shapes (one for each registered view layer) 341*cdf0e10cSrcweir typedef ::std::vector< ViewShapeSharedPtr > ViewShapeVector; 342*cdf0e10cSrcweir ViewShapeVector maViewShapes; 343*cdf0e10cSrcweir 344*cdf0e10cSrcweir ::com::sun::star::uno::Reference< 345*cdf0e10cSrcweir ::com::sun::star::uno::XComponentContext> mxComponentContext; 346*cdf0e10cSrcweir 347*cdf0e10cSrcweir /// hyperlink support 348*cdf0e10cSrcweir typedef ::std::pair<sal_Int32 /* mtf start */, 349*cdf0e10cSrcweir sal_Int32 /* mtf end */> HyperlinkIndexPair; 350*cdf0e10cSrcweir typedef ::std::vector<HyperlinkIndexPair> HyperlinkIndexPairVector; 351*cdf0e10cSrcweir mutable HyperlinkIndexPairVector maHyperlinkIndices; 352*cdf0e10cSrcweir mutable HyperlinkRegions maHyperlinkRegions; 353*cdf0e10cSrcweir 354*cdf0e10cSrcweir /// Delegated subset handling 355*cdf0e10cSrcweir mutable DrawShapeSubsetting maSubsetting; 356*cdf0e10cSrcweir 357*cdf0e10cSrcweir /// Whether this shape is currently in animation mode (value != 0) 358*cdf0e10cSrcweir int mnIsAnimatedCount; 359*cdf0e10cSrcweir 360*cdf0e10cSrcweir /// Number of times the bitmap animation shall loop 361*cdf0e10cSrcweir ::std::size_t mnAnimationLoopCount; 362*cdf0e10cSrcweir 363*cdf0e10cSrcweir /// Cycle mode for bitmap animation 364*cdf0e10cSrcweir CycleMode meCycleMode; 365*cdf0e10cSrcweir 366*cdf0e10cSrcweir /// Whether shape is visible (without attribute layers) 367*cdf0e10cSrcweir bool mbIsVisible; 368*cdf0e10cSrcweir 369*cdf0e10cSrcweir /// Whether redraw is necessary, regardless of state ids 370*cdf0e10cSrcweir mutable bool mbForceUpdate; 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir /// Whether attribute layer was revoked (making a redraw necessary) 373*cdf0e10cSrcweir mutable bool mbAttributeLayerRevoked; 374*cdf0e10cSrcweir 375*cdf0e10cSrcweir /// whether a drawing layer animation has to be performed 376*cdf0e10cSrcweir bool mbDrawingLayerAnim; 377*cdf0e10cSrcweir 378*cdf0e10cSrcweir }; 379*cdf0e10cSrcweir } 380*cdf0e10cSrcweir } 381*cdf0e10cSrcweir 382*cdf0e10cSrcweir #endif /* INCLUDED_SLIDESHOW_DRAWSHAPE_HXX */ 383