]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/imageloader.cpp
Change the ImageLoader API to use IO::Seekable
[libs/gui.git] / source / graphics / imageloader.cpp
index 679f797adcc2bae5d7499c7cc41f6254ef3bb723..daedab6c5b57e80539c580602dcc5c07a3f923f5 100644 (file)
@@ -38,11 +38,12 @@ ImageLoader *ImageLoader::open_file(const string &fn)
        }
 }
 
-ImageLoader *ImageLoader::open_io(IO::Base &io)
+ImageLoader *ImageLoader::open_io(IO::Seekable &io)
 {
        char sig_buf[8];
        unsigned sig_len = io.read(sig_buf, sizeof(sig_buf));
        string sig(sig_buf, sig_len);
+       io.seek(0, IO::S_BEG);
 
        // TODO register loader classes automatically
        ImageLoader *loader = 0;
@@ -50,11 +51,11 @@ ImageLoader *ImageLoader::open_io(IO::Base &io)
                ;
 #ifdef WITH_LIBPNG
        else if(PngLoader::detect(sig))
-               loader = new PngLoader(io, sig);
+               loader = new PngLoader(io);
 #endif
 #ifdef WITH_DEVIL
        else if(DevilLoader::detect(sig))
-               loader = new DevilLoader(io, sig);
+               loader = new DevilLoader(io);
 #endif
        else
        {