X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/19f1a09ac95f3698eca674a1daf65f5fc8a7b791..a095505c96a4ffbbfa559d9239bc8a6f75698da1:/src/common/imagiff.cpp diff --git a/src/common/imagiff.cpp b/src/common/imagiff.cpp index 68dc35b1af..432982552a 100644 --- a/src/common/imagiff.cpp +++ b/src/common/imagiff.cpp @@ -1,14 +1,16 @@ ///////////////////////////////////////////////////////////////////////////// // Name: imagiff.h // Purpose: wxImage handler for Amiga IFF images -// Author: Steffen Gutmann +// Author: Steffen Gutmann, Thomas Meyer // RCS-ID: $Id$ // Copyright: (c) Steffen Gutmann, 2002 // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -// parts of the source are based on xviff by Thomas Meyer -// Permission for use in wxWindows has been gratefully given. +// Parts of this source are based on the iff loading algorithm found +// in xviff.c. Permission by the original author, Thomas Meyer, and +// by the author of xv, John Bradley for using the iff loading part +// in wxWindows has been gratefully given. #ifdef __GNUG__ #pragma implementation "imagiff.h" @@ -32,6 +34,10 @@ #include "wx/log.h" #include "wx/intl.h" +#if wxUSE_PALETTE + #include "wx/palette.h" +#endif // wxUSE_PALETTE + #include #include @@ -228,12 +234,14 @@ int wxIFFDecoder::GetTransparentColour() const { return m_image->transparent; } // bool wxIFFDecoder::CanRead() { - unsigned char buf[12] = ""; + unsigned char buf[12]; - m_f->Read(buf, 12); - m_f->SeekI(-12, wxFromCurrent); + if ( !m_f->Read(buf, WXSIZEOF(buf)) ) + return FALSE; + + m_f->SeekI(-(off_t)WXSIZEOF(buf), wxFromCurrent); - return (memcmp(buf, "FORM", 4) == 0 && memcmp(buf+8, "ILBM", 4) == 0); + return (memcmp(buf, "FORM", 4) == 0) && (memcmp(buf+8, "ILBM", 4) == 0); } @@ -781,14 +789,9 @@ bool wxIFFHandler::SaveFile(wxImage * WXUNUSED(image), bool wxIFFHandler::DoCanRead(wxInputStream& stream) { - wxIFFDecoder *decod; - bool ok; + wxIFFDecoder decod(&stream); - decod = new wxIFFDecoder(&stream); - ok = decod->CanRead(); - delete decod; - - return ok; + return decod.CanRead(); } #endif // wxUSE_STREAMS