PCX Loader [DOS 16BIT]
-
Ich will mir einen PCX loader für den mode 13h bauen und habe auch schon eine routine zum auslesen der bilddaten ohne palette, doch wenn ich dieses bild dann auf den schirm blitte, hab ich nur ein schwarzes bild.Hier kommt der code
BITMAP* LoadPCX(char *filename,PALETTE pal) { BITMAP *ret; BYTE color; int runsize; int l,i; long lsize; FILE *fp; PCX_HEADER pcx_header; if((fp=fopen(filename,"rb"))==0) { return 0; } if(fread(&pcx_header,sizeof(BYTE),sizeof(PCX_HEADER),fp)!=sizeof(PCX_HEADER)) { fclose(fp); return 0; } if(pcx_header.manu!=10) { fclose(fp); return 0; } if(!(pcx_header.version==0||pcx_header.version==2||pcx_header.version==3||pcx_header.version==5)) { fclose(fp); return 0; } if(pcx_header.bpp!=8) { fclose(fp); return 0; } ret=CreateBitmap(1+pcx_header.xmax-pcx_header.xmin,1+pcx_header.ymax-pcx_header.ymin); if(ret==0) { fclose(fp); return 0; } lsize=pcx_header.bytesPerLine*pcx_header.planes*(1+pcx_header.ymax-pcx_header.ymin); for(l=0;l<lsize;) { color=fgetc(fp); if(color&0xC0==0xC0) { runsize=color&0x3F; color=fgetc(fp); } else { runsize=1; } for(i=0;i<runsize;i++) { ret->data[i+l]=color; } l+=runsize; } fclose(fp); return ret; }
-
Habs gelöst, wo man alles nicht hinschaut signed int war zu klein für lsize mit nem unsigned long gings