summaryrefslogtreecommitdiff
path: root/filter/source/graphicfilter/ipsd/ipsd.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'filter/source/graphicfilter/ipsd/ipsd.cxx')
-rw-r--r--filter/source/graphicfilter/ipsd/ipsd.cxx9
1 files changed, 5 insertions, 4 deletions
diff --git a/filter/source/graphicfilter/ipsd/ipsd.cxx b/filter/source/graphicfilter/ipsd/ipsd.cxx
index 3c219870f1d2..90b7746029b8 100644
--- a/filter/source/graphicfilter/ipsd/ipsd.cxx
+++ b/filter/source/graphicfilter/ipsd/ipsd.cxx
@@ -119,7 +119,7 @@ bool PSDReader::ReadPSD(Graphic & rGraphic )
}
Size aBitmapSize( mpFileHeader->nColumns, mpFileHeader->nRows );
- mpBitmap.reset( new vcl::bitmap::RawBitmap( aBitmapSize, 24 ) );
+ mpBitmap.reset( new vcl::bitmap::RawBitmap( aBitmapSize, mbTransparent ? 32 : 24 ) );
if ( mpPalette && mbStatus )
{
mvPalette.resize( 256 );
@@ -129,8 +129,9 @@ bool PSDReader::ReadPSD(Graphic & rGraphic )
}
}
- if ((mnDestBitDepth == 1 || mnDestBitDepth == 8 || mbTransparent) && mvPalette.empty())
+ if ((mnDestBitDepth == 1 || mnDestBitDepth == 8) && mvPalette.empty())
{
+ SAL_WARN("vcl", "no palette, but bit depth is " << mnDestBitDepth);
mbStatus = false;
return mbStatus;
}
@@ -721,7 +722,7 @@ bool PSDReader::ImplReadBody()
m_rPSD.ReadUChar( nDummy );
for ( sal_uInt16 i = 0; i < ( -nRunCount + 1 ); i++ )
{
- mpBitmap->SetPixel(nY, nX, SanitizePaletteIndex(mvPalette, nDat));
+ mpBitmap->SetAlpha(nY, nX, nDat ? 0 : 255);
if ( ++nX == mpFileHeader->nColumns )
{
nX = 0;
@@ -742,7 +743,7 @@ bool PSDReader::ImplReadBody()
nDat = 1;
if ( mpFileHeader->nDepth == 16 ) // 16 bit depth is to be skipped
m_rPSD.ReadUChar( nDummy );
- mpBitmap->SetPixel(nY, nX, SanitizePaletteIndex(mvPalette, nDat));
+ mpBitmap->SetAlpha(nY, nX, nDat ? 0 : 255);
if ( ++nX == mpFileHeader->nColumns )
{
nX = 0;