summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-04-18 15:24:25 +0200
committerZolnai Tamás <tamas.zolnai@collabora.com>2014-04-18 18:53:22 +0200
commit8afabd394214bb7c772c88b08ec3cadb56771cce (patch)
tree9b29eed5f78bec3986372040654bc66d04072f47 /vcl
parent9cf12d7544d501e6794cfbb6eabf508603d59966 (diff)
Extract code of BitmapEx -> RGBA buffer conversion to OpenGLHelper
Needed by gltf rendering. Change-Id: I1aa974f3c515c5fb19a07b54ff655331138553cb
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/opengl/OpenGLHelper.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx
index 0042231779d8..35760f2de72c 100644
--- a/vcl/source/opengl/OpenGLHelper.cxx
+++ b/vcl/source/opengl/OpenGLHelper.cxx
@@ -12,6 +12,8 @@
#include <osl/file.hxx>
#include <rtl/bootstrap.hxx>
#include <config_folders.h>
+#include <vcl/salbtype.hxx>
+#include <vcl/bmpacc.hxx>
#include <vector>
@@ -140,4 +142,30 @@ GLint OpenGLHelper::LoadShaders(const OUString& rVertexShaderName,const OUString
return ProgramID;
}
+sal_uInt8* OpenGLHelper::ConvertBitmapExToRGBABuffer(const BitmapEx& rBitmapEx)
+{
+ long nBmpWidth = rBitmapEx.GetSizePixel().Width();
+ long nBmpHeight = rBitmapEx.GetSizePixel().Height();
+
+ Bitmap aBitmap (rBitmapEx.GetBitmap());
+ AlphaMask aAlpha (rBitmapEx.GetAlpha());
+ sal_uInt8* pBitmapBuf(new sal_uInt8[4* nBmpWidth * nBmpHeight ]);
+ Bitmap::ScopedReadAccess pReadAccces( aBitmap );
+ AlphaMask::ScopedReadAccess pAlphaReadAccess( aAlpha );
+ size_t i = 0;
+ for (long ny = 0; ny < nBmpHeight; ny++)
+ {
+ Scanline pAScan = pAlphaReadAccess ? pAlphaReadAccess->GetScanline(ny) : 0;
+ for(long nx = 0; nx < nBmpWidth; nx++)
+ {
+ BitmapColor aCol = pReadAccces->GetColor( ny, nx );
+ pBitmapBuf[i++] = aCol.GetRed();
+ pBitmapBuf[i++] = aCol.GetGreen();
+ pBitmapBuf[i++] = aCol.GetBlue();
+ pBitmapBuf[i++] = pAScan ? 255 - *pAScan++ : 255;
+ }
+ }
+ return pBitmapBuf;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */