summaryrefslogtreecommitdiff
path: root/canvas/source/vcl/spritecanvashelper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'canvas/source/vcl/spritecanvashelper.cxx')
-rw-r--r--canvas/source/vcl/spritecanvashelper.cxx146
1 files changed, 48 insertions, 98 deletions
diff --git a/canvas/source/vcl/spritecanvashelper.cxx b/canvas/source/vcl/spritecanvashelper.cxx
index 00ba17541b3b..fd4bb1d6bf68 100644
--- a/canvas/source/vcl/spritecanvashelper.cxx
+++ b/canvas/source/vcl/spritecanvashelper.cxx
@@ -19,7 +19,6 @@
#include <sal/config.h>
-#include <boost/bind.hpp>
#include <boost/cast.hpp>
#include <basegfx/range/b2drectangle.hxx>
@@ -99,63 +98,6 @@ namespace vclcanvas
// frontbuffer
}
- /** Repaint sprite at original position
-
- Used for opaque updates, which render directly to the
- front buffer.
- */
- void spriteRedrawStub( OutputDevice& rOutDev,
- const ::canvas::Sprite::Reference& rSprite )
- {
- if( rSprite.is() )
- {
- ::boost::polymorphic_downcast< Sprite* >(
- rSprite.get() )->redraw( rOutDev,
- false );
- }
- }
-
- /** Repaint sprite at given position
-
- Used for generic update, which renders into vdev of
- adapted size.
- */
- void spriteRedrawStub2( OutputDevice& rOutDev,
- const ::basegfx::B2DPoint& rOutPos,
- const ::canvas::Sprite::Reference& rSprite )
- {
- if( rSprite.is() )
- {
- Sprite* pSprite = ::boost::polymorphic_downcast< Sprite* >(
- rSprite.get() );
-
- // calc relative sprite position in rUpdateArea (which
- // need not be the whole screen!)
- const ::basegfx::B2DPoint& rSpriteScreenPos( pSprite->getPosPixel() );
- const ::basegfx::B2DPoint& rSpriteRenderPos( rSpriteScreenPos - rOutPos );
-
- pSprite->redraw( rOutDev, rSpriteRenderPos, true );
- }
- }
-
- /** Repaint sprite at original position
-
- Used for opaque updates from scrollUpdate(), which render
- directly to the front buffer.
- */
- void spriteRedrawStub3( OutputDevice& rOutDev,
- const ::canvas::SpriteRedrawManager::AreaComponent& rComponent )
- {
- const ::canvas::Sprite::Reference& rSprite( rComponent.second.getSprite() );
-
- if( rSprite.is() )
- {
- ::boost::polymorphic_downcast< Sprite* >(
- rSprite.get() )->redraw( rOutDev,
- false );
- }
- }
-
void renderInfoText( OutputDevice& rOutDev,
const OUString& rStr,
const Point& rPos )
@@ -320,11 +262,11 @@ namespace vclcanvas
// repaint all active sprites on top of background into
// VDev.
+ OutputDevice& rTmpOutDev( *maVDev.get() );
mpRedrawManager->forEachSprite(
- ::boost::bind(
- &spriteRedraw,
- ::boost::ref( *maVDev.get() ),
- _1 ) );
+ [&rTmpOutDev]( const ::canvas::Sprite::Reference& rSprite )
+ { spriteRedraw( rTmpOutDev, rSprite ); }
+ );
// flush to screen
rOutDev.EnableMapMode( false );
@@ -433,12 +375,15 @@ namespace vclcanvas
// opaque sprite content)
// repaint all affected sprites directly to output device
- ::std::for_each( rUpdateArea.maComponentList.begin(),
- rUpdateArea.maComponentList.end(),
- ::boost::bind(
- &spriteRedrawStub3,
- ::boost::ref( rOutDev ),
- _1 ) );
+ for( const auto rComponent : rUpdateArea.maComponentList )
+ {
+ const ::canvas::Sprite::Reference& rSprite( rComponent.second.getSprite() );
+
+ if( rSprite.is() )
+ ::boost::polymorphic_downcast< Sprite* >(
+ rSprite.get() )->redraw( rOutDev,
+ false );
+ }
}
else
{
@@ -459,12 +404,11 @@ namespace vclcanvas
// clip here, since we're only repainting _parts_ of the
// sprite
rOutDev.Push( PushFlags::CLIPREGION );
- ::std::for_each( aUnscrollableAreas.begin(),
- aUnscrollableAreas.end(),
- ::boost::bind( &opaqueUpdateSpriteArea,
- ::boost::cref(aFirst->second.getSprite()),
- ::boost::ref(rOutDev),
- _1 ) );
+
+ for( const auto& rArea : aUnscrollableAreas )
+ opaqueUpdateSpriteArea( aFirst->second.getSprite(),
+ rOutDev, rArea );
+
rOutDev.Pop();
}
@@ -475,12 +419,9 @@ namespace vclcanvas
::basegfx::computeSetDifference( aUncoveredAreas,
rUpdateArea.maTotalBounds,
::basegfx::B2DRange( rDestRect ) );
- ::std::for_each( aUncoveredAreas.begin(),
- aUncoveredAreas.end(),
- ::boost::bind( &repaintBackground,
- ::boost::ref(rOutDev),
- ::boost::ref(rBackOutDev),
- _1 ) );
+
+ for( const auto& rArea : aUncoveredAreas )
+ repaintBackground( rOutDev, rBackOutDev, rArea );
}
void SpriteCanvasHelper::opaqueUpdate( SAL_UNUSED_PARAMETER const ::basegfx::B2DRange&,
@@ -501,12 +442,13 @@ namespace vclcanvas
// and the update will be constrained to that rect.
// repaint all affected sprites directly to output device
- ::std::for_each( rSortedUpdateSprites.begin(),
- rSortedUpdateSprites.end(),
- ::boost::bind(
- &spriteRedrawStub,
- ::boost::ref( rOutDev ),
- _1 ) );
+ for( const auto& rSprite : rSortedUpdateSprites )
+ {
+ if( rSprite.is() )
+ ::boost::polymorphic_downcast< Sprite* >(
+ rSprite.get() )->redraw( rOutDev,
+ false );
+ }
}
void SpriteCanvasHelper::genericUpdate( const ::basegfx::B2DRange& rRequestedArea,
@@ -578,13 +520,22 @@ namespace vclcanvas
// repaint all affected sprites on top of background into
// VDev.
- ::std::for_each( rSortedUpdateSprites.begin(),
- rSortedUpdateSprites.end(),
- ::boost::bind( &spriteRedrawStub2,
- ::boost::ref( *maVDev.get() ),
- vcl::unotools::b2DPointFromPoint(
- aOutputPosition),
- _1 ) );
+ for( const auto& rSprite : rSortedUpdateSprites )
+ {
+ if( rSprite.is() )
+ {
+ Sprite* pSprite = ::boost::polymorphic_downcast< Sprite* >( rSprite.get() );
+
+ // calc relative sprite position in rUpdateArea (which
+ // need not be the whole screen!)
+ const ::basegfx::B2DPoint& rSpriteScreenPos( pSprite->getPosPixel() );
+ const ::basegfx::B2DPoint& rSpriteRenderPos(
+ rSpriteScreenPos - vcl::unotools::b2DPointFromPoint(aOutputPosition)
+ );
+
+ pSprite->redraw( *maVDev.get(), rSpriteRenderPos, true );
+ }
+ }
// flush to screen
rOutDev.EnableMapMode( false );
@@ -673,11 +624,10 @@ namespace vclcanvas
double nPixel(0.0);
// accumulate pixel count for each sprite into fCount
- mpRedrawManager->forEachSprite( ::boost::bind(
- makeAdder(nPixel,1.0),
- ::boost::bind(
- &calcNumPixel,
- _1 ) ) );
+ mpRedrawManager->forEachSprite(
+ [&nPixel]( const ::canvas::Sprite::Reference& rSprite )
+ { makeAdder( nPixel, 1.0 )( calcNumPixel(rSprite) ); }
+ );
static const int NUM_VIRDEV(2);
static const int BYTES_PER_PIXEL(3);