[Libreoffice-commits] core.git: canvas/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Sat Apr 18 20:00:31 UTC 2020
canvas/source/cairo/cairo_canvasfont.cxx | 34 -
canvas/source/cairo/cairo_canvashelper.cxx | 82 ++--
canvas/source/cairo/cairo_devicehelper.cxx | 24 -
canvas/source/cairo/cairo_spritehelper.cxx | 132 +++----
canvas/source/opengl/ogl_canvashelper.cxx | 26 -
canvas/source/tools/canvascustomspritehelper.cxx | 152 ++++----
canvas/source/tools/spriteredrawmanager.cxx | 68 +--
canvas/source/tools/verifyinput.cxx | 108 +++---
canvas/source/vcl/backbuffer.cxx | 20 -
canvas/source/vcl/bitmapbackbuffer.cxx | 36 +-
canvas/source/vcl/canvashelper.cxx | 144 ++++----
canvas/source/vcl/devicehelper.cxx | 24 -
canvas/source/vcl/spritecanvashelper.cxx | 80 ++--
canvas/source/vcl/spritehelper.cxx | 414 +++++++++++------------
14 files changed, 672 insertions(+), 672 deletions(-)
New commits:
commit 7fa4f6409828eb77b710c8da54ff066174a7c20c
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Sat Apr 18 14:13:49 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sat Apr 18 21:59:55 2020 +0200
loplugin:flatten in canvas
Change-Id: If14af63ab4f8fc7b9807319a2100f371ee103465
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92481
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/canvas/source/cairo/cairo_canvasfont.cxx b/canvas/source/cairo/cairo_canvasfont.cxx
index 472c18cb932b..6ba15411c9aa 100644
--- a/canvas/source/cairo/cairo_canvasfont.cxx
+++ b/canvas/source/cairo/cairo_canvasfont.cxx
@@ -59,30 +59,30 @@ namespace cairocanvas
maFont->SetLanguage( LanguageTag::convertToLanguageType( rFontRequest.Locale, false));
// adjust to stretched/shrunk font
- if( !::rtl::math::approxEqual( rFontMatrix.m00, rFontMatrix.m11) )
- {
- VclPtr<OutputDevice> pOutDev( mpRefDevice->getOutputDevice() );
+ if( ::rtl::math::approxEqual( rFontMatrix.m00, rFontMatrix.m11) )
+ return;
- if( pOutDev )
- {
- const bool bOldMapState( pOutDev->IsMapModeEnabled() );
- pOutDev->EnableMapMode(false);
+ VclPtr<OutputDevice> pOutDev( mpRefDevice->getOutputDevice() );
- const Size aSize = pOutDev->GetFontMetric( *maFont ).GetFontSize();
+ if( !pOutDev )
+ return;
- const double fDividend( rFontMatrix.m10 + rFontMatrix.m11 );
- double fStretch = rFontMatrix.m00 + rFontMatrix.m01;
+ const bool bOldMapState( pOutDev->IsMapModeEnabled() );
+ pOutDev->EnableMapMode(false);
- if( !::basegfx::fTools::equalZero( fDividend) )
- fStretch /= fDividend;
+ const Size aSize = pOutDev->GetFontMetric( *maFont ).GetFontSize();
- const long nNewWidth = ::basegfx::fround( aSize.Width() * fStretch );
+ const double fDividend( rFontMatrix.m10 + rFontMatrix.m11 );
+ double fStretch = rFontMatrix.m00 + rFontMatrix.m01;
- maFont->SetAverageFontWidth( nNewWidth );
+ if( !::basegfx::fTools::equalZero( fDividend) )
+ fStretch /= fDividend;
- pOutDev->EnableMapMode(bOldMapState);
- }
- }
+ const long nNewWidth = ::basegfx::fround( aSize.Width() * fStretch );
+
+ maFont->SetAverageFontWidth( nNewWidth );
+
+ pOutDev->EnableMapMode(bOldMapState);
}
void SAL_CALL CanvasFont::disposing()
diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx
index b53c6eed2904..533953e12891 100644
--- a/canvas/source/cairo/cairo_canvashelper.cxx
+++ b/canvas/source/cairo/cairo_canvashelper.cxx
@@ -216,25 +216,25 @@ namespace cairocanvas
{
SAL_INFO( "canvas.cairo", "clear whole area: " << maSize.getX() << " x " << maSize.getY() );
- if( mpCairo )
- {
- cairo_save( mpCairo.get() );
+ if( !mpCairo )
+ return;
- cairo_identity_matrix( mpCairo.get() );
- // this does not really differ from all-zero, as cairo
- // internally converts to premultiplied alpha. but anyway,
- // this keeps it consistent with the other canvas impls
- if( mbHaveAlpha )
- cairo_set_source_rgba( mpCairo.get(), 1.0, 1.0, 1.0, 0.0 );
- else
- cairo_set_source_rgb( mpCairo.get(), 1.0, 1.0, 1.0 );
- cairo_set_operator( mpCairo.get(), CAIRO_OPERATOR_SOURCE );
+ cairo_save( mpCairo.get() );
- cairo_rectangle( mpCairo.get(), 0, 0, maSize.getX(), maSize.getY() );
- cairo_fill( mpCairo.get() );
+ cairo_identity_matrix( mpCairo.get() );
+ // this does not really differ from all-zero, as cairo
+ // internally converts to premultiplied alpha. but anyway,
+ // this keeps it consistent with the other canvas impls
+ if( mbHaveAlpha )
+ cairo_set_source_rgba( mpCairo.get(), 1.0, 1.0, 1.0, 0.0 );
+ else
+ cairo_set_source_rgb( mpCairo.get(), 1.0, 1.0, 1.0 );
+ cairo_set_operator( mpCairo.get(), CAIRO_OPERATOR_SOURCE );
- cairo_restore( mpCairo.get() );
- }
+ cairo_rectangle( mpCairo.get(), 0, 0, maSize.getX(), maSize.getY() );
+ cairo_fill( mpCairo.get() );
+
+ cairo_restore( mpCairo.get() );
}
void CanvasHelper::drawLine( const rendering::XCanvas* /*pCanvas*/,
@@ -243,20 +243,20 @@ namespace cairocanvas
const rendering::ViewState& viewState,
const rendering::RenderState& renderState )
{
- if( mpCairo )
- {
- cairo_save( mpCairo.get() );
+ if( !mpCairo )
+ return;
- cairo_set_line_width( mpCairo.get(), 1 );
+ cairo_save( mpCairo.get() );
- useStates( viewState, renderState, true );
+ cairo_set_line_width( mpCairo.get(), 1 );
- cairo_move_to( mpCairo.get(), aStartPoint.X + 0.5, aStartPoint.Y + 0.5 );
- cairo_line_to( mpCairo.get(), aEndPoint.X + 0.5, aEndPoint.Y + 0.5 );
- cairo_stroke( mpCairo.get() );
+ useStates( viewState, renderState, true );
- cairo_restore( mpCairo.get() );
- }
+ cairo_move_to( mpCairo.get(), aStartPoint.X + 0.5, aStartPoint.Y + 0.5 );
+ cairo_line_to( mpCairo.get(), aEndPoint.X + 0.5, aEndPoint.Y + 0.5 );
+ cairo_stroke( mpCairo.get() );
+
+ cairo_restore( mpCairo.get() );
}
void CanvasHelper::drawBezier( const rendering::XCanvas* ,
@@ -265,25 +265,25 @@ namespace cairocanvas
const rendering::ViewState& viewState,
const rendering::RenderState& renderState )
{
- if( mpCairo )
- {
- cairo_save( mpCairo.get() );
+ if( !mpCairo )
+ return;
- cairo_set_line_width( mpCairo.get(), 1 );
+ cairo_save( mpCairo.get() );
- useStates( viewState, renderState, true );
+ cairo_set_line_width( mpCairo.get(), 1 );
- cairo_move_to( mpCairo.get(), aBezierSegment.Px + 0.5, aBezierSegment.Py + 0.5 );
- // tdf#99165 correction of control points not needed here, only hairlines drawn
- // (see cairo_set_line_width above)
- cairo_curve_to( mpCairo.get(),
- aBezierSegment.C1x + 0.5, aBezierSegment.C1y + 0.5,
- aBezierSegment.C2x + 0.5, aBezierSegment.C2y + 0.5,
- aEndPoint.X + 0.5, aEndPoint.Y + 0.5 );
- cairo_stroke( mpCairo.get() );
+ useStates( viewState, renderState, true );
- cairo_restore( mpCairo.get() );
- }
+ cairo_move_to( mpCairo.get(), aBezierSegment.Px + 0.5, aBezierSegment.Py + 0.5 );
+ // tdf#99165 correction of control points not needed here, only hairlines drawn
+ // (see cairo_set_line_width above)
+ cairo_curve_to( mpCairo.get(),
+ aBezierSegment.C1x + 0.5, aBezierSegment.C1y + 0.5,
+ aBezierSegment.C2x + 0.5, aBezierSegment.C2y + 0.5,
+ aEndPoint.X + 0.5, aEndPoint.Y + 0.5 );
+ cairo_stroke( mpCairo.get() );
+
+ cairo_restore( mpCairo.get() );
}
#define PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME "Canvas::ParametricPolyPolygon"
diff --git a/canvas/source/cairo/cairo_devicehelper.cxx b/canvas/source/cairo/cairo_devicehelper.cxx
index a3dc51ce6ff7..e802e79cc2dd 100644
--- a/canvas/source/cairo/cairo_devicehelper.cxx
+++ b/canvas/source/cairo/cairo_devicehelper.cxx
@@ -232,21 +232,21 @@ namespace cairocanvas
{
static sal_Int32 nFilePostfixCount(0);
- if( mpRefDevice )
- {
- OUString aFilename = "dbg_frontbuffer" + OUString::number(nFilePostfixCount) + ".bmp";
+ if( !mpRefDevice )
+ return;
- SvFileStream aStream( aFilename, StreamMode::STD_READWRITE );
+ OUString aFilename = "dbg_frontbuffer" + OUString::number(nFilePostfixCount) + ".bmp";
- const ::Point aEmptyPoint;
- bool bOldMap( mpRefDevice->IsMapModeEnabled() );
- mpRefDevice->EnableMapMode( false );
- const ::BitmapEx aTempBitmap(mpRefDevice->GetBitmapEx(aEmptyPoint, mpRefDevice->GetOutputSizePixel()));
- WriteDIB(aTempBitmap, aStream, false);
- mpRefDevice->EnableMapMode( bOldMap );
+ SvFileStream aStream( aFilename, StreamMode::STD_READWRITE );
- ++nFilePostfixCount;
- }
+ const ::Point aEmptyPoint;
+ bool bOldMap( mpRefDevice->IsMapModeEnabled() );
+ mpRefDevice->EnableMapMode( false );
+ const ::BitmapEx aTempBitmap(mpRefDevice->GetBitmapEx(aEmptyPoint, mpRefDevice->GetOutputSizePixel()));
+ WriteDIB(aTempBitmap, aStream, false);
+ mpRefDevice->EnableMapMode( bOldMap );
+
+ ++nFilePostfixCount;
}
SurfaceSharedPtr DeviceHelper::createSurface( const ::basegfx::B2ISize& rSize, int aContent )
diff --git a/canvas/source/cairo/cairo_spritehelper.cxx b/canvas/source/cairo/cairo_spritehelper.cxx
index 8faf7be3a974..aafab160c51d 100644
--- a/canvas/source/cairo/cairo_spritehelper.cxx
+++ b/canvas/source/cairo/cairo_spritehelper.cxx
@@ -83,75 +83,75 @@ namespace cairocanvas
const double fAlpha( getAlpha() );
const ::basegfx::B2DHomMatrix aTransform( getTransformation() );
- if( isActive() && !::basegfx::fTools::equalZero( fAlpha ) )
+ if( !(isActive() && !::basegfx::fTools::equalZero( fAlpha )) )
+ return;
+
+ SAL_INFO( "canvas.cairo", "CanvasCustomSprite::redraw called");
+ if( !pCairo )
+ return;
+
+ basegfx::B2DVector aSize = getSizePixel();
+ cairo_save( pCairo.get() );
+
+ double fX, fY;
+
+ fX = rPos.getX();
+ fY = rPos.getY();
+
+ if( !aTransform.isIdentity() )
+ {
+ cairo_matrix_t aMatrix, aInverseMatrix;
+ cairo_matrix_init( &aMatrix,
+ aTransform.get( 0, 0 ), aTransform.get( 1, 0 ), aTransform.get( 0, 1 ),
+ aTransform.get( 1, 1 ), aTransform.get( 0, 2 ), aTransform.get( 1, 2 ) );
+
+ aMatrix.x0 = basegfx::fround( aMatrix.x0 );
+ aMatrix.y0 = basegfx::fround( aMatrix.y0 );
+
+ cairo_matrix_init( &aInverseMatrix, aMatrix.xx, aMatrix.yx, aMatrix.xy, aMatrix.yy, aMatrix.x0, aMatrix.y0 );
+ cairo_matrix_invert( &aInverseMatrix );
+ cairo_matrix_transform_distance( &aInverseMatrix, &fX, &fY );
+
+ cairo_set_matrix( pCairo.get(), &aMatrix );
+ }
+
+ fX = basegfx::fround( fX );
+ fY = basegfx::fround( fY );
+
+ cairo_matrix_t aOrigMatrix;
+ cairo_get_matrix( pCairo.get(), &aOrigMatrix );
+ cairo_translate( pCairo.get(), fX, fY );
+
+ if( getClip().is() )
{
- SAL_INFO( "canvas.cairo", "CanvasCustomSprite::redraw called");
- if( pCairo )
- {
- basegfx::B2DVector aSize = getSizePixel();
- cairo_save( pCairo.get() );
-
- double fX, fY;
-
- fX = rPos.getX();
- fY = rPos.getY();
-
- if( !aTransform.isIdentity() )
- {
- cairo_matrix_t aMatrix, aInverseMatrix;
- cairo_matrix_init( &aMatrix,
- aTransform.get( 0, 0 ), aTransform.get( 1, 0 ), aTransform.get( 0, 1 ),
- aTransform.get( 1, 1 ), aTransform.get( 0, 2 ), aTransform.get( 1, 2 ) );
-
- aMatrix.x0 = basegfx::fround( aMatrix.x0 );
- aMatrix.y0 = basegfx::fround( aMatrix.y0 );
-
- cairo_matrix_init( &aInverseMatrix, aMatrix.xx, aMatrix.yx, aMatrix.xy, aMatrix.yy, aMatrix.x0, aMatrix.y0 );
- cairo_matrix_invert( &aInverseMatrix );
- cairo_matrix_transform_distance( &aInverseMatrix, &fX, &fY );
-
- cairo_set_matrix( pCairo.get(), &aMatrix );
- }
-
- fX = basegfx::fround( fX );
- fY = basegfx::fround( fY );
-
- cairo_matrix_t aOrigMatrix;
- cairo_get_matrix( pCairo.get(), &aOrigMatrix );
- cairo_translate( pCairo.get(), fX, fY );
-
- if( getClip().is() )
- {
- const uno::Reference<rendering::XPolyPolygon2D>& rClip( getClip() );
-
- ::basegfx::B2DPolyPolygon aClipPoly(
- ::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(
- rClip ));
-
- doPolyPolygonImplementation( aClipPoly, Clip, pCairo.get(),
- nullptr, SurfaceProviderRef(mpSpriteCanvas.get()),
- rClip->getFillRule() );
- }
-
- SAL_INFO( "canvas.cairo","aSize " << aSize.getX() << " x " << aSize.getY() << " position: " << fX << "," << fY );
- cairo_rectangle( pCairo.get(), 0, 0, floor( aSize.getX() ), floor( aSize.getY() ) );
- cairo_clip( pCairo.get() );
- cairo_set_matrix( pCairo.get(), &aOrigMatrix );
-
- if( isContentFullyOpaque() )
- cairo_set_operator( pCairo.get(), CAIRO_OPERATOR_SOURCE );
- cairo_set_source_surface( pCairo.get(),
- mpBufferSurface->getCairoSurface().get(),
- fX, fY );
- if( ::rtl::math::approxEqual( fAlpha, 1.0 ) )
- cairo_paint( pCairo.get() );
- else
- cairo_paint_with_alpha( pCairo.get(), fAlpha );
-
- cairo_restore( pCairo.get() );
- }
+ const uno::Reference<rendering::XPolyPolygon2D>& rClip( getClip() );
+
+ ::basegfx::B2DPolyPolygon aClipPoly(
+ ::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(
+ rClip ));
+
+ doPolyPolygonImplementation( aClipPoly, Clip, pCairo.get(),
+ nullptr, SurfaceProviderRef(mpSpriteCanvas.get()),
+ rClip->getFillRule() );
}
+ SAL_INFO( "canvas.cairo","aSize " << aSize.getX() << " x " << aSize.getY() << " position: " << fX << "," << fY );
+ cairo_rectangle( pCairo.get(), 0, 0, floor( aSize.getX() ), floor( aSize.getY() ) );
+ cairo_clip( pCairo.get() );
+ cairo_set_matrix( pCairo.get(), &aOrigMatrix );
+
+ if( isContentFullyOpaque() )
+ cairo_set_operator( pCairo.get(), CAIRO_OPERATOR_SOURCE );
+ cairo_set_source_surface( pCairo.get(),
+ mpBufferSurface->getCairoSurface().get(),
+ fX, fY );
+ if( ::rtl::math::approxEqual( fAlpha, 1.0 ) )
+ cairo_paint( pCairo.get() );
+ else
+ cairo_paint_with_alpha( pCairo.get(), fAlpha );
+
+ cairo_restore( pCairo.get() );
+
#ifdef CAIRO_CANVAS_PERF_TRACE
mxDevice->stopPerfTrace( &aTimer, "sprite redraw" );
#endif
diff --git a/canvas/source/opengl/ogl_canvashelper.cxx b/canvas/source/opengl/ogl_canvashelper.cxx
index 94a571f7f3e1..4095650791e9 100644
--- a/canvas/source/opengl/ogl_canvashelper.cxx
+++ b/canvas/source/opengl/ogl_canvashelper.cxx
@@ -400,21 +400,21 @@ namespace oglcanvas
const rendering::ViewState& viewState,
const rendering::RenderState& renderState )
{
- if( mpDevice )
- {
- mpRecordedActions->push_back( Action() );
- Action& rAct=mpRecordedActions->back();
+ if( !mpDevice )
+ return;
- setupGraphicsState( rAct, viewState, renderState );
+ mpRecordedActions->push_back( Action() );
+ Action& rAct=mpRecordedActions->back();
- // TODO(F2): subdivide&render whole curve
- rAct.maFunction = std::bind(&lcl_drawLine,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5,
- geometry::RealPoint2D(
- aBezierSegment.Px,
- aBezierSegment.Py),
- aEndPoint);
- }
+ setupGraphicsState( rAct, viewState, renderState );
+
+ // TODO(F2): subdivide&render whole curve
+ rAct.maFunction = std::bind(&lcl_drawLine,
+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5,
+ geometry::RealPoint2D(
+ aBezierSegment.Px,
+ aBezierSegment.Py),
+ aEndPoint);
}
uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawPolyPolygon( const rendering::XCanvas* /*pCanvas*/,
diff --git a/canvas/source/tools/canvascustomspritehelper.cxx b/canvas/source/tools/canvascustomspritehelper.cxx
index e98ecf4b27ed..5b1c65eba584 100644
--- a/canvas/source/tools/canvascustomspritehelper.cxx
+++ b/canvas/source/tools/canvascustomspritehelper.cxx
@@ -194,29 +194,29 @@ namespace canvas
{
// check whether bitmap is non-alpha, and whether its
// transformed size covers the whole sprite.
- if( !xBitmap->hasAlpha() )
+ if( xBitmap->hasAlpha() )
+ return;
+
+ const geometry::IntegerSize2D& rInputSize(
+ xBitmap->getSize() );
+ const ::basegfx::B2DSize& rOurSize(
+ rSprite->getSizePixel() );
+
+ ::basegfx::B2DHomMatrix aTransform;
+ if( tools::isInside(
+ ::basegfx::B2DRectangle( 0.0,0.0,
+ rOurSize.getX(),
+ rOurSize.getY() ),
+ ::basegfx::B2DRectangle( 0.0,0.0,
+ rInputSize.Width,
+ rInputSize.Height ),
+ ::canvas::tools::mergeViewAndRenderTransform(aTransform,
+ viewState,
+ renderState) ) )
{
- const geometry::IntegerSize2D& rInputSize(
- xBitmap->getSize() );
- const ::basegfx::B2DSize& rOurSize(
- rSprite->getSizePixel() );
-
- ::basegfx::B2DHomMatrix aTransform;
- if( tools::isInside(
- ::basegfx::B2DRectangle( 0.0,0.0,
- rOurSize.getX(),
- rOurSize.getY() ),
- ::basegfx::B2DRectangle( 0.0,0.0,
- rInputSize.Width,
- rInputSize.Height ),
- ::canvas::tools::mergeViewAndRenderTransform(aTransform,
- viewState,
- renderState) ) )
- {
- // bitmap is opaque and will fully cover the sprite,
- // set flag appropriately
- mbIsContentFullyOpaque = true;
- }
+ // bitmap is opaque and will fully cover the sprite,
+ // set flag appropriately
+ mbIsContentFullyOpaque = true;
}
}
@@ -257,23 +257,23 @@ namespace canvas
::basegfx::unotools::b2DPointFromRealPoint2D(aNewPos) );
aPoint *= aTransform;
- if( aPoint != maPosition )
- {
- const ::basegfx::B2DRectangle& rBounds
- = getUpdateArea( ::basegfx::B2DRectangle( 0.0, 0.0,
- maSize.getX(),
- maSize.getY() ) );
+ if( aPoint == maPosition )
+ return;
- if( mbActive )
- {
- mpSpriteCanvas->moveSprite( rSprite,
- rBounds.getMinimum(),
- rBounds.getMinimum() - maPosition + aPoint,
- rBounds.getRange() );
- }
+ const ::basegfx::B2DRectangle& rBounds
+ = getUpdateArea( ::basegfx::B2DRectangle( 0.0, 0.0,
+ maSize.getX(),
+ maSize.getY() ) );
- maPosition = aPoint;
+ if( mbActive )
+ {
+ mpSpriteCanvas->moveSprite( rSprite,
+ rBounds.getMinimum(),
+ rBounds.getMinimum() - maPosition + aPoint,
+ rBounds.getRange() );
}
+
+ maPosition = aPoint;
}
void CanvasCustomSpriteHelper::transform( const Sprite::Reference& rSprite,
@@ -283,26 +283,26 @@ namespace canvas
::basegfx::unotools::homMatrixFromAffineMatrix(aMatrix,
aTransformation);
- if( maTransform != aMatrix )
- {
- // retrieve bounds before and after transformation change.
- const ::basegfx::B2DRectangle& rPrevBounds( getUpdateArea() );
+ if( maTransform == aMatrix )
+ return;
- maTransform = aMatrix;
+ // retrieve bounds before and after transformation change.
+ const ::basegfx::B2DRectangle& rPrevBounds( getUpdateArea() );
- if( !updateClipState( rSprite ) &&
- mbActive )
- {
- mpSpriteCanvas->updateSprite( rSprite,
- maPosition,
- rPrevBounds );
- mpSpriteCanvas->updateSprite( rSprite,
- maPosition,
- getUpdateArea() );
- }
+ maTransform = aMatrix;
- mbTransformDirty = true;
+ if( !updateClipState( rSprite ) &&
+ mbActive )
+ {
+ mpSpriteCanvas->updateSprite( rSprite,
+ maPosition,
+ rPrevBounds );
+ mpSpriteCanvas->updateSprite( rSprite,
+ maPosition,
+ getUpdateArea() );
}
+
+ mbTransformDirty = true;
}
void CanvasCustomSpriteHelper::clip( const Sprite::Reference& rSprite,
@@ -351,20 +351,20 @@ namespace canvas
if( !mpSpriteCanvas.get() )
return; // we're disposed
- if( !mbActive )
- {
- mpSpriteCanvas->showSprite( rSprite );
- mbActive = true;
+ if( mbActive )
+ return;
- // TODO(P1): if clip is the NULL clip (nothing visible),
- // also save us the update call.
+ mpSpriteCanvas->showSprite( rSprite );
+ mbActive = true;
- if( mfAlpha != 0.0 )
- {
- mpSpriteCanvas->updateSprite( rSprite,
- maPosition,
- getUpdateArea() );
- }
+ // TODO(P1): if clip is the NULL clip (nothing visible),
+ // also save us the update call.
+
+ if( mfAlpha != 0.0 )
+ {
+ mpSpriteCanvas->updateSprite( rSprite,
+ maPosition,
+ getUpdateArea() );
}
}
@@ -373,20 +373,20 @@ namespace canvas
if( !mpSpriteCanvas.get() )
return; // we're disposed
- if( mbActive )
- {
- mpSpriteCanvas->hideSprite( rSprite );
- mbActive = false;
+ if( !mbActive )
+ return;
- // TODO(P1): if clip is the NULL clip (nothing visible),
- // also save us the update call.
+ mpSpriteCanvas->hideSprite( rSprite );
+ mbActive = false;
- if( mfAlpha != 0.0 )
- {
- mpSpriteCanvas->updateSprite( rSprite,
- maPosition,
- getUpdateArea() );
- }
+ // TODO(P1): if clip is the NULL clip (nothing visible),
+ // also save us the update call.
+
+ if( mfAlpha != 0.0 )
+ {
+ mpSpriteCanvas->updateSprite( rSprite,
+ maPosition,
+ getUpdateArea() );
}
}
diff --git a/canvas/source/tools/spriteredrawmanager.cxx b/canvas/source/tools/spriteredrawmanager.cxx
index 110eb5540e73..c1595f459940 100644
--- a/canvas/source/tools/spriteredrawmanager.cxx
+++ b/canvas/source/tools/spriteredrawmanager.cxx
@@ -56,41 +56,41 @@ namespace canvas
{
// only deal with change events from the currently
// affected sprite
- if( rSpriteRecord.mpAffectedSprite == mpAffectedSprite )
+ if( rSpriteRecord.mpAffectedSprite != mpAffectedSprite )
+ return;
+
+ switch( rSpriteRecord.meChangeType )
{
- switch( rSpriteRecord.meChangeType )
- {
- case SpriteRedrawManager::SpriteChangeRecord::ChangeType::move:
- if( !mbIsMove )
- {
- // no move yet - this must be the first one
- maMoveStartArea = ::basegfx::B2DRectangle(
- rSpriteRecord.maOldPos,
- rSpriteRecord.maOldPos + rSpriteRecord.maUpdateArea.getRange() );
- mbIsMove = true;
- }
-
- maMoveEndArea = rSpriteRecord.maUpdateArea;
- break;
-
- case SpriteRedrawManager::SpriteChangeRecord::ChangeType::update:
- // update end update area of the
- // sprite. Thus, every update() action
- // _after_ the last move will correctly
- // update the final repaint area. And this
- // does not interfere with subsequent
- // moves, because moves always perform a
- // hard set of maMoveEndArea to their
- // stored value
- maMoveEndArea.expand( rSpriteRecord.maUpdateArea );
- mbIsGenericUpdate = true;
- break;
-
- default:
- ENSURE_OR_THROW( false,
- "Unexpected case in SpriteUpdater::operator()" );
- break;
- }
+ case SpriteRedrawManager::SpriteChangeRecord::ChangeType::move:
+ if( !mbIsMove )
+ {
+ // no move yet - this must be the first one
+ maMoveStartArea = ::basegfx::B2DRectangle(
+ rSpriteRecord.maOldPos,
+ rSpriteRecord.maOldPos + rSpriteRecord.maUpdateArea.getRange() );
+ mbIsMove = true;
+ }
+
+ maMoveEndArea = rSpriteRecord.maUpdateArea;
+ break;
+
+ case SpriteRedrawManager::SpriteChangeRecord::ChangeType::update:
+ // update end update area of the
+ // sprite. Thus, every update() action
+ // _after_ the last move will correctly
+ // update the final repaint area. And this
+ // does not interfere with subsequent
+ // moves, because moves always perform a
+ // hard set of maMoveEndArea to their
+ // stored value
+ maMoveEndArea.expand( rSpriteRecord.maUpdateArea );
+ mbIsGenericUpdate = true;
+ break;
+
+ default:
+ ENSURE_OR_THROW( false,
+ "Unexpected case in SpriteUpdater::operator()" );
+ break;
}
}
diff --git a/canvas/source/tools/verifyinput.cxx b/canvas/source/tools/verifyinput.cxx
index b454c0bb593a..de69da5e744a 100644
--- a/canvas/source/tools/verifyinput.cxx
+++ b/canvas/source/tools/verifyinput.cxx
@@ -295,20 +295,20 @@ namespace canvas::tools
#endif
}
- if( renderState.CompositeOperation < rendering::CompositeOperation::CLEAR ||
- renderState.CompositeOperation > rendering::CompositeOperation::SATURATE )
- {
+ if( !(renderState.CompositeOperation < rendering::CompositeOperation::CLEAR ||
+ renderState.CompositeOperation > rendering::CompositeOperation::SATURATE) )
+ return;
+
#if OSL_DEBUG_LEVEL > 0
- throw lang::IllegalArgumentException(
- OUString::createFromAscii(pStr) +
- ": verifyInput(): render state's CompositeOperation value out of range (" +
- OUString::number(sal::static_int_cast<sal_Int32>(renderState.CompositeOperation)) +
- " not known)",
- xIf, nArgPos );
+ throw lang::IllegalArgumentException(
+ OUString::createFromAscii(pStr) +
+ ": verifyInput(): render state's CompositeOperation value out of range (" +
+ OUString::number(sal::static_int_cast<sal_Int32>(renderState.CompositeOperation)) +
+ " not known)",
+ xIf, nArgPos );
#else
- throw lang::IllegalArgumentException();
+ throw lang::IllegalArgumentException();
#endif
- }
}
void verifyInput( const rendering::Texture& texture,
@@ -361,20 +361,20 @@ namespace canvas::tools
#endif
}
- if( texture.RepeatModeY < rendering::TexturingMode::NONE ||
- texture.RepeatModeY > rendering::TexturingMode::REPEAT )
- {
+ if( !(texture.RepeatModeY < rendering::TexturingMode::NONE ||
+ texture.RepeatModeY > rendering::TexturingMode::REPEAT) )
+ return;
+
#if OSL_DEBUG_LEVEL > 0
- throw lang::IllegalArgumentException(
- OUString::createFromAscii(pStr) +
- ": verifyInput(): textures' RepeatModeY value is out of range (" +
- OUString::number(sal::static_int_cast<sal_Int32>(texture.RepeatModeY)) +
- " not known)",
- xIf, nArgPos );
+ throw lang::IllegalArgumentException(
+ OUString::createFromAscii(pStr) +
+ ": verifyInput(): textures' RepeatModeY value is out of range (" +
+ OUString::number(sal::static_int_cast<sal_Int32>(texture.RepeatModeY)) +
+ " not known)",
+ xIf, nArgPos );
#else
- throw lang::IllegalArgumentException();
+ throw lang::IllegalArgumentException();
#endif
- }
}
namespace
@@ -483,20 +483,20 @@ namespace canvas::tools
#endif
}
- if( strokeAttributes.JoinType < rendering::PathJoinType::NONE ||
- strokeAttributes.JoinType > rendering::PathJoinType::BEVEL )
- {
+ if( !(strokeAttributes.JoinType < rendering::PathJoinType::NONE ||
+ strokeAttributes.JoinType > rendering::PathJoinType::BEVEL) )
+ return;
+
#if OSL_DEBUG_LEVEL > 0
- throw lang::IllegalArgumentException(
- OUString::createFromAscii(pStr) +
- ": verifyInput(): stroke attributes' JoinType value is out of range (" +
- OUString::number(sal::static_int_cast<sal_Int32>(strokeAttributes.JoinType)) +
- " not known)",
- xIf, nArgPos );
+ throw lang::IllegalArgumentException(
+ OUString::createFromAscii(pStr) +
+ ": verifyInput(): stroke attributes' JoinType value is out of range (" +
+ OUString::number(sal::static_int_cast<sal_Int32>(strokeAttributes.JoinType)) +
+ " not known)",
+ xIf, nArgPos );
#else
- throw lang::IllegalArgumentException();
+ throw lang::IllegalArgumentException();
#endif
- }
}
void verifyInput( const rendering::IntegerBitmapLayout& bitmapLayout,
@@ -552,20 +552,20 @@ namespace canvas::tools
#endif
}
- if( bitmapLayout.ColorSpace->getEndianness() < util::Endianness::LITTLE ||
- bitmapLayout.ColorSpace->getEndianness() > util::Endianness::BIG )
- {
+ if( !(bitmapLayout.ColorSpace->getEndianness() < util::Endianness::LITTLE ||
+ bitmapLayout.ColorSpace->getEndianness() > util::Endianness::BIG) )
+ return;
+
#if OSL_DEBUG_LEVEL > 0
- throw lang::IllegalArgumentException(
- OUString::createFromAscii(pStr) +
- ": verifyInput(): bitmap layout's ColorSpace getEndianness() value is out of range (" +
- OUString::number(sal::static_int_cast<sal_Int32>(bitmapLayout.ColorSpace->getEndianness())) +
- " not known)",
- xIf, nArgPos );
+ throw lang::IllegalArgumentException(
+ OUString::createFromAscii(pStr) +
+ ": verifyInput(): bitmap layout's ColorSpace getEndianness() value is out of range (" +
+ OUString::number(sal::static_int_cast<sal_Int32>(bitmapLayout.ColorSpace->getEndianness())) +
+ " not known)",
+ xIf, nArgPos );
#else
- throw lang::IllegalArgumentException();
+ throw lang::IllegalArgumentException();
#endif
- }
}
void verifyInput( const rendering::FontRequest& fontRequest,
@@ -660,19 +660,19 @@ namespace canvas::tools
#endif
}
- if( size.Height <= 0 )
- {
+ if( size.Height > 0 )
+ return;
+
#if OSL_DEBUG_LEVEL > 0
- throw lang::IllegalArgumentException(
- OUString::createFromAscii(pStr) +
- ": verifyBitmapSize(): size has 0 or negative height (value: " +
- OUString::number(size.Height) +
- ")",
- xIf, 0 );
+ throw lang::IllegalArgumentException(
+ OUString::createFromAscii(pStr) +
+ ": verifyBitmapSize(): size has 0 or negative height (value: " +
+ OUString::number(size.Height) +
+ ")",
+ xIf, 0 );
#else
- throw lang::IllegalArgumentException();
+ throw lang::IllegalArgumentException();
#endif
- }
}
void verifySpriteSize( const geometry::RealSize2D& size,
diff --git a/canvas/source/vcl/backbuffer.cxx b/canvas/source/vcl/backbuffer.cxx
index 291842dfda11..427f77f12d53 100644
--- a/canvas/source/vcl/backbuffer.cxx
+++ b/canvas/source/vcl/backbuffer.cxx
@@ -31,19 +31,19 @@ namespace vclcanvas
maVDev( VclPtr<VirtualDevice>::Create( rRefDevice,
bMonochromeBuffer ? DeviceFormat::BITMASK : DeviceFormat::DEFAULT ) )
{
- if( !bMonochromeBuffer )
- {
- // #i95645#
+ if( bMonochromeBuffer )
+ return;
+
+ // #i95645#
#if defined( MACOSX )
- // use AA on VCLCanvas for Mac
- maVDev->SetAntialiasing( AntialiasingFlags::EnableB2dDraw | maVDev->GetAntialiasing() );
+ // use AA on VCLCanvas for Mac
+ maVDev->SetAntialiasing( AntialiasingFlags::EnableB2dDraw | maVDev->GetAntialiasing() );
#else
- // switch off AA for WIN32 and UNIX, the VCLCanvas does not look good with it and
- // is not required to do AA. It would need to be adapted to use it correctly
- // (especially gradient painting). This will need extra work.
- maVDev->SetAntialiasing( maVDev->GetAntialiasing() & ~AntialiasingFlags::EnableB2dDraw);
+ // switch off AA for WIN32 and UNIX, the VCLCanvas does not look good with it and
+ // is not required to do AA. It would need to be adapted to use it correctly
+ // (especially gradient painting). This will need extra work.
+ maVDev->SetAntialiasing( maVDev->GetAntialiasing() & ~AntialiasingFlags::EnableB2dDraw);
#endif
- }
}
BackBuffer::~BackBuffer()
diff --git a/canvas/source/vcl/bitmapbackbuffer.cxx b/canvas/source/vcl/bitmapbackbuffer.cxx
index 598f1ef04f64..0072a807ea31 100644
--- a/canvas/source/vcl/bitmapbackbuffer.cxx
+++ b/canvas/source/vcl/bitmapbackbuffer.cxx
@@ -106,30 +106,30 @@ namespace vclcanvas
void BitmapBackBuffer::createVDev() const
{
- if( !mpVDev )
- {
- // VDev not yet created, do it now. Create an alpha-VDev,
- // if bitmap has transparency.
- mpVDev = maBitmap->IsTransparent() ?
- VclPtr<VirtualDevice>::Create( mrRefDevice, DeviceFormat::DEFAULT, DeviceFormat::DEFAULT ) :
- VclPtr<VirtualDevice>::Create( mrRefDevice );
+ if( mpVDev )
+ return;
+
+ // VDev not yet created, do it now. Create an alpha-VDev,
+ // if bitmap has transparency.
+ mpVDev = maBitmap->IsTransparent() ?
+ VclPtr<VirtualDevice>::Create( mrRefDevice, DeviceFormat::DEFAULT, DeviceFormat::DEFAULT ) :
+ VclPtr<VirtualDevice>::Create( mrRefDevice );
- OSL_ENSURE( mpVDev,
- "BitmapBackBuffer::createVDev(): Unable to create VirtualDevice" );
+ OSL_ENSURE( mpVDev,
+ "BitmapBackBuffer::createVDev(): Unable to create VirtualDevice" );
- mpVDev->SetOutputSizePixel( maBitmap->GetSizePixel() );
+ mpVDev->SetOutputSizePixel( maBitmap->GetSizePixel() );
- // #i95645#
+ // #i95645#
#if defined( MACOSX )
- // use AA on VCLCanvas for Mac
- mpVDev->SetAntialiasing( AntialiasingFlags::EnableB2dDraw | mpVDev->GetAntialiasing() );
+ // use AA on VCLCanvas for Mac
+ mpVDev->SetAntialiasing( AntialiasingFlags::EnableB2dDraw | mpVDev->GetAntialiasing() );
#else
- // switch off AA for WIN32 and UNIX, the VCLCanvas does not look good with it and
- // is not required to do AA. It would need to be adapted to use it correctly
- // (especially gradient painting). This will need extra work.
- mpVDev->SetAntialiasing(mpVDev->GetAntialiasing() & ~AntialiasingFlags::EnableB2dDraw);
+ // switch off AA for WIN32 and UNIX, the VCLCanvas does not look good with it and
+ // is not required to do AA. It would need to be adapted to use it correctly
+ // (especially gradient painting). This will need extra work.
+ mpVDev->SetAntialiasing(mpVDev->GetAntialiasing() & ~AntialiasingFlags::EnableB2dDraw);
#endif
- }
}
void BitmapBackBuffer::updateVDev() const
diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx
index 7a1578bef92b..9f1808c858e7 100644
--- a/canvas/source/vcl/canvashelper.cxx
+++ b/canvas/source/vcl/canvashelper.cxx
@@ -154,35 +154,35 @@ namespace vclcanvas
void CanvasHelper::clear()
{
// are we disposed?
- if( mpOutDevProvider )
- {
- OutputDevice& rOutDev( mpOutDevProvider->getOutDev() );
- tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
+ if( !mpOutDevProvider )
+ return;
- rOutDev.EnableMapMode( false );
- rOutDev.SetAntialiasing( AntialiasingFlags::EnableB2dDraw );
- rOutDev.SetLineColor( COL_WHITE );
- rOutDev.SetFillColor( COL_WHITE );
- rOutDev.SetClipRegion();
- rOutDev.DrawRect( ::tools::Rectangle( Point(),
- rOutDev.GetOutputSizePixel()) );
+ OutputDevice& rOutDev( mpOutDevProvider->getOutDev() );
+ tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
- if( mp2ndOutDevProvider )
- {
- OutputDevice& rOutDev2( mp2ndOutDevProvider->getOutDev() );
-
- rOutDev2.SetDrawMode( DrawModeFlags::Default );
- rOutDev2.EnableMapMode( false );
- rOutDev2.SetAntialiasing( AntialiasingFlags::EnableB2dDraw );
- rOutDev2.SetLineColor( COL_WHITE );
- rOutDev2.SetFillColor( COL_WHITE );
- rOutDev2.SetClipRegion();
- rOutDev2.DrawRect( ::tools::Rectangle( Point(),
- rOutDev2.GetOutputSizePixel()) );
- rOutDev2.SetDrawMode( DrawModeFlags::BlackLine | DrawModeFlags::BlackFill | DrawModeFlags::BlackText |
- DrawModeFlags::BlackGradient | DrawModeFlags::BlackBitmap );
- }
- }
+ rOutDev.EnableMapMode( false );
+ rOutDev.SetAntialiasing( AntialiasingFlags::EnableB2dDraw );
+ rOutDev.SetLineColor( COL_WHITE );
+ rOutDev.SetFillColor( COL_WHITE );
+ rOutDev.SetClipRegion();
+ rOutDev.DrawRect( ::tools::Rectangle( Point(),
+ rOutDev.GetOutputSizePixel()) );
+
+ if( !mp2ndOutDevProvider )
+ return;
+
+ OutputDevice& rOutDev2( mp2ndOutDevProvider->getOutDev() );
+
+ rOutDev2.SetDrawMode( DrawModeFlags::Default );
+ rOutDev2.EnableMapMode( false );
+ rOutDev2.SetAntialiasing( AntialiasingFlags::EnableB2dDraw );
+ rOutDev2.SetLineColor( COL_WHITE );
+ rOutDev2.SetFillColor( COL_WHITE );
+ rOutDev2.SetClipRegion();
+ rOutDev2.DrawRect( ::tools::Rectangle( Point(),
+ rOutDev2.GetOutputSizePixel()) );
+ rOutDev2.SetDrawMode( DrawModeFlags::BlackLine | DrawModeFlags::BlackFill | DrawModeFlags::BlackText |
+ DrawModeFlags::BlackGradient | DrawModeFlags::BlackBitmap );
}
void CanvasHelper::drawLine( const rendering::XCanvas* ,
@@ -192,22 +192,22 @@ namespace vclcanvas
const rendering::RenderState& renderState )
{
// are we disposed?
- if( mpOutDevProvider )
- {
- // nope, render
- tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
- setupOutDevState( viewState, renderState, LINE_COLOR );
+ if( !mpOutDevProvider )
+ return;
- const Point aStartPoint( tools::mapRealPoint2D( aStartRealPoint2D,
- viewState, renderState ) );
- const Point aEndPoint( tools::mapRealPoint2D( aEndRealPoint2D,
- viewState, renderState ) );
- // TODO(F2): alpha
- mpOutDevProvider->getOutDev().DrawLine( aStartPoint, aEndPoint );
+ // nope, render
+ tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
+ setupOutDevState( viewState, renderState, LINE_COLOR );
- if( mp2ndOutDevProvider )
- mp2ndOutDevProvider->getOutDev().DrawLine( aStartPoint, aEndPoint );
- }
+ const Point aStartPoint( tools::mapRealPoint2D( aStartRealPoint2D,
+ viewState, renderState ) );
+ const Point aEndPoint( tools::mapRealPoint2D( aEndRealPoint2D,
+ viewState, renderState ) );
+ // TODO(F2): alpha
+ mpOutDevProvider->getOutDev().DrawLine( aStartPoint, aEndPoint );
+
+ if( mp2ndOutDevProvider )
+ mp2ndOutDevProvider->getOutDev().DrawLine( aStartPoint, aEndPoint );
}
void CanvasHelper::drawBezier( const rendering::XCanvas* ,
@@ -216,38 +216,38 @@ namespace vclcanvas
const rendering::ViewState& viewState,
const rendering::RenderState& renderState )
{
- if( mpOutDevProvider )
- {
- tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
- setupOutDevState( viewState, renderState, LINE_COLOR );
-
- const Point& rStartPoint( tools::mapRealPoint2D( geometry::RealPoint2D(aBezierSegment.Px,
- aBezierSegment.Py),
- viewState, renderState ) );
- const Point& rCtrlPoint1( tools::mapRealPoint2D( geometry::RealPoint2D(aBezierSegment.C1x,
- aBezierSegment.C1y),
- viewState, renderState ) );
- const Point& rCtrlPoint2( tools::mapRealPoint2D( geometry::RealPoint2D(aBezierSegment.C2x,
- aBezierSegment.C2y),
- viewState, renderState ) );
- const Point& rEndPoint( tools::mapRealPoint2D( _aEndPoint,
- viewState, renderState ) );
-
- ::tools::Polygon aPoly(4);
- aPoly.SetPoint( rStartPoint, 0 );
- aPoly.SetFlags( 0, PolyFlags::Normal );
- aPoly.SetPoint( rCtrlPoint1, 1 );
- aPoly.SetFlags( 1, PolyFlags::Control );
- aPoly.SetPoint( rCtrlPoint2, 2 );
- aPoly.SetFlags( 2, PolyFlags::Control );
- aPoly.SetPoint( rEndPoint, 3 );
- aPoly.SetFlags( 3, PolyFlags::Normal );
+ if( !mpOutDevProvider )
+ return;
- // TODO(F2): alpha
- mpOutDevProvider->getOutDev().DrawPolygon( aPoly );
- if( mp2ndOutDevProvider )
- mp2ndOutDevProvider->getOutDev().DrawPolygon( aPoly );
- }
+ tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
+ setupOutDevState( viewState, renderState, LINE_COLOR );
+
+ const Point& rStartPoint( tools::mapRealPoint2D( geometry::RealPoint2D(aBezierSegment.Px,
+ aBezierSegment.Py),
+ viewState, renderState ) );
+ const Point& rCtrlPoint1( tools::mapRealPoint2D( geometry::RealPoint2D(aBezierSegment.C1x,
+ aBezierSegment.C1y),
+ viewState, renderState ) );
+ const Point& rCtrlPoint2( tools::mapRealPoint2D( geometry::RealPoint2D(aBezierSegment.C2x,
+ aBezierSegment.C2y),
+ viewState, renderState ) );
+ const Point& rEndPoint( tools::mapRealPoint2D( _aEndPoint,
+ viewState, renderState ) );
+
+ ::tools::Polygon aPoly(4);
+ aPoly.SetPoint( rStartPoint, 0 );
+ aPoly.SetFlags( 0, PolyFlags::Normal );
+ aPoly.SetPoint( rCtrlPoint1, 1 );
+ aPoly.SetFlags( 1, PolyFlags::Control );
+ aPoly.SetPoint( rCtrlPoint2, 2 );
+ aPoly.SetFlags( 2, PolyFlags::Control );
+ aPoly.SetPoint( rEndPoint, 3 );
+ aPoly.SetFlags( 3, PolyFlags::Normal );
+
+ // TODO(F2): alpha
+ mpOutDevProvider->getOutDev().DrawPolygon( aPoly );
+ if( mp2ndOutDevProvider )
+ mp2ndOutDevProvider->getOutDev().DrawPolygon( aPoly );
}
uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawPolyPolygon( const rendering::XCanvas* ,
diff --git a/canvas/source/vcl/devicehelper.cxx b/canvas/source/vcl/devicehelper.cxx
index 3a48c3f1a490..b9d4138aade1 100644
--- a/canvas/source/vcl/devicehelper.cxx
+++ b/canvas/source/vcl/devicehelper.cxx
@@ -196,21 +196,21 @@ namespace vclcanvas
{
static sal_Int32 nFilePostfixCount(0);
- if( mpOutDev )
- {
- OUString aFilename = "dbg_frontbuffer" + OUString::number(nFilePostfixCount) + ".bmp";
+ if( !mpOutDev )
+ return;
- SvFileStream aStream( aFilename, StreamMode::STD_READWRITE );
+ OUString aFilename = "dbg_frontbuffer" + OUString::number(nFilePostfixCount) + ".bmp";
- const ::Point aEmptyPoint;
- OutputDevice& rOutDev = mpOutDev->getOutDev();
- bool bOldMap( rOutDev.IsMapModeEnabled() );
- rOutDev.EnableMapMode( false );
- WriteDIB(rOutDev.GetBitmapEx(aEmptyPoint, rOutDev.GetOutputSizePixel()), aStream, false);
- rOutDev.EnableMapMode( bOldMap );
+ SvFileStream aStream( aFilename, StreamMode::STD_READWRITE );
+
+ const ::Point aEmptyPoint;
+ OutputDevice& rOutDev = mpOutDev->getOutDev();
+ bool bOldMap( rOutDev.IsMapModeEnabled() );
+ rOutDev.EnableMapMode( false );
+ WriteDIB(rOutDev.GetBitmapEx(aEmptyPoint, rOutDev.GetOutputSizePixel()), aStream, false);
+ rOutDev.EnableMapMode( bOldMap );
- ++nFilePostfixCount;
- }
+ ++nFilePostfixCount;
}
}
diff --git a/canvas/source/vcl/spritecanvashelper.cxx b/canvas/source/vcl/spritecanvashelper.cxx
index 8d58f4fcb359..d7fe7d37be0a 100644
--- a/canvas/source/vcl/spritecanvashelper.cxx
+++ b/canvas/source/vcl/spritecanvashelper.cxx
@@ -597,64 +597,64 @@ namespace vclcanvas
void SpriteCanvasHelper::renderSpriteCount( OutputDevice& rOutDev )
{
- if( mpRedrawManager )
- {
- sal_Int32 nCount(0);
+ if( !mpRedrawManager )
+ return;
- mpRedrawManager->forEachSprite( makeAdder(nCount,sal_Int32(1)) );
- OUString text( OUString::number(nCount) );
+ sal_Int32 nCount(0);
- // pad with leading space
- while( text.getLength() < 3 )
- text = " " + text;
+ mpRedrawManager->forEachSprite( makeAdder(nCount,sal_Int32(1)) );
+ OUString text( OUString::number(nCount) );
- text = "Sprites: " + text;
+ // pad with leading space
+ while( text.getLength() < 3 )
+ text = " " + text;
- renderInfoText( rOutDev,
- text,
- Point(0, 30) );
- }
+ text = "Sprites: " + text;
+
+ renderInfoText( rOutDev,
+ text,
+ Point(0, 30) );
}
void SpriteCanvasHelper::renderMemUsage( OutputDevice& rOutDev )
{
BackBufferSharedPtr pBackBuffer( mpOwningSpriteCanvas->getBackBuffer() );
- if( mpRedrawManager &&
- pBackBuffer )
- {
- double nPixel(0.0);
+ if( !(mpRedrawManager &&
+ pBackBuffer) )
+ return;
- // accumulate pixel count for each sprite into fCount
- mpRedrawManager->forEachSprite(
- [&nPixel]( const ::canvas::Sprite::Reference& rSprite )
- { makeAdder( nPixel, 1.0 )( calcNumPixel(rSprite) ); }
- );
+ double nPixel(0.0);
+
+ // accumulate pixel count for each sprite into fCount
+ 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);
+ static const int NUM_VIRDEV(2);
+ static const int BYTES_PER_PIXEL(3);
- const Size& rVDevSize( maVDev->GetOutputSizePixel() );
- const Size& rBackBufferSize( pBackBuffer->getOutDev().GetOutputSizePixel() );
+ const Size& rVDevSize( maVDev->GetOutputSizePixel() );
+ const Size& rBackBufferSize( pBackBuffer->getOutDev().GetOutputSizePixel() );
- const double nMemUsage( nPixel * NUM_VIRDEV * BYTES_PER_PIXEL +
- rVDevSize.Width()*rVDevSize.Height() * BYTES_PER_PIXEL +
- rBackBufferSize.Width()*rBackBufferSize.Height() * BYTES_PER_PIXEL );
+ const double nMemUsage( nPixel * NUM_VIRDEV * BYTES_PER_PIXEL +
+ rVDevSize.Width()*rVDevSize.Height() * BYTES_PER_PIXEL +
+ rBackBufferSize.Width()*rBackBufferSize.Height() * BYTES_PER_PIXEL );
- OUString text( ::rtl::math::doubleToUString( nMemUsage / 1048576.0,
- rtl_math_StringFormat_F,
- 2,'.',nullptr,' ') );
+ OUString text( ::rtl::math::doubleToUString( nMemUsage / 1048576.0,
+ rtl_math_StringFormat_F,
+ 2,'.',nullptr,' ') );
- // pad with leading space
- while( text.getLength() < 4 )
- text = " " + text;
+ // pad with leading space
+ while( text.getLength() < 4 )
+ text = " " + text;
- text = "Mem: " + text + "MB";
+ text = "Mem: " + text + "MB";
- renderInfoText( rOutDev,
- text,
- Point(0, 60) );
- }
+ renderInfoText( rOutDev,
+ text,
+ Point(0, 60) );
}
}
diff --git a/canvas/source/vcl/spritehelper.cxx b/canvas/source/vcl/spritehelper.cxx
index 5bad0ae9697d..63a9407642a7 100644
--- a/canvas/source/vcl/spritehelper.cxx
+++ b/canvas/source/vcl/spritehelper.cxx
@@ -98,248 +98,248 @@ namespace vclcanvas
const double fAlpha( getAlpha() );
- if( isActive() &&
- !::basegfx::fTools::equalZero( fAlpha ) )
- {
- const Point aEmptyPoint;
- const ::basegfx::B2DVector& rOrigOutputSize( getSizePixel() );
+ if( !(isActive() &&
+ !::basegfx::fTools::equalZero( fAlpha )) )
+ return;
+
+ const Point aEmptyPoint;
+ const ::basegfx::B2DVector& rOrigOutputSize( getSizePixel() );
- // might get changed below (e.g. adapted for
- // transformations). IMPORTANT: both position and size are
- // rounded to integer values. From now on, only those
- // rounded values are used, to keep clip and content in
- // sync.
- ::Size aOutputSize( vcl::unotools::sizeFromB2DSize( rOrigOutputSize ) );
- ::Point aOutPos( vcl::unotools::pointFromB2DPoint( rPos ) );
+ // might get changed below (e.g. adapted for
+ // transformations). IMPORTANT: both position and size are
+ // rounded to integer values. From now on, only those
+ // rounded values are used, to keep clip and content in
+ // sync.
+ ::Size aOutputSize( vcl::unotools::sizeFromB2DSize( rOrigOutputSize ) );
+ ::Point aOutPos( vcl::unotools::pointFromB2DPoint( rPos ) );
- // TODO(F3): Support for alpha-VDev
+ // TODO(F3): Support for alpha-VDev
- // Do we have to update our bitmaps (necessary if virdev
- // was painted to, or transformation changed)?
- const bool bNeedBitmapUpdate( io_bSurfacesDirty ||
- hasTransformChanged() ||
- maContent->IsEmpty() );
+ // Do we have to update our bitmaps (necessary if virdev
+ // was painted to, or transformation changed)?
+ const bool bNeedBitmapUpdate( io_bSurfacesDirty ||
+ hasTransformChanged() ||
+ maContent->IsEmpty() );
- // updating content of sprite cache - surface is no
- // longer dirty in relation to our cache
- io_bSurfacesDirty = false;
- transformUpdated();
+ // updating content of sprite cache - surface is no
+ // longer dirty in relation to our cache
+ io_bSurfacesDirty = false;
+ transformUpdated();
+
+ if( bNeedBitmapUpdate )
+ {
+ BitmapEx aBmp( mpBackBuffer->getOutDev().GetBitmapEx( aEmptyPoint,
+ aOutputSize ) );
- if( bNeedBitmapUpdate )
+ if( isContentFullyOpaque() )
{
- BitmapEx aBmp( mpBackBuffer->getOutDev().GetBitmapEx( aEmptyPoint,
- aOutputSize ) );
+ // optimized case: content canvas is fully
+ // opaque. Note: since we retrieved aBmp directly
+ // from an OutDev, it's already a 'display bitmap'
+ // on windows.
+ maContent = aBmp;
+ }
+ else
+ {
+ // sprite content might contain alpha, create
+ // BmpEx, then.
+ BitmapEx aMask( mpBackBufferMask->getOutDev().GetBitmapEx( aEmptyPoint,
+ aOutputSize ) );
+
+ // bitmasks are much faster than alphamasks on some platforms
+ // so convert to bitmask if useful
+ bool convertTo1Bpp = aMask.GetBitCount() != 1;
+#ifdef MACOSX
+ convertTo1Bpp = false;
+#endif
+ if( SkiaHelper::isVCLSkiaEnabled())
+ convertTo1Bpp = false;
- if( isContentFullyOpaque() )
+ if( convertTo1Bpp )
{
- // optimized case: content canvas is fully
- // opaque. Note: since we retrieved aBmp directly
- // from an OutDev, it's already a 'display bitmap'
- // on windows.
- maContent = aBmp;
+ OSL_FAIL("CanvasCustomSprite::redraw(): Mask bitmap is not "
+ "monochrome (performance!)");
+ BitmapEx aMaskEx(aMask);
+ BitmapFilter::Filter(aMaskEx, BitmapMonochromeFilter(255));
+ aMask = aMaskEx.GetBitmap();
}
+
+ // Note: since we retrieved aBmp and aMask
+ // directly from an OutDev, it's already a
+ // 'display bitmap' on windows.
+ if( aMask.GetBitCount() == 1 )
+ maContent = BitmapEx( aBmp.GetBitmap(), aMask.GetBitmap() );
else
- {
- // sprite content might contain alpha, create
- // BmpEx, then.
- BitmapEx aMask( mpBackBufferMask->getOutDev().GetBitmapEx( aEmptyPoint,
- aOutputSize ) );
-
- // bitmasks are much faster than alphamasks on some platforms
- // so convert to bitmask if useful
- bool convertTo1Bpp = aMask.GetBitCount() != 1;
-#ifdef MACOSX
- convertTo1Bpp = false;
-#endif
- if( SkiaHelper::isVCLSkiaEnabled())
- convertTo1Bpp = false;
-
- if( convertTo1Bpp )
- {
- OSL_FAIL("CanvasCustomSprite::redraw(): Mask bitmap is not "
- "monochrome (performance!)");
- BitmapEx aMaskEx(aMask);
- BitmapFilter::Filter(aMaskEx, BitmapMonochromeFilter(255));
- aMask = aMaskEx.GetBitmap();
- }
-
- // Note: since we retrieved aBmp and aMask
- // directly from an OutDev, it's already a
- // 'display bitmap' on windows.
- if( aMask.GetBitCount() == 1 )
- maContent = BitmapEx( aBmp.GetBitmap(), aMask.GetBitmap() );
- else
- maContent = BitmapEx( aBmp.GetBitmap(), AlphaMask( aMask.GetBitmap()) );
- }
+ maContent = BitmapEx( aBmp.GetBitmap(), AlphaMask( aMask.GetBitmap()) );
}
+ }
- ::basegfx::B2DHomMatrix aTransform( getTransformation() );
+ ::basegfx::B2DHomMatrix aTransform( getTransformation() );
- // check whether matrix is "easy" to handle - pure
- // translations or scales are handled by OutputDevice
- // alone
- const bool bIdentityTransform( aTransform.isIdentity() );
+ // check whether matrix is "easy" to handle - pure
+ // translations or scales are handled by OutputDevice
+ // alone
+ const bool bIdentityTransform( aTransform.isIdentity() );
- // make transformation absolute (put sprite to final
- // output position). Need to happen here, as we also have
- // to translate the clip polygon
- aTransform.translate( aOutPos.X(),
- aOutPos.Y() );
+ // make transformation absolute (put sprite to final
+ // output position). Need to happen here, as we also have
+ // to translate the clip polygon
+ aTransform.translate( aOutPos.X(),
+ aOutPos.Y() );
- if( !bIdentityTransform )
- {
- // Avoid the trick with the negative width in the OpenGL case,
- // OutputDevice::DrawDeviceAlphaBitmap() doesn't like it.
- if (!::basegfx::fTools::equalZero( aTransform.get(0,1) ) ||
- !::basegfx::fTools::equalZero( aTransform.get(1,0) )
+ if( !bIdentityTransform )
+ {
+ // Avoid the trick with the negative width in the OpenGL case,
+ // OutputDevice::DrawDeviceAlphaBitmap() doesn't like it.
+ if (!::basegfx::fTools::equalZero( aTransform.get(0,1) ) ||
+ !::basegfx::fTools::equalZero( aTransform.get(1,0) )
#if HAVE_FEATURE_UI
- || OpenGLHelper::isVCLOpenGLEnabled()
+ || OpenGLHelper::isVCLOpenGLEnabled()
#endif
- || SkiaHelper::isVCLSkiaEnabled()
- )
- {
- // "complex" transformation, employ affine
- // transformator
-
- // modify output position, to account for the fact
- // that transformBitmap() always normalizes its output
- // bitmap into the smallest enclosing box.
- ::basegfx::B2DRectangle aDestRect;
- ::canvas::tools::calcTransformedRectBounds( aDestRect,
- ::basegfx::B2DRectangle(0,
- 0,
- rOrigOutputSize.getX(),
- rOrigOutputSize.getY()),
- aTransform );
-
- aOutPos.setX( ::basegfx::fround( aDestRect.getMinX() ) );
- aOutPos.setY( ::basegfx::fround( aDestRect.getMinY() ) );
-
- // TODO(P3): Use optimized bitmap transformation here.
-
- // actually re-create the bitmap ONLY if necessary
- if( bNeedBitmapUpdate )
- maContent = tools::transformBitmap( *maContent,
+ || SkiaHelper::isVCLSkiaEnabled()
+ )
+ {
+ // "complex" transformation, employ affine
+ // transformator
+
+ // modify output position, to account for the fact
+ // that transformBitmap() always normalizes its output
+ // bitmap into the smallest enclosing box.
+ ::basegfx::B2DRectangle aDestRect;
+ ::canvas::tools::calcTransformedRectBounds( aDestRect,
+ ::basegfx::B2DRectangle(0,
+ 0,
+ rOrigOutputSize.getX(),
+ rOrigOutputSize.getY()),
aTransform );
- aOutputSize = maContent->GetSizePixel();
- }
- else
- {
- // relatively 'simplistic' transformation -
- // retrieve scale and translational offset
- aOutputSize.setWidth (
- ::basegfx::fround( rOrigOutputSize.getX() * aTransform.get(0,0) ) );
- aOutputSize.setHeight(
- ::basegfx::fround( rOrigOutputSize.getY() * aTransform.get(1,1) ) );
-
- aOutPos.setX( ::basegfx::fround( aTransform.get(0,2) ) );
- aOutPos.setY( ::basegfx::fround( aTransform.get(1,2) ) );
- }
- }
+ aOutPos.setX( ::basegfx::fround( aDestRect.getMinX() ) );
+ aOutPos.setY( ::basegfx::fround( aDestRect.getMinY() ) );
+
+ // TODO(P3): Use optimized bitmap transformation here.
- // transformBitmap() might return empty bitmaps, for tiny
- // scales.
- if( !!(*maContent) )
+ // actually re-create the bitmap ONLY if necessary
+ if( bNeedBitmapUpdate )
+ maContent = tools::transformBitmap( *maContent,
+ aTransform );
+
+ aOutputSize = maContent->GetSizePixel();
+ }
+ else
{
- rTargetSurface.Push( PushFlags::CLIPREGION );
+ // relatively 'simplistic' transformation -
+ // retrieve scale and translational offset
+ aOutputSize.setWidth (
+ ::basegfx::fround( rOrigOutputSize.getX() * aTransform.get(0,0) ) );
+ aOutputSize.setHeight(
+ ::basegfx::fround( rOrigOutputSize.getY() * aTransform.get(1,1) ) );
+
+ aOutPos.setX( ::basegfx::fround( aTransform.get(0,2) ) );
+ aOutPos.setY( ::basegfx::fround( aTransform.get(1,2) ) );
+ }
+ }
- // apply clip (if any)
- if( getClip().is() )
- {
- ::basegfx::B2DPolyPolygon aClipPoly(
- ::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(
- getClip() ));
-
- if( aClipPoly.count() )
- {
- // aTransform already contains the
- // translational component, moving the clip to
- // the final sprite output position.
- aClipPoly.transform( aTransform );
-
- if( mbShowSpriteBounds )
- {
- // Paint green sprite clip area
- rTargetSurface.SetLineColor( Color( 0,255,0 ) );
- rTargetSurface.SetFillColor();
-
- rTargetSurface.DrawPolyPolygon(::tools::PolyPolygon(aClipPoly)); // #i76339#
- }
-
- vcl::Region aClipRegion( aClipPoly );
- rTargetSurface.SetClipRegion( aClipRegion );
- }
- }
+ // transformBitmap() might return empty bitmaps, for tiny
+ // scales.
+ if( !(*maContent) )
+ return;
- if( ::rtl::math::approxEqual(fAlpha, 1.0) )
- {
- // no alpha modulation -> just copy to output
- if( maContent->IsTransparent() )
- rTargetSurface.DrawBitmapEx( aOutPos, aOutputSize, *maContent );
- else
- rTargetSurface.DrawBitmap( aOutPos, aOutputSize, maContent->GetBitmap() );
- }
- else
- {
- // TODO(P3): Switch to OutputDevice::DrawTransparent()
- // here
-
- // draw semi-transparent
- sal_uInt8 nColor( static_cast<sal_uInt8>( ::basegfx::fround( 255.0*(1.0 - fAlpha) + .5) ) );
- AlphaMask aAlpha( maContent->GetSizePixel(),
- &nColor );
-
- // mask out fully transparent areas
- if( maContent->IsTransparent() )
- aAlpha.Replace( maContent->GetMask(), 255 );
-
- // alpha-blend to output
- rTargetSurface.DrawBitmapEx( aOutPos, aOutputSize,
- BitmapEx( maContent->GetBitmap(),
- aAlpha ) );
- }
+ rTargetSurface.Push( PushFlags::CLIPREGION );
+
+ // apply clip (if any)
+ if( getClip().is() )
+ {
+ ::basegfx::B2DPolyPolygon aClipPoly(
+ ::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(
+ getClip() ));
- rTargetSurface.Pop();
+ if( aClipPoly.count() )
+ {
+ // aTransform already contains the
+ // translational component, moving the clip to
+ // the final sprite output position.
+ aClipPoly.transform( aTransform );
if( mbShowSpriteBounds )
{
- ::tools::PolyPolygon aMarkerPoly(
- ::canvas::tools::getBoundMarksPolyPolygon(
- ::basegfx::B2DRectangle(aOutPos.X(),
- aOutPos.Y(),
- aOutPos.X() + aOutputSize.Width()-1,
- aOutPos.Y() + aOutputSize.Height()-1) ) );
-
- // Paint little red sprite area markers
- rTargetSurface.SetLineColor( COL_RED );
+ // Paint green sprite clip area
+ rTargetSurface.SetLineColor( Color( 0,255,0 ) );
rTargetSurface.SetFillColor();
- for( int i=0; i<aMarkerPoly.Count(); ++i )
- {
- rTargetSurface.DrawPolyLine( aMarkerPoly.GetObject(static_cast<sal_uInt16>(i)) );
- }
+ rTargetSurface.DrawPolyPolygon(::tools::PolyPolygon(aClipPoly)); // #i76339#
+ }
+
+ vcl::Region aClipRegion( aClipPoly );
+ rTargetSurface.SetClipRegion( aClipRegion );
+ }
+ }
+
+ if( ::rtl::math::approxEqual(fAlpha, 1.0) )
+ {
+ // no alpha modulation -> just copy to output
+ if( maContent->IsTransparent() )
+ rTargetSurface.DrawBitmapEx( aOutPos, aOutputSize, *maContent );
+ else
+ rTargetSurface.DrawBitmap( aOutPos, aOutputSize, maContent->GetBitmap() );
+ }
+ else
+ {
+ // TODO(P3): Switch to OutputDevice::DrawTransparent()
+ // here
+
+ // draw semi-transparent
+ sal_uInt8 nColor( static_cast<sal_uInt8>( ::basegfx::fround( 255.0*(1.0 - fAlpha) + .5) ) );
+ AlphaMask aAlpha( maContent->GetSizePixel(),
+ &nColor );
+
+ // mask out fully transparent areas
+ if( maContent->IsTransparent() )
+ aAlpha.Replace( maContent->GetMask(), 255 );
+
+ // alpha-blend to output
+ rTargetSurface.DrawBitmapEx( aOutPos, aOutputSize,
+ BitmapEx( maContent->GetBitmap(),
+ aAlpha ) );
+ }
- // paint sprite prio
- vcl::Font aVCLFont;
- aVCLFont.SetFontHeight( std::min(long(20),aOutputSize.Height()) );
- aVCLFont.SetColor( COL_RED );
+ rTargetSurface.Pop();
- rTargetSurface.SetTextAlign(ALIGN_TOP);
- rTargetSurface.SetTextColor( COL_RED );
- rTargetSurface.SetFont( aVCLFont );
+ if( !mbShowSpriteBounds )
+ return;
- OUString text( ::rtl::math::doubleToUString( getPriority(),
- rtl_math_StringFormat_F,
- 2,'.',nullptr,' ') );
+ ::tools::PolyPolygon aMarkerPoly(
+ ::canvas::tools::getBoundMarksPolyPolygon(
+ ::basegfx::B2DRectangle(aOutPos.X(),
+ aOutPos.Y(),
+ aOutPos.X() + aOutputSize.Width()-1,
+ aOutPos.Y() + aOutputSize.Height()-1) ) );
- rTargetSurface.DrawText( aOutPos+Point(2,2), text );
- SAL_INFO( "canvas.vcl",
- "sprite " << this << " has prio " << getPriority());
- }
- }
+ // Paint little red sprite area markers
+ rTargetSurface.SetLineColor( COL_RED );
+ rTargetSurface.SetFillColor();
+
+ for( int i=0; i<aMarkerPoly.Count(); ++i )
+ {
+ rTargetSurface.DrawPolyLine( aMarkerPoly.GetObject(static_cast<sal_uInt16>(i)) );
}
+
+ // paint sprite prio
+ vcl::Font aVCLFont;
+ aVCLFont.SetFontHeight( std::min(long(20),aOutputSize.Height()) );
+ aVCLFont.SetColor( COL_RED );
+
+ rTargetSurface.SetTextAlign(ALIGN_TOP);
+ rTargetSurface.SetTextColor( COL_RED );
+ rTargetSurface.SetFont( aVCLFont );
+
+ OUString text( ::rtl::math::doubleToUString( getPriority(),
+ rtl_math_StringFormat_F,
+ 2,'.',nullptr,' ') );
+
+ rTargetSurface.DrawText( aOutPos+Point(2,2), text );
+ SAL_INFO( "canvas.vcl",
+ "sprite " << this << " has prio " << getPriority());
}
::basegfx::B2DPolyPolygon SpriteHelper::polyPolygonFromXPolyPolygon2D( uno::Reference< rendering::XPolyPolygon2D >& xPoly ) const
More information about the Libreoffice-commits
mailing list