hacked image loading to use assman
[laserbrain_demo] / src / image.cc
index 57817ca..ce930f3 100644 (file)
@@ -7,6 +7,7 @@
 #endif
 
 #include "imago2.h"
+#include "assman.h"
 #include "image.h"
 
 static int pixel_elements(Image::Format fmt);
@@ -171,12 +172,30 @@ void Image::resize_half()
        height = newysz;
 }
 
+static size_t io_read(void *buf, size_t bytes, void *fp)
+{
+       return ass_fread(buf, 1, bytes, fp);
+}
+
+static long io_seek(long offs, int whence, void *fp)
+{
+       ass_fseek(fp, offs, whence);
+       return ass_ftell(fp);
+}
+
 bool Image::load(const char *fname)
 {
        struct img_pixmap pixmap;
+       struct img_io io = {0, io_read, 0, io_seek};
+       ass_file *fp;
+
+       if(!(fp = ass_fopen(fname, "rb"))) {
+               return false;
+       }
+       io.uptr = fp;
 
        img_init(&pixmap);
-       if(img_load(&pixmap, fname) == -1) {
+       if(img_read(&pixmap, &io) == -1) {
                return false;
        }