📄 mga_lbm.c
字号:
/* (c) HelDoRe ILBM unit ... v0.0.2 Supported formats : 8 bpp RLE*/ #define VERLBM " unit v0.0.2"#define FORM 0x464F524D#define BODY 0x424F4459#include <stdio.h>#include "../mga_view.h"void help_lbm(){printf("LBM%s\n + 8 bpp rle\n",VERLBM);}int detect_lbm(){ int compr,size,skok; signed char dek; tempi=fgetc32(plik); if (tempi != FORM) return 1; size=fgetc32(plik); fseek(plik,8,SEEK_CUR); skok=fgetc32(plik); image_x=fgetc16(plik); image_y=fgetc16(plik); tempi=fgetc32(plik); depth=fgetc(plik); fgetc(plik); compr=fgetc(plik); if (check_image(image_x,image_y,depth)==3) return 3; printf("ILBM%s\n",VERLBM); printf("LBM detected : %ix%ix%i ",image_x,image_y,depth); if (compr==1) printf("compressed"); printf("\n"); fseek(plik,skok-7,SEEK_CUR); skok=fgetc32(plik); for (tempi=0;tempi<skok/3;tempi++) { tab2r[tempi]=fgetc(plik); tab2g[tempi]=fgetc(plik); tab2b[tempi]=fgetc(plik); } do { tempi=fgetc32(plik); skok=fgetc32(plik); if (tempi!=BODY) fseek(plik,skok,SEEK_CUR); } while (tempi!=BODY); for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { if ((depth==8) && (compr==1)) { /* depth=8 compr=1 */// if ((dek=fgetc(plik))==-1) return 0; dek=fgetc(plik); if (dek!=-128) {if (dek>=0) { skok=dek+1; for (tempi=0;tempi<skok;tempi++) { size=fgetc(plik); tabr[x+tempi+y*image_x]=tab2r[size]; tabg[x+tempi+y*image_x]=tab2g[size]; tabb[x+tempi+y*image_x]=tab2b[size]; } x+=tempi-1; } else { skok=(-dek)+1; size=fgetc(plik); for (tempi=0;tempi<skok;tempi++) { tabr[x+tempi+y*image_x]=tab2r[size]; tabg[x+tempi+y*image_x]=tab2g[size]; tabb[x+tempi+y*image_x]=tab2b[size]; } x+=tempi-1; } } } /* end depth=8 compr */ if ((depth==8) && (compr==0)) { /* depth=8 compr=0 */ if ((size=fgetc(plik))==-1) return 0; tabr[x+y*image_x]=tab2r[size]; tabg[x+y*image_x]=tab2g[size]; tabb[x+y*image_x]=tab2b[size]; } /* end depth=8 nocompr */ } } return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -