summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/xbitmap.hxx4
-rw-r--r--include/vcl/dibtools.hxx6
-rw-r--r--lotuswordpro/source/filter/lwpbackgroundstuff.cxx8
-rw-r--r--sc/source/filter/excel/xiescher.cxx2
-rw-r--r--svx/source/xoutdev/xattrbmp.cxx10
-rw-r--r--vcl/source/bitmap/BitmapTools.cxx44
-rw-r--r--vcl/source/gdi/dibtools.cxx9
7 files changed, 55 insertions, 28 deletions
diff --git a/include/svx/xbitmap.hxx b/include/svx/xbitmap.hxx
index d5ff0f7eb9e1..e062a0aebc5a 100644
--- a/include/svx/xbitmap.hxx
+++ b/include/svx/xbitmap.hxx
@@ -43,7 +43,7 @@ private:
public:
- XOBitmap( const Bitmap& rBitmap );
+ XOBitmap( const BitmapEx& rBitmap );
~XOBitmap();
void Bitmap2Array();
@@ -52,7 +52,7 @@ public:
void SetPixelColor( const Color& rColor ) { aPixelColor = rColor; bGraphicDirty = true; }
void SetBackgroundColor( const Color& rColor ) { aBckgrColor = rColor; bGraphicDirty = true; }
- Bitmap GetBitmap() const;
+ BitmapEx GetBitmap() const;
const Color& GetBackgroundColor() const { return aBckgrColor; }
};
diff --git a/include/vcl/dibtools.hxx b/include/vcl/dibtools.hxx
index 75618ad609d7..f56ee96bd4e4 100644
--- a/include/vcl/dibtools.hxx
+++ b/include/vcl/dibtools.hxx
@@ -60,6 +60,12 @@ bool VCL_DLLPUBLIC WriteDIB( // WriteDIB(rBitmap, rOStm, false, true);
bool bCompressed,
bool bFileHeader);
+bool VCL_DLLPUBLIC WriteDIB( // WriteDIB(rBitmap, rOStm, false, true);
+ const BitmapEx& rSource,
+ SvStream& rOStm,
+ bool bCompressed,
+ bool bFileHeader);
+
bool VCL_DLLPUBLIC WriteDIBBitmapEx(
const BitmapEx& rSource,
SvStream& rOStm);
diff --git a/lotuswordpro/source/filter/lwpbackgroundstuff.cxx b/lotuswordpro/source/filter/lwpbackgroundstuff.cxx
index 90a77cb8eb19..7ee17a64fdd8 100644
--- a/lotuswordpro/source/filter/lwpbackgroundstuff.cxx
+++ b/lotuswordpro/source/filter/lwpbackgroundstuff.cxx
@@ -65,7 +65,7 @@
#include <tools/stream.hxx>
#include <vcl/dibtools.hxx>
-#include <vcl/bitmapaccess.hxx>
+#include <vcl/BitmapTools.hxx>
#include <svx/xbitmap.hxx>
void LwpBackgroundStuff::Read(LwpObjectStream* pStrm)
@@ -114,11 +114,7 @@ XFBGImage* LwpBackgroundStuff::GetFillPattern()
GetPattern(m_nID, aPttnArray);
// create bitmap object from the pattern array
- Bitmap aBmp( Size(8, 8), 1 );
- BitmapWriteAccess* pWA = aBmp.AcquireWriteAccess();
- sal_uInt8* pBuf = pWA->GetBuffer();
- memcpy(pBuf, aPttnArray, 32);
- Bitmap::ReleaseAccess(pWA);
+ BitmapEx aBmp = vcl::bitmap::CreateFromData( aPttnArray, 8, 8, 8, 1 );
// create XOBitmap object from bitmap object
XOBitmap aXOBitmap( aBmp );
diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx
index 63284f9076d2..5d03a6ecaf62 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -720,7 +720,7 @@ void XclImpDrawObjBase::ConvertFillStyle( SdrObject& rSdrObj, const XclObjFillDa
aXOBitmap.SetPixelColor( aPattColor );
aXOBitmap.SetBackgroundColor( aBackColor );
aXOBitmap.Array2Bitmap();
- aBitmap = aXOBitmap.GetBitmap();
+ aBitmap = aXOBitmap.GetBitmap().GetBitmapRef();
rSdrObj.SetMergedItem(XFillStyleItem(drawing::FillStyle_BITMAP));
rSdrObj.SetMergedItem(XFillBitmapItem(EMPTY_OUSTRING, Graphic(aBitmap)));
diff --git a/svx/source/xoutdev/xattrbmp.cxx b/svx/source/xoutdev/xattrbmp.cxx
index fad22b1c546d..6bb58e9707bb 100644
--- a/svx/source/xoutdev/xattrbmp.cxx
+++ b/svx/source/xoutdev/xattrbmp.cxx
@@ -44,7 +44,7 @@
using namespace ::com::sun::star;
-XOBitmap::XOBitmap( const Bitmap& rBmp ) :
+XOBitmap::XOBitmap( const BitmapEx& rBmp ) :
xGraphicObject (new GraphicObject(rBmp)),
bGraphicDirty ( false )
{
@@ -54,9 +54,9 @@ XOBitmap::~XOBitmap()
{
}
-Bitmap XOBitmap::GetBitmap() const
+BitmapEx XOBitmap::GetBitmap() const
{
- return GetGraphicObject().GetGraphic().GetBitmap();
+ return GetGraphicObject().GetGraphic().GetBitmapEx();
}
const GraphicObject& XOBitmap::GetGraphicObject() const
@@ -71,14 +71,14 @@ void XOBitmap::Bitmap2Array()
{
ScopedVclPtrInstance< VirtualDevice > pVDev;
bool bPixelColor = false;
- const Bitmap aBitmap( GetBitmap() );
+ const BitmapEx aBitmap( GetBitmap() );
const sal_Int32 nLines = 8; // type dependent
if( !pPixelArray )
pPixelArray.reset( new sal_uInt16[ nLines * nLines ] );
pVDev->SetOutputSizePixel( aBitmap.GetSizePixel() );
- pVDev->DrawBitmap( Point(), aBitmap );
+ pVDev->DrawBitmapEx( Point(), aBitmap );
aPixelColor = aBckgrColor = pVDev->GetPixel( Point() );
// create array and determine foreground and background color
diff --git a/vcl/source/bitmap/BitmapTools.cxx b/vcl/source/bitmap/BitmapTools.cxx
index 4570be72e436..87c6b64fb56a 100644
--- a/vcl/source/bitmap/BitmapTools.cxx
+++ b/vcl/source/bitmap/BitmapTools.cxx
@@ -114,7 +114,7 @@ void loadFromSvg(SvStream& rStream, const OUString& sPath, BitmapEx& rBitmapEx,
BitmapEx CreateFromData( sal_uInt8 const *pData, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int32 nStride, sal_uInt16 nBitCount )
{
assert(nStride >= nWidth);
- assert( nBitCount == 24 || nBitCount == 32);
+ assert( nBitCount == 1 || nBitCount == 24 || nBitCount == 32);
Bitmap aBmp( Size( nWidth, nHeight ), nBitCount );
Bitmap::ScopedWriteAccess pWrite(aBmp);
@@ -128,26 +128,42 @@ BitmapEx CreateFromData( sal_uInt8 const *pData, sal_Int32 nWidth, sal_Int32 nHe
pAlphaMask.reset( new AlphaMask( Size(nWidth, nHeight) ) );
xMaskAcc = AlphaMask::ScopedWriteAccess(*pAlphaMask);
}
- for( long y = 0; y < nHeight; ++y )
+ if (nBitCount == 1)
{
- sal_uInt8 const *p = pData + y * nStride;
- Scanline pScanline = pWrite->GetScanline(y);
- for (long x = 0; x < nWidth; ++x)
+ for( long y = 0; y < nHeight; ++y )
{
- BitmapColor col(p[0], p[1], p[2]);
- pWrite->SetPixelOnData(pScanline, x, col);
- p += nBitCount/8;
+ sal_uInt8 const *p = pData + y * nStride;
+ Scanline pScanline = pWrite->GetScanline(y);
+ for (long x = 0; x < nWidth; ++x)
+ {
+ pWrite->SetPixelOnData(pScanline, x, BitmapColor(*p));
+ ++p;
+ }
}
- if (nBitCount == 32)
+ }
+ else
+ {
+ for( long y = 0; y < nHeight; ++y )
{
- p = pData + y * nStride + 3;
- Scanline pMaskScanLine = xMaskAcc->GetScanline(y);
+ sal_uInt8 const *p = pData + y * nStride;
+ Scanline pScanline = pWrite->GetScanline(y);
for (long x = 0; x < nWidth; ++x)
{
- xMaskAcc->SetPixelOnData(pMaskScanLine, x, BitmapColor(*p));
- p += 4;
+ BitmapColor col(p[0], p[1], p[2]);
+ pWrite->SetPixelOnData(pScanline, x, col);
+ p += nBitCount/8;
}
- }
+ if (nBitCount == 32)
+ {
+ p = pData + y * nStride + 3;
+ Scanline pMaskScanLine = xMaskAcc->GetScanline(y);
+ for (long x = 0; x < nWidth; ++x)
+ {
+ xMaskAcc->SetPixelOnData(pMaskScanLine, x, BitmapColor(*p));
+ p += 4;
+ }
+ }
+ }
}
if (nBitCount == 32)
return BitmapEx(aBmp, *pAlphaMask);
diff --git a/vcl/source/gdi/dibtools.cxx b/vcl/source/gdi/dibtools.cxx
index 325f1e68d670..61acb72dfcb2 100644
--- a/vcl/source/gdi/dibtools.cxx
+++ b/vcl/source/gdi/dibtools.cxx
@@ -1831,6 +1831,15 @@ bool WriteDIB(
return ImplWriteDIB(rSource, rOStm, bCompressed, bFileHeader);
}
+bool WriteDIB(
+ const BitmapEx& rSource,
+ SvStream& rOStm,
+ bool bCompressed,
+ bool bFileHeader)
+{
+ return ImplWriteDIB(rSource.GetBitmapRef(), rOStm, bCompressed, bFileHeader);
+}
+
bool WriteDIBBitmapEx(
const BitmapEx& rSource,
SvStream& rOStm)