Simplify wxGIFHandler::LoadFile().
Don't use heap-allocated wxGIFDecoder when a stack-allocated object would do just as well. Don't handle errors different from the defined wxGIF_XXX constants: they can never happen because LoadGIF() has no way of returning them. Don't check for "ok" variable being false when it was set to true and never changed until this check.
This commit is contained in:
@@ -117,53 +117,31 @@ static bool wxGIFHandler_BufferedOutput(wxOutputStream *, wxUint8 *buf, int c);
|
|||||||
bool wxGIFHandler::LoadFile(wxImage *image, wxInputStream& stream,
|
bool wxGIFHandler::LoadFile(wxImage *image, wxInputStream& stream,
|
||||||
bool verbose, int index)
|
bool verbose, int index)
|
||||||
{
|
{
|
||||||
wxGIFDecoder *decod;
|
wxGIFDecoder decod;
|
||||||
wxGIFErrorCode error;
|
switch ( decod.LoadGIF(stream) )
|
||||||
bool ok = true;
|
{
|
||||||
|
case wxGIF_OK:
|
||||||
|
break;
|
||||||
|
|
||||||
// image->Destroy();
|
|
||||||
decod = new wxGIFDecoder();
|
|
||||||
error = decod->LoadGIF(stream);
|
|
||||||
|
|
||||||
if ((error != wxGIF_OK) && (error != wxGIF_TRUNCATED))
|
|
||||||
{
|
|
||||||
if (verbose)
|
|
||||||
{
|
|
||||||
switch (error)
|
|
||||||
{
|
|
||||||
case wxGIF_INVFORMAT:
|
case wxGIF_INVFORMAT:
|
||||||
|
if ( verbose )
|
||||||
wxLogError(_("GIF: error in GIF image format."));
|
wxLogError(_("GIF: error in GIF image format."));
|
||||||
break;
|
|
||||||
case wxGIF_MEMERR:
|
|
||||||
wxLogError(_("GIF: not enough memory."));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
wxLogError(_("GIF: unknown error!!!"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delete decod;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
if ((error == wxGIF_TRUNCATED) && verbose)
|
case wxGIF_MEMERR:
|
||||||
{
|
if ( verbose )
|
||||||
|
wxLogError(_("GIF: not enough memory."));
|
||||||
|
return false;
|
||||||
|
|
||||||
|
case wxGIF_TRUNCATED:
|
||||||
|
if ( verbose )
|
||||||
wxLogError(_("GIF: data stream seems to be truncated."));
|
wxLogError(_("GIF: data stream seems to be truncated."));
|
||||||
|
|
||||||
// go on; image data is OK
|
// go on; image data is OK
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok)
|
return decod.ConvertToImage(index != -1 ? (size_t)index : 0, image);
|
||||||
{
|
|
||||||
ok = decod->ConvertToImage(index != -1 ? (size_t)index : 0, image);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxLogError(_("GIF: Invalid gif index."));
|
|
||||||
}
|
|
||||||
|
|
||||||
delete decod;
|
|
||||||
|
|
||||||
return ok;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxGIFHandler::SaveFile(wxImage *image,
|
bool wxGIFHandler::SaveFile(wxImage *image,
|
||||||
|
|||||||
Reference in New Issue
Block a user