]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imaggif.cpp
Rewind the input stream after failing to load image from it.
[wxWidgets.git] / src / common / imaggif.cpp
index 22a8dc04cca7c1ec2b2172f9a26a0c874510faaf..fdb9a4971d1af78c4521d8d47c9fe2bb64c1d961 100644 (file)
@@ -89,7 +89,9 @@ bool wxGIFHandler::SaveFile( wxImage * WXUNUSED(image),
                              wxOutputStream& WXUNUSED(stream), bool verbose )
 {
     if (verbose)
+    {
         wxLogDebug(wxT("GIF: the handler is read-only!!"));
+    }
 
     return false;
 }
@@ -98,6 +100,20 @@ bool wxGIFHandler::DoCanRead( wxInputStream& stream )
 {
     wxGIFDecoder decod;
     return decod.CanRead(stream);
+         // it's ok to modify the stream position here
+}
+
+int wxGIFHandler::DoGetImageCount( wxInputStream& stream )
+{
+    wxGIFDecoder decod;
+    wxGIFErrorCode error = decod.LoadGIF(stream);
+    if ( (error != wxGIF_OK) && (error != wxGIF_TRUNCATED) )
+        return -1;
+
+    // NOTE: this function modifies the current stream position but it's ok
+    //       (see wxImageHandler::GetImageCount)
+
+    return decod.GetFrameCount();
 }
 
 #endif  // wxUSE_STREAMS