80 const ::basegfx::B2DRange& rTrueUpdateArea,
83 maTrueUpdateArea( rTrueUpdateArea ),
84 mbNeedsUpdate( bNeedsUpdate ),
109 const ::basegfx::B2DRange& rTrueUpdateArea,
113 maTrueUpdateArea( rTrueUpdateArea ),
114 mbNeedsUpdate( bNeedsUpdate ),
115 mbIsPureMove( bIsPureMove )
122 const ::basegfx::B2DRange&
getUpdateArea()
const {
return maTrueUpdateArea; }
144 const ::basegfx::B2DPoint& rOldPos,
145 const ::basegfx::B2DPoint& rNewPos,
146 const ::basegfx::B2DVector& rSpriteSize ) :
150 maUpdateArea( rNewPos.getX(),
152 rNewPos.getX() + rSpriteSize.getX(),
153 rNewPos.getY() + rSpriteSize.getY() )
158 const ::basegfx::B2DPoint& rPos,
159 const ::basegfx::B2DRange& rUpdateArea ) :
163 maUpdateArea( rUpdateArea )
197 mrManager( rManager )
203 mrManager.handleArea( mrFunc, rUpdateArea );
239 SpriteConnectedRanges aUpdateAreas;
241 setupUpdateAreas( aUpdateAreas );
256 template<
typename Functor >
void forEachSprite(
const Functor& rFunc )
const
264 void clearChangeRecords();
270 const ::basegfx::B2DPoint& rOldPos,
271 const ::basegfx::B2DPoint& rNewPos,
272 const ::basegfx::B2DVector& rSpriteSize );
274 const ::basegfx::B2DPoint& rPos,
275 const ::basegfx::B2DRange& rUpdateArea );
284 template<
typename Functor >
void handleArea( Functor& rFunc,
285 const UpdateArea& rUpdateArea )
const
289 if( areSpritesChanged( rUpdateArea ) )
307 const ::std::size_t nNumSprites(
310 if( isAreaUpdateScroll( aMoveStart,
315 rFunc.scrollUpdate( aMoveStart,
324 VectorOfSprites aSortedUpdateSprites;
329 aSortedUpdateSprites.push_back( rSprite );
332 ::std::sort( aSortedUpdateSprites.begin(),
333 aSortedUpdateSprites.end(),
336 if( isAreaUpdateOpaque( rUpdateArea,
340 aSortedUpdateSprites );
345 aSortedUpdateSprites );
356 void setupUpdateAreas( SpriteConnectedRanges& rUpdateAreas )
const;
358 bool areSpritesChanged(
const UpdateArea& rUpdateArea )
const;
360 bool isAreaUpdateNotOpaque( const ::basegfx::B2DRectangle& rUpdateRect,
361 const AreaComponent& rComponent )
const;
363 bool isAreaUpdateOpaque(
const UpdateArea& rUpdateArea,
364 ::std::size_t nNumSprites )
const;
381 const UpdateArea& rUpdateArea,
382 ::std::size_t nNumSprites )
const;
::basegfx::B2DRange maTrueUpdateArea
Functor providing a StrictWeakOrdering for sprite references.
void forEachSpriteArea(Functor &rFunc) const
Call given functor for each sprite area that needs an update.
::basegfx::B2DConnectedRanges< SpriteInfo > SpriteConnectedRanges
Functor, to be used from forEachSpriteArea.
ComponentListType maComponentList
void operator()(const UpdateArea &rUpdateArea)
SpriteChangeRecord(const Sprite::Reference &rSprite, const ::basegfx::B2DPoint &rOldPos, const ::basegfx::B2DPoint &rNewPos, const ::basegfx::B2DVector &rSpriteSize)
const Sprite::Reference & getSprite() const
::basegfx::B2DRange maUpdateArea
AreaUpdateCaller(Functor &rFunc, const SpriteRedrawManager &rManager)
This class manages smooth SpriteCanvas updates.
const SpriteRedrawManager & mrManager
Data container for the connected components list.
::std::pair< B2DRange, UserData > ComponentType
const ::basegfx::B2DRange & getUpdateArea() const
VectorOfChangeRecords maChangeRecords
SpriteInfo(const Sprite::Reference &rRef, const ::basegfx::B2DRange &rTrueUpdateArea, bool bNeedsUpdate)
Create sprite info.
VectorOfSprites maSprites
SpriteConnectedRanges::ComponentType AreaComponent
SpriteInfo(const Sprite::Reference &rRef, const ::basegfx::B2DRange &rTrueUpdateArea, bool bNeedsUpdate, bool bIsPureMove)
Create sprite info, specify move type.
::std::vector< Sprite::Reference > VectorOfSprites
void forEachSprite(const Functor &rFunc) const
Call given functor for each active sprite.
::basegfx::B2DPoint maOldPos
std::weak_ptr< cppcanvas::CustomSprite > mpSprite
Helper struct for SpriteTracer template.
::std::vector< SpriteChangeRecord > VectorOfChangeRecords
void handleArea(Functor &rFunc, const UpdateArea &rUpdateArea) const
Internal, handles each distinct component for forEachAggregate()
SpriteChangeRecord(const Sprite::Reference &rSprite, const ::basegfx::B2DPoint &rPos, const ::basegfx::B2DRange &rUpdateArea)
Sprite::Reference mpAffectedSprite
SpriteConnectedRanges::ConnectedComponents UpdateArea
const Sprite::Reference & getSprite() const
Sprite::Reference mpSprite
Sprite::Reference mpAffectedSprite
UnaryFunctor forEachAggregate(UnaryFunctor aFunctor) const