X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fimage.cc;h=ce930f3ad3efda0339cb6015edec8cf3f0938f38;hp=57817ca9410079c8d24bfdb46e59a5b022b457f9;hb=e9070b6571e0fffb70b5a7f0625906d1627b37c1;hpb=5c69b226e45df981db338dd859ef1d95e9be8f96 diff --git a/src/image.cc b/src/image.cc index 57817ca..ce930f3 100644 --- a/src/image.cc +++ b/src/image.cc @@ -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; }