[Libreoffice-commits] core.git: 2 commits - vcl/inc vcl/quartz
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Sat May 18 07:01:15 UTC 2019
vcl/inc/quartz/salbmp.h | 2
vcl/quartz/salbmp.cxx | 105 ++++++++++++++++++++++----------------------
vcl/quartz/salgdicommon.cxx | 26 +++++-----
3 files changed, 66 insertions(+), 67 deletions(-)
New commits:
commit e9ebb8c1f12812bcb0459092984e5aad1e955c8e
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Fri May 17 12:03:04 2019 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Sat May 18 09:00:15 2019 +0200
use CGContextHolder in AquaSalBitmap
Change-Id: I87f5a1bc2c41c58cff747bbad82867d53ea92ce7
Reviewed-on: https://gerrit.libreoffice.org/72442
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/vcl/inc/quartz/salbmp.h b/vcl/inc/quartz/salbmp.h
index cd9cfb43a549..cb4151f73d28 100644
--- a/vcl/inc/quartz/salbmp.h
+++ b/vcl/inc/quartz/salbmp.h
@@ -39,7 +39,7 @@ class BitmapPalette;
class QuartzSalBitmap : public SalBitmap
{
public:
- CGContextRef mxGraphicContext;
+ CGContextHolder maGraphicContext;
mutable CGImageRef mxCachedImage;
BitmapPalette maPalette;
std::shared_ptr<sal_uInt8> m_pUserBuffer;
diff --git a/vcl/quartz/salbmp.cxx b/vcl/quartz/salbmp.cxx
index 745b57bd82a9..dce5b06ff1f8 100644
--- a/vcl/quartz/salbmp.cxx
+++ b/vcl/quartz/salbmp.cxx
@@ -55,8 +55,7 @@ static bool isValidBitCount( sal_uInt16 nBitCount )
}
QuartzSalBitmap::QuartzSalBitmap()
- : mxGraphicContext( nullptr )
- , mxCachedImage( nullptr )
+ : mxCachedImage( nullptr )
, mnBits(0)
, mnWidth(0)
, mnHeight(0)
@@ -105,18 +104,18 @@ bool QuartzSalBitmap::Create(CGLayerHolder const & rLayerHolder, int nBitmapBits
// copy layer content into the bitmap buffer
const CGPoint aSrcPoint = { static_cast<CGFloat>(-nX), static_cast<CGFloat>(-nY) };
- if(mxGraphicContext) // remove warning
+ if (maGraphicContext.isSet()) // remove warning
{
- SAL_INFO("vcl.cg", "CGContextDrawLayerAtPoint(" << mxGraphicContext << "," << aSrcPoint << "," << rLayerHolder.get() << ")" );
+ SAL_INFO("vcl.cg", "CGContextDrawLayerAtPoint(" << maGraphicContext.get() << "," << aSrcPoint << "," << rLayerHolder.get() << ")");
if( bFlipped )
{
- SAL_INFO( "vcl.cg", "CGContextTranslateCTM(" << mxGraphicContext << ",0," << mnHeight << ")" );
- CGContextTranslateCTM( mxGraphicContext, 0, +mnHeight );
- SAL_INFO( "vcl.cg", "CGContextScaleCTM(" << mxGraphicContext << ",+1,-1)" );
- CGContextScaleCTM( mxGraphicContext, +1, -1 );
+ SAL_INFO( "vcl.cg", "CGContextTranslateCTM(" << maGraphicContext.get() << ",0," << mnHeight << ")" );
+ CGContextTranslateCTM( maGraphicContext.get(), 0, +mnHeight );
+ SAL_INFO( "vcl.cg", "CGContextScaleCTM(" << maGraphicContext.get() << ",+1,-1)" );
+ CGContextScaleCTM( maGraphicContext.get(), +1, -1 );
}
- CGContextDrawLayerAtPoint( mxGraphicContext, aSrcPoint, rLayerHolder.get() );
+ CGContextDrawLayerAtPoint(maGraphicContext.get(), aSrcPoint, rLayerHolder.get());
}
return true;
}
@@ -187,11 +186,11 @@ void QuartzSalBitmap::DestroyContext()
mxCachedImage = nullptr;
}
- if( mxGraphicContext )
+ if (maGraphicContext.isSet())
{
- SAL_INFO("vcl.cg", "CGContextRelease(" << mxGraphicContext << ")" );
- CGContextRelease( mxGraphicContext );
- mxGraphicContext = nullptr;
+ SAL_INFO("vcl.cg", "CGContextRelease(" << maGraphicContext.get() << ")" );
+ CGContextRelease(maGraphicContext.get());
+ maGraphicContext.set(nullptr);
m_pContextBuffer.reset();
}
}
@@ -244,22 +243,22 @@ bool QuartzSalBitmap::CreateContext()
}
catch( const std::bad_alloc& )
{
- mxGraphicContext = nullptr;
+ maGraphicContext.set(nullptr);
}
}
if (m_pContextBuffer.get())
{
- mxGraphicContext = CGBitmapContextCreate( m_pContextBuffer.get(), mnWidth, mnHeight,
- bitsPerComponent, nContextBytesPerRow,
- aCGColorSpace, aCGBmpInfo );
- SAL_INFO("vcl.cg", "CGBitmapContextCreate(" << mnWidth << "x" << mnHeight << "x" << bitsPerComponent << ") = " << mxGraphicContext );
+ maGraphicContext.set(CGBitmapContextCreate(m_pContextBuffer.get(), mnWidth, mnHeight,
+ bitsPerComponent, nContextBytesPerRow,
+ aCGColorSpace, aCGBmpInfo));
+ SAL_INFO("vcl.cg", "CGBitmapContextCreate(" << mnWidth << "x" << mnHeight << "x" << bitsPerComponent << ") = " << maGraphicContext.get());
}
- if( !mxGraphicContext )
+ if (!maGraphicContext.isSet())
m_pContextBuffer.reset();
- return mxGraphicContext != nullptr;
+ return maGraphicContext.isSet();
}
bool QuartzSalBitmap::AllocateUserData()
@@ -783,7 +782,7 @@ void QuartzSalBitmap::ReleaseBuffer( BitmapBuffer* pBuffer, BitmapAccessMode nMo
if( nMode == BitmapAccessMode::Write )
{
maPalette = pBuffer->maPalette;
- if( mxGraphicContext )
+ if (maGraphicContext.isSet())
{
DestroyContext();
}
@@ -797,15 +796,15 @@ CGImageRef QuartzSalBitmap::CreateCroppedImage( int nX, int nY, int nNewWidth, i
{
if( !mxCachedImage )
{
- if( !mxGraphicContext )
+ if (!maGraphicContext.isSet())
{
if( !const_cast<QuartzSalBitmap*>(this)->CreateContext() )
{
return nullptr;
}
}
- mxCachedImage = CGBitmapContextCreateImage( mxGraphicContext );
- SAL_INFO("vcl.cg", "CGBitmapContextCreateImage(" << mxGraphicContext << ") = " << mxCachedImage );
+ mxCachedImage = CGBitmapContextCreateImage(maGraphicContext.get());
+ SAL_INFO("vcl.cg", "CGBitmapContextCreateImage(" << maGraphicContext.get() << ") = " << mxCachedImage );
}
CGImageRef xCroppedImage = nullptr;
@@ -942,15 +941,15 @@ bool QuartzSalBitmap::GetSystemData( BitmapSystemData& rData )
{
bool bRet = false;
- if( !mxGraphicContext )
+ if (!maGraphicContext.isSet())
CreateContext();
- if ( mxGraphicContext )
+ if (maGraphicContext.isSet())
{
bRet = true;
- if ((CGBitmapContextGetBitsPerPixel(mxGraphicContext) == 32) &&
- (CGBitmapContextGetBitmapInfo(mxGraphicContext) & kCGBitmapByteOrderMask) != kCGBitmapByteOrder32Host)
+ if ((CGBitmapContextGetBitsPerPixel(maGraphicContext.get()) == 32) &&
+ (CGBitmapContextGetBitmapInfo(maGraphicContext.get()) & kCGBitmapByteOrderMask) != kCGBitmapByteOrder32Host)
{
/**
* We need to hack things because VCL does not use kCGBitmapByteOrder32Host, while Cairo requires it.
@@ -962,40 +961,42 @@ bool QuartzSalBitmap::GetSystemData( BitmapSystemData& rData )
*/
SAL_INFO("vcl.cg", "QuartzSalBitmap::" << __func__ << "(): kCGBitmapByteOrder32Host not found => inserting it.");
- CGImageRef xImage = CGBitmapContextCreateImage (mxGraphicContext);
- SAL_INFO("vcl.cg", "CGBitmapContextCreateImage(" << mxGraphicContext << ") = " << xImage );
+ CGImageRef xImage = CGBitmapContextCreateImage(maGraphicContext.get());
+ SAL_INFO("vcl.cg", "CGBitmapContextCreateImage(" << maGraphicContext.get() << ") = " << xImage );
// re-create the context with single change: include kCGBitmapByteOrder32Host flag.
- CGContextRef mxGraphicContextNew = CGBitmapContextCreate( CGBitmapContextGetData(mxGraphicContext),
- CGBitmapContextGetWidth(mxGraphicContext),
- CGBitmapContextGetHeight(mxGraphicContext),
- CGBitmapContextGetBitsPerComponent(mxGraphicContext),
- CGBitmapContextGetBytesPerRow(mxGraphicContext),
- CGBitmapContextGetColorSpace(mxGraphicContext),
- CGBitmapContextGetBitmapInfo(mxGraphicContext) | kCGBitmapByteOrder32Host);
- SAL_INFO("vcl.cg", "CGBitmapContextCreate(" << CGBitmapContextGetWidth(mxGraphicContext) << "x" << CGBitmapContextGetHeight(mxGraphicContext) << "x" << CGBitmapContextGetBitsPerComponent(mxGraphicContext) << ") = " << mxGraphicContextNew );
-
- SAL_INFO("vcl.cg", "CFRelease(" << mxGraphicContext << ")" );
- CFRelease(mxGraphicContext);
+ CGContextHolder maGraphicContextNew(CGBitmapContextCreate(CGBitmapContextGetData(maGraphicContext.get()),
+ CGBitmapContextGetWidth(maGraphicContext.get()),
+ CGBitmapContextGetHeight(maGraphicContext.get()),
+ CGBitmapContextGetBitsPerComponent(maGraphicContext.get()),
+ CGBitmapContextGetBytesPerRow(maGraphicContext.get()),
+ CGBitmapContextGetColorSpace(maGraphicContext.get()),
+ CGBitmapContextGetBitmapInfo(maGraphicContext.get()) | kCGBitmapByteOrder32Host));
+ SAL_INFO("vcl.cg", "CGBitmapContextCreate(" << CGBitmapContextGetWidth(maGraphicContext.get()) << "x"
+ << CGBitmapContextGetHeight(maGraphicContext.get()) << "x"
+ << CGBitmapContextGetBitsPerComponent(maGraphicContext.get()) << ") = "
+ << maGraphicContextNew.get());
+
+ SAL_INFO("vcl.cg", "CFRelease(" << maGraphicContext.get() << ")");
+ CFRelease(maGraphicContext.get());
// Needs to be flipped
- SAL_INFO("vcl.cg", "CGContextSaveGState(" << mxGraphicContextNew << ")" );
- CGContextSaveGState( mxGraphicContextNew );
- SAL_INFO("vcl.cg", "CGContextTranslateCTM(" << mxGraphicContextNew << ",0," << CGBitmapContextGetHeight(mxGraphicContextNew) << ")" );
- CGContextTranslateCTM (mxGraphicContextNew, 0, CGBitmapContextGetHeight(mxGraphicContextNew));
- SAL_INFO("vcl.cg", "CGContextScaleCTM(" << mxGraphicContextNew << ",1,-1)" );
- CGContextScaleCTM (mxGraphicContextNew, 1.0, -1.0);
+ maGraphicContextNew.saveState();
+ SAL_INFO("vcl.cg", "CGContextTranslateCTM(" << maGraphicContextNew.get() << ",0," << CGBitmapContextGetHeight(maGraphicContextNew.get()) << ")" );
+ CGContextTranslateCTM (maGraphicContextNew.get(), 0, CGBitmapContextGetHeight(maGraphicContextNew.get()));
+ SAL_INFO("vcl.cg", "CGContextScaleCTM(" << maGraphicContextNew.get() << ",1,-1)" );
+ CGContextScaleCTM (maGraphicContextNew.get(), 1.0, -1.0);
- SAL_INFO("vcl.cg", "CGContextDrawImage(" << mxGraphicContextNew << "," << CGRectMake(0, 0, CGImageGetWidth(xImage), CGImageGetHeight(xImage)) << "," << xImage << ")" );
- CGContextDrawImage(mxGraphicContextNew, CGRectMake( 0, 0, CGImageGetWidth(xImage), CGImageGetHeight(xImage)), xImage);
+ SAL_INFO("vcl.cg", "CGContextDrawImage(" << maGraphicContextNew.get() << "," << CGRectMake(0, 0, CGImageGetWidth(xImage), CGImageGetHeight(xImage)) << "," << xImage << ")" );
+ CGContextDrawImage(maGraphicContextNew.get(), CGRectMake( 0, 0, CGImageGetWidth(xImage), CGImageGetHeight(xImage)), xImage);
// Flip back
- SAL_INFO("vcl.cg", "CGContextRestoreGState(" << mxGraphicContextNew << ")" );
- CGContextRestoreGState( mxGraphicContextNew );
+ SAL_INFO("vcl.cg", "CGContextRestoreGState(" << maGraphicContextNew.get() << ")" );
+ CGContextRestoreGState( maGraphicContextNew.get() );
SAL_INFO("vcl.cg", "CGImageRelease(" << xImage << ")" );
CGImageRelease( xImage );
- mxGraphicContext = mxGraphicContextNew;
+ maGraphicContext = maGraphicContextNew;
}
rData.mnWidth = mnWidth;
commit 0353d0e5cdfd2847f1d30c629ce19aa202e43c40
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu May 16 21:18:58 2019 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Sat May 18 09:00:06 2019 +0200
use CGContextHolder in copyBits
Change-Id: I98f1723da170712e2f2c2a846e02954381376c7e
Reviewed-on: https://gerrit.libreoffice.org/72441
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/vcl/quartz/salgdicommon.cxx b/vcl/quartz/salgdicommon.cxx
index 11fc42fc6cfc..dd35917cd949 100644
--- a/vcl/quartz/salgdicommon.cxx
+++ b/vcl/quartz/salgdicommon.cxx
@@ -358,37 +358,35 @@ void AquaSalGraphics::copyBits( const SalTwoRect& rPosAry, SalGraphics *pSrcGrap
{
// in XOR mode the drawing context is redirected to the XOR mask
// if source and target are identical then copyBits() paints onto the target context though
- CGContextRef xCopyContext = maContextHolder.get();
+ CGContextHolder aCopyContext = maContextHolder;
if( mpXorEmulation && mpXorEmulation->IsEnabled() )
{
if( pSrcGraphics == this )
{
- xCopyContext = mpXorEmulation->GetTargetContext();
+ aCopyContext.set(mpXorEmulation->GetTargetContext());
}
}
- SAL_INFO( "vcl.cg", "CGContextSaveGState(" << xCopyContext << ")" );
- CGContextSaveGState( xCopyContext );
+ aCopyContext.saveState();
const CGRect aDstRect = CGRectMake(rPosAry.mnDestX, rPosAry.mnDestY, rPosAry.mnDestWidth, rPosAry.mnDestHeight);
- SAL_INFO( "vcl.cg", "CGContextClipToRect(" << xCopyContext << "," << aDstRect << ")" );
- CGContextClipToRect( xCopyContext, aDstRect );
+ SAL_INFO( "vcl.cg", "CGContextClipToRect(" << aCopyContext.get() << "," << aDstRect << ")" );
+ CGContextClipToRect(aCopyContext.get(), aDstRect);
// draw at new destination
// NOTE: flipped drawing gets disabled for this, else the subimage would be drawn upside down
if( pSrc->IsFlipped() )
{
- SAL_INFO( "vcl.cg", "CGContextTranslateCTM(" << xCopyContext << ",0," << mnHeight << ")" );
- CGContextTranslateCTM( xCopyContext, 0, +mnHeight );
- SAL_INFO( "vcl.cg", "CGContextScaleCTM(" << xCopyContext << ",+1,-1)" );
- CGContextScaleCTM( xCopyContext, +1, -1 );
+ SAL_INFO( "vcl.cg", "CGContextTranslateCTM(" << aCopyContext.get() << ",0," << mnHeight << ")" );
+ CGContextTranslateCTM( aCopyContext.get(), 0, +mnHeight );
+ SAL_INFO( "vcl.cg", "CGContextScaleCTM(" << aCopyContext.get() << ",+1,-1)" );
+ CGContextScaleCTM( aCopyContext.get(), +1, -1 );
}
// TODO: pSrc->size() != this->size()
- SAL_INFO( "vcl.cg", "CGContextDrawLayerAtPoint(" << xCopyContext << "," << aDstPoint << "," << pSrc->maLayer.get() << ")");
- CGContextDrawLayerAtPoint(xCopyContext, aDstPoint, pSrc->maLayer.get());
+ SAL_INFO("vcl.cg", "CGContextDrawLayerAtPoint(" << aCopyContext.get() << "," << aDstPoint << "," << pSrc->maLayer.get() << ")");
+ CGContextDrawLayerAtPoint(aCopyContext.get(), aDstPoint, pSrc->maLayer.get());
- SAL_INFO( "vcl.cg", "CGContextRestoreGState(" << xCopyContext << ")" );
- CGContextRestoreGState( xCopyContext );
+ aCopyContext.restoreState();
// mark the destination rectangle as updated
RefreshRect( aDstRect );
}
More information about the Libreoffice-commits
mailing list