X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b81e45065986abc34676fecc31515efeb3f3a8d4..890defb4f3a0012a296c69949bf5f93075743e8f:/src/common/imagiff.cpp diff --git a/src/common/imagiff.cpp b/src/common/imagiff.cpp index 9fd15214d4..428219853c 100644 --- a/src/common/imagiff.cpp +++ b/src/common/imagiff.cpp @@ -98,7 +98,10 @@ public: // constructor, destructor, etc. wxIFFDecoder(wxInputStream *s); ~wxIFFDecoder() { Destroy(); } + + // NOTE: this function modifies the current stream position bool CanRead(); + int ReadIFF(); bool ConvertToImage(wxImage *image) const; }; @@ -234,9 +237,6 @@ bool wxIFFDecoder::CanRead() if ( !m_f->Read(buf, WXSIZEOF(buf)) ) return false; - if ( m_f->SeekI(-(wxFileOffset)WXSIZEOF(buf), wxFromCurrent) == wxInvalidOffset ) - return false; - return (memcmp(buf, "FORM", 4) == 0) && (memcmp(buf+8, "ILBM", 4) == 0); } @@ -379,7 +379,7 @@ int wxIFFDecoder::ReadIFF() return wxIFF_INVFORMAT; } - wxLogTrace(_T("iff"), _T("IFF ILBM file recognized")); + wxLogTrace(wxT("iff"), wxT("IFF ILBM file recognized")); dataptr = dataptr + 4; // skip ID @@ -438,7 +438,7 @@ int wxIFFDecoder::ReadIFF() } } - wxLogTrace(_T("iff"), _T("Read %d colors from IFF file."), + wxLogTrace(wxT("iff"), wxT("Read %d colors from IFF file."), colors); dataptr += 8 + chunkLen; // to next chunk @@ -501,8 +501,8 @@ int wxIFFDecoder::ReadIFF() } } - wxLogTrace(_T("iff"), - _T("LoadIFF: %s %dx%d, planes=%d (%d cols), comp=%d"), + wxLogTrace(wxT("iff"), + wxT("LoadIFF: %s %dx%d, planes=%d (%d cols), comp=%d"), (fmt==ILBM_NORMAL) ? "Normal ILBM" : (fmt==ILBM_HAM) ? "HAM ILBM" : (fmt==ILBM_HAM8) ? "HAM8 ILBM" : @@ -512,8 +512,8 @@ int wxIFFDecoder::ReadIFF() 1<> 1; @@ -704,12 +704,12 @@ int wxIFFDecoder::ReadIFF() m_image->h = height; m_image->transparent = bmhd_transcol; - wxLogTrace(_T("iff"), _T("Loaded IFF picture %s"), + wxLogTrace(wxT("iff"), wxT("Loaded IFF picture %s"), truncated? "truncated" : "completely"); return (truncated? wxIFF_TRUNCATED : wxIFF_OK); } else { - wxLogTrace(_T("iff"), _T("Skipping unknown chunk '%c%c%c%c'"), + wxLogTrace(wxT("iff"), wxT("Skipping unknown chunk '%c%c%c%c'"), *dataptr, *(dataptr+1), *(dataptr+2), *(dataptr+3)); dataptr = dataptr + 8 + chunkLen; // skip unknown chunk @@ -777,7 +777,9 @@ bool wxIFFHandler::SaveFile(wxImage * WXUNUSED(image), wxOutputStream& WXUNUSED(stream), bool verbose) { if (verbose) + { wxLogDebug(wxT("IFF: the handler is read-only!!")); + } return false; } @@ -787,6 +789,7 @@ bool wxIFFHandler::DoCanRead(wxInputStream& stream) wxIFFDecoder decod(&stream); return decod.CanRead(); + // it's ok to modify the stream position here } #endif // wxUSE_STREAMS