if ( !image->Ok() )
{
if ( verbose )
+ {
wxLogError(_("BMP: Couldn't save invalid image."));
+ }
return false;
}
)
{
if ( verbose )
+ {
wxLogError(_("BMP: wxImage doesn't have own wxPalette."));
+ }
return false;
}
bpp = 8;
)
{
if (verbose)
+ {
wxLogError(_("BMP: Couldn't write the file (Bitmap) header."));
+ }
return false;
}
}
)
{
if (verbose)
+ {
wxLogError(_("BMP: Couldn't write the file (BitmapInfo) header."));
+ }
return false;
}
}
if ( !stream.Write(rgbquad, palette_size*4) )
{
if (verbose)
+ {
wxLogError(_("BMP: Couldn't write RGB color map."));
+ }
delete[] rgbquad;
#if wxUSE_PALETTE
delete palette;
if ( !stream.Write(buffer, row_width) )
{
if (verbose)
+ {
wxLogError(_("BMP: Couldn't write data."));
+ }
delete[] buffer;
#if wxUSE_PALETTE
delete palette;
if ( !cmap )
{
if (verbose)
+ {
wxLogError(_("BMP: Couldn't allocate memory."));
+ }
return false;
}
}
if ( !ptr )
{
if ( verbose )
+ {
wxLogError( _("BMP: Couldn't allocate memory.") );
+ }
return false;
}
if ( !alpha )
{
if ( verbose )
+ {
wxLogError(_("BMP: Couldn't allocate memory."));
+ }
return false;
}
}
if ( width > 32767 )
{
if (verbose)
+ {
wxLogError( _("DIB Header: Image width > 32767 pixels for file.") );
+ }
return false;
}
if ( height > 32767 )
{
if (verbose)
+ {
wxLogError( _("DIB Header: Image height > 32767 pixels for file.") );
+ }
return false;
}
if ( bpp != 1 && bpp != 4 && bpp != 8 && bpp != 16 && bpp != 24 && bpp != 32 )
{
if (verbose)
+ {
wxLogError( _("DIB Header: Unknown bitdepth in file.") );
+ }
return false;
}
comp != BI_BITFIELDS )
{
if (verbose)
+ {
wxLogError( _("DIB Header: Unknown encoding in file.") );
+ }
return false;
}
((comp == BI_BITFIELDS) && (bpp != 16 && bpp != 32)))
{
if (verbose)
+ {
wxLogError( _("DIB Header: Encoding doesn't match bitdepth.") );
+ }
return false;
}
verbose, IsBmp, true) )
{
if (verbose)
+ {
wxLogError( _("Error in reading image DIB.") );
+ }
return false;
}
verbose, IsBmp, false) )
{
if (verbose)
+ {
wxLogError( _("ICO: Error in reading mask DIB.") );
+ }
return false;
}
image->SetMaskFromImage(mask, 255, 255, 255);
if ( image->GetHeight () > 127 )
{
if ( verbose )
+ {
wxLogError(_("ICO: Image too tall for an icon."));
+ }
return false;
}
if ( image->GetWidth () > 255 )
{
if ( verbose )
+ {
wxLogError(_("ICO: Image too wide for an icon."));
+ }
return false;
}
if ( !stream.IsOk() )
{
if ( verbose )
+ {
wxLogError(_("ICO: Error writing the image file!"));
+ }
return false;
}
if ( !bResult )
{
if ( verbose )
+ {
wxLogError(_("ICO: Error writing the image file!"));
+ }
return false;
}
IsMask = true;
if ( !bResult )
{
if ( verbose )
+ {
wxLogError(_("ICO: Error writing the image file!"));
+ }
return false;
}
wxUint32 Size = cStream.GetSize();
if ( !stream.IsOk() )
{
if ( verbose )
+ {
wxLogError(_("ICO: Error writing the image file!"));
+ }
return false;
}
if ( !bResult )
{
if ( verbose )
+ {
wxLogError(_("ICO: Error writing the image file!"));
+ }
return false;
}
IsMask = true;
if ( !bResult )
{
if ( verbose )
+ {
wxLogError(_("ICO: Error writing the image file!"));
+ }
return false;
}
int iSel = wxNOT_FOUND;
// remember how many bytes we read from the stream:
- wxFileOffset offset = sizeof(IconDir);
+ wxFileOffset alreadySeeked = sizeof(IconDir);
for (unsigned int i = 0; i < nIcons; i++ )
{
- offset += stream.Read(pCurrentEntry, sizeof(ICONDIRENTRY)).LastRead();
+ alreadySeeked += stream.Read(pCurrentEntry, sizeof(ICONDIRENTRY)).LastRead();
// bHeight and bColorCount are wxUint8
if ( pCurrentEntry->bWidth >= wMax )
// NOTE: seeking a positive amount in wxFromCurrent mode allows us to
// load even non-seekable streams (see wxInputStream::SeekI docs)!
- if (stream.SeekI(wxUINT32_SWAP_ON_BE(pCurrentEntry->dwImageOffset) - offset,
- wxFromCurrent) == wxInvalidOffset)
+ wxFileOffset offset = wxUINT32_SWAP_ON_BE(pCurrentEntry->dwImageOffset) - alreadySeeked;
+ if (offset != 0 && stream.SeekI(offset, wxFromCurrent) == wxInvalidOffset)
return false;
bResult = LoadDib(image, stream, true, IsBmp);