we never actually erase device in SetOutputSizePixelScaleOffsetAndLOKBuffer
So simplify the code. The reason this currently "works" is that we always set the background to COL_TRANSPARENT, and when we do that, the DrawRect() logic will short-circuit and do nothing. Which also means we can inline ImplSetOutputSizePixel into SetOutputSizePixel, since it has only one call site. Change-Id: I0ae000e187fb7d18801ccfb61d1066f71f0c6cad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180213 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
@@ -57,8 +57,6 @@ private:
|
|||||||
SAL_DLLPRIVATE void ImplInitVirDev( const OutputDevice* pOutDev, tools::Long nDX, tools::Long nDY, const SystemGraphicsData *pData = nullptr );
|
SAL_DLLPRIVATE void ImplInitVirDev( const OutputDevice* pOutDev, tools::Long nDX, tools::Long nDY, const SystemGraphicsData *pData = nullptr );
|
||||||
SAL_DLLPRIVATE bool InnerImplSetOutputSizePixel( const Size& rNewSize, bool bErase,
|
SAL_DLLPRIVATE bool InnerImplSetOutputSizePixel( const Size& rNewSize, bool bErase,
|
||||||
sal_uInt8* pBuffer );
|
sal_uInt8* pBuffer );
|
||||||
SAL_DLLPRIVATE bool ImplSetOutputSizePixel( const Size& rNewSize, bool bErase,
|
|
||||||
sal_uInt8* pBuffer, bool bAlphaMaskTransparent = false );
|
|
||||||
|
|
||||||
VirtualDevice (const VirtualDevice &) = delete;
|
VirtualDevice (const VirtualDevice &) = delete;
|
||||||
VirtualDevice & operator= (const VirtualDevice &) = delete;
|
VirtualDevice & operator= (const VirtualDevice &) = delete;
|
||||||
|
@@ -351,10 +351,9 @@ void VirtualDevice::ImplFillOpaqueRectangle( const tools::Rectangle& rRect )
|
|||||||
Pop();
|
Pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VirtualDevice::ImplSetOutputSizePixel( const Size& rNewSize, bool bErase,
|
bool VirtualDevice::SetOutputSizePixel( const Size& rNewSize, bool bErase, bool bAlphaMaskTransparent )
|
||||||
sal_uInt8 *const pBuffer, bool bAlphaMaskTransparent )
|
|
||||||
{
|
{
|
||||||
if( InnerImplSetOutputSizePixel(rNewSize, bErase, pBuffer) )
|
if( InnerImplSetOutputSizePixel(rNewSize, bErase, /*pBuffer*/nullptr) )
|
||||||
{
|
{
|
||||||
if (meFormatAndAlpha != DeviceFormat::WITHOUT_ALPHA)
|
if (meFormatAndAlpha != DeviceFormat::WITHOUT_ALPHA)
|
||||||
{
|
{
|
||||||
@@ -402,11 +401,6 @@ void VirtualDevice::EnableRTL( bool bEnable )
|
|||||||
OutputDevice::EnableRTL(bEnable);
|
OutputDevice::EnableRTL(bEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VirtualDevice::SetOutputSizePixel( const Size& rNewSize, bool bErase, bool bAlphaMaskTransparent )
|
|
||||||
{
|
|
||||||
return ImplSetOutputSizePixel(rNewSize, bErase, nullptr, bAlphaMaskTransparent);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool VirtualDevice::SetOutputSizePixelScaleOffsetAndLOKBuffer(
|
bool VirtualDevice::SetOutputSizePixelScaleOffsetAndLOKBuffer(
|
||||||
const Size& rNewSize, const Fraction& rScale, const Point& rNewOffset,
|
const Size& rNewSize, const Fraction& rScale, const Point& rNewOffset,
|
||||||
sal_uInt8 *const pBuffer)
|
sal_uInt8 *const pBuffer)
|
||||||
@@ -420,7 +414,22 @@ bool VirtualDevice::SetOutputSizePixelScaleOffsetAndLOKBuffer(
|
|||||||
mm.SetScaleX( rScale );
|
mm.SetScaleX( rScale );
|
||||||
mm.SetScaleY( rScale );
|
mm.SetScaleY( rScale );
|
||||||
SetMapMode( mm );
|
SetMapMode( mm );
|
||||||
return ImplSetOutputSizePixel(rNewSize, true, pBuffer);
|
|
||||||
|
assert(meFormatAndAlpha == DeviceFormat::WITHOUT_ALPHA);
|
||||||
|
assert(mpVirDev);
|
||||||
|
assert( rNewSize != GetOutputSizePixel() && "Trying to re-use a VirtualDevice but this time using a pre-allocated buffer");
|
||||||
|
assert( rNewSize.Width() >= 1 );
|
||||||
|
assert( rNewSize.Height() >= 1 );
|
||||||
|
|
||||||
|
bool bRet = mpVirDev->SetSizeUsingBuffer( rNewSize.Width(), rNewSize.Height(), pBuffer );
|
||||||
|
if ( bRet )
|
||||||
|
{
|
||||||
|
mnOutWidth = rNewSize.Width();
|
||||||
|
mnOutHeight = rNewSize.Height();
|
||||||
|
}
|
||||||
|
|
||||||
|
return bRet;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VirtualDevice::SetReferenceDevice( RefDevMode i_eRefDevMode )
|
void VirtualDevice::SetReferenceDevice( RefDevMode i_eRefDevMode )
|
||||||
|
Reference in New Issue
Block a user