diff options
Diffstat (limited to 'filter/source')
-rw-r--r-- | filter/source/graphicfilter/ipsd/ipsd.cxx | 9 |
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; |