added colour normalization to PNM handler [backport from HEAD]

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-06-03 22:14:32 +00:00
parent d101b7b205
commit 8653d7fa60
2 changed files with 20 additions and 2 deletions

View File

@@ -91,6 +91,10 @@ Major new features in 2.8 release
2.8.5 2.8.5
----- -----
All (GUI):
- Added colour normalization to PNM image handler (Ray Johnston)
wxMSW: wxMSW:
- Fix crash when destroying a default button (Tim Kosse) - Fix crash when destroying a default button (Tim Kosse)

View File

@@ -96,6 +96,8 @@ bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
for (wxUint32 i=0; i<size; ++i) for (wxUint32 i=0; i<size; ++i)
{ {
value=text_stream.Read32(); value=text_stream.Read32();
if ( maxval != 255 )
value = (255 * value)/maxval;
*ptr++=(unsigned char)value; // R *ptr++=(unsigned char)value; // R
*ptr++=(unsigned char)value; // G *ptr++=(unsigned char)value; // G
*ptr++=(unsigned char)value; // B *ptr++=(unsigned char)value; // B
@@ -114,6 +116,8 @@ bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
//this is very slow !!! //this is very slow !!!
//I wonder how we can make any better ? //I wonder how we can make any better ?
value=text_stream.Read32(); value=text_stream.Read32();
if ( maxval != 255 )
value = (255 * value)/maxval;
*ptr++=(unsigned char)value; *ptr++=(unsigned char)value;
if ( !buf_stream ) if ( !buf_stream )
@@ -130,6 +134,8 @@ bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
for (wxUint32 i=0; i<size; ++i) for (wxUint32 i=0; i<size; ++i)
{ {
buf_stream.Read(&value,1); buf_stream.Read(&value,1);
if ( maxval != 255 )
value = (255 * value)/maxval;
*ptr++=value; // R *ptr++=value; // R
*ptr++=value; // G *ptr++=value; // G
*ptr++=value; // B *ptr++=value; // B
@@ -140,8 +146,16 @@ bool wxPNMHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
} }
} }
} }
if (c=='6') // Raw RGB
buf_stream.Read( ptr, 3*width*height ); if ( c=='6' ) // Raw RGB
{
buf_stream.Read(ptr, 3*width*height);
if ( maxval != 255 )
{
for ( unsigned i = 0; i < 3*width*height; i++ )
ptr[i] = (255 * ptr[i])/maxval;
}
}
image->SetMask( false ); image->SetMask( false );