#i107137# fix wrong colorspace calculations

* applied patch from i107137
This commit is contained in:
thb
2010-01-18 21:01:43 +01:00
parent 80e02df062
commit 9fb80cbeee

View File

@@ -1794,12 +1794,12 @@ namespace cairocanvas
rendering::RGBColor* pOut( aRes.getArray() ); rendering::RGBColor* pOut( aRes.getArray() );
for( sal_Size i=0; i<nLen; i+=4 ) for( sal_Size i=0; i<nLen; i+=4 )
{ {
const sal_Int8 nAlpha(pIn[3]); const double fAlpha((sal_uInt8)pIn[3]);
if( nAlpha ) if( fAlpha )
*pOut++ = rendering::RGBColor( *pOut++ = rendering::RGBColor(
vcl::unotools::toDoubleColor(pIn[2]/nAlpha), pIn[2]/fAlpha,
vcl::unotools::toDoubleColor(pIn[1]/nAlpha), pIn[1]/fAlpha,
vcl::unotools::toDoubleColor(pIn[0]/nAlpha)); pIn[0]/fAlpha);
else else
*pOut++ = rendering::RGBColor(0,0,0); *pOut++ = rendering::RGBColor(0,0,0);
pIn += 4; pIn += 4;
@@ -1819,13 +1819,13 @@ namespace cairocanvas
rendering::ARGBColor* pOut( aRes.getArray() ); rendering::ARGBColor* pOut( aRes.getArray() );
for( sal_Size i=0; i<nLen; i+=4 ) for( sal_Size i=0; i<nLen; i+=4 )
{ {
const sal_Int8 nAlpha(pIn[3]); const double fAlpha((sal_uInt8)pIn[3]);
if( nAlpha ) if( fAlpha )
*pOut++ = rendering::ARGBColor( *pOut++ = rendering::ARGBColor(
vcl::unotools::toDoubleColor(nAlpha), fAlpha/255.0,
vcl::unotools::toDoubleColor(pIn[2]/nAlpha), pIn[2]/fAlpha,
vcl::unotools::toDoubleColor(pIn[1]/nAlpha), pIn[1]/fAlpha,
vcl::unotools::toDoubleColor(pIn[0]/nAlpha)); pIn[0]/fAlpha);
else else
*pOut++ = rendering::ARGBColor(0,0,0,0); *pOut++ = rendering::ARGBColor(0,0,0,0);
pIn += 4; pIn += 4;