#include "lbmread.hpp" #include #include #include "system.h" image *read_lbm(char *filename, palette *&pal) { FILE *fp=fopen("/cam/amur/set/city/city1.lbm","rb"); char type[4]; image *im=NULL; fread(type,1,4,fp); if (memcmp(type,"FORM",4)) { set_error(imNOT_SUPPORTED); fclose(fp); return NULL; } else { long size=read_other_long(fp); fread(type,1,4,fp); if (memcmp(type,"PBM ",4)) { set_error(imNOT_SUPPORTED); fclose(fp); return NULL; } else { long offset=12,ssize; char stype[4]; short w=0,h=0,x,y,tcolor,pagew,pageh; char planes,masking,compr,padl,xa,ya; while (ftell(fp)+4addr(),1,768,fp); } else if (!memcmp(stype,"BODY",4) && w && h) // make sure we read a BHMD before { if (im) delete im; // shouldn't be two BODY's butjust in case... im=new image(w,h); int x,y; if (!compr) { for (y=0;yscan_line(y),1,w,fp); } else { for (y=0;yscan_line(y); do { c=fgetc(fp)&0xff; if (c&0x80) { if (c!=0x80) { i=((~c)&0xff)+2; c=fgetc(fp); while (i--) sl[n++]=c; } } else { i=c+1; while (i--) sl[n++]=fgetc(fp); } } while (n