summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-03-16 15:30:43 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-03-19 07:36:22 +0100
commit62275a93e3b13a20aa1de7945a32a0d25582c1ca (patch)
treeba0f5a3ef6533b4a279eac66b5135aeffe96f486 /vcl
parente9c74a075c3c0809b993c017c11d1505bd244dc8 (diff)
move pixel color extracting from canvas to BitmapEx
part of making GetAlpha/GetMask an internal detail of vcl Change-Id: I874a68f340cd3074cfbeb6303f52adeeb13e56a5 Reviewed-on: https://gerrit.libreoffice.org/51435 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/gdi/bitmapex.cxx21
1 files changed, 21 insertions, 0 deletions
diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx
index 14b3fa17efd6..dba603347679 100644
--- a/vcl/source/gdi/bitmapex.cxx
+++ b/vcl/source/gdi/bitmapex.cxx
@@ -769,6 +769,27 @@ sal_uInt8 BitmapEx::GetTransparency(sal_Int32 nX, sal_Int32 nY) const
return nTransparency;
}
+
+Color BitmapEx::GetPixelColor(sal_Int32 nX, sal_Int32 nY) const
+{
+ Bitmap aAlpha( GetAlpha().GetBitmap() );
+
+ Bitmap aTestBitmap(maBitmap);
+ Bitmap::ScopedReadAccess pReadAccess( aTestBitmap );
+ assert( pReadAccess );
+
+ Color aColor = pReadAccess->GetColor( nY, nX ).GetColor();
+
+ if (!aAlpha.IsEmpty())
+ {
+ Bitmap::ScopedReadAccess pAlphaReadAccess( aAlpha.AcquireReadAccess(), aAlpha );
+ aColor.SetTransparency( pAlphaReadAccess->GetPixel( nY, nX ).GetIndex() );
+ }
+ else
+ aColor.SetTransparency(255);
+ return aColor;
+}
+
// Shift alpha transparent pixels between cppcanvas/ implementations
// and vcl in a generally grotesque and under-performing fashion
bool BitmapEx::Create( const css::uno::Reference< css::rendering::XBitmapCanvas > &xBitmapCanvas,