📄 mga_xwd.c
字号:
/* (c) HelDoRe XWD unit ... v0.0.4 Supported formats : 16bpp 24bpp*/ #define VERXWD " unit v0.0.4"#include <stdio.h>#include "../mga_view.h"void help_xwd(){printf("XWD%s\n + 16 bpp\n + 24 bpp\n + 32 bpp\n",VERXWD);}int detect_xwd(){ int header,offs,bpp,offss; header=fgetc32(plik); tempi=fgetc32(plik); if (tempi != 7) return 1; fseek(plik,7,SEEK_CUR); depth=fgetc(plik); image_x=fgetc32(plik); image_y=fgetc32(plik); offs=fgetc32(plik); fseek(plik,19,SEEK_CUR); bpp=fgetc(plik); fseek(plik,28,SEEK_CUR); offss=fgetc32(plik); if (check_image(image_x,image_y,depth)==3) return 3; printf("XWD%s\n",VERXWD); printf("XWD v%i : %ix%ix%i\n",tempi,image_x,image_y,depth); if (image_x != (image_x/2)*2) dodajx=1; if ((depth !=16) && (depth !=24)) { printf("Only 16bpp and 24bpp XWD supported yet\n"); return 2; } fseek(plik,100,SEEK_SET); printf("Comment : "); while (tempi!=0) { tempi=fgetc(plik); printf("%c",(char)tempi); } printf("\n"); if (depth==16){ fseek(plik,header+offs+(offss*12)+1,SEEK_SET); for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tempi=fgetc(plik); header=fgetc(plik); tabr[x+y*image_x]=(tempi & 0xf8); tempi=(tempi & 0x07)<<5; depth=header; depth=(depth & 0xe0)>>3; tempi+=depth; tabg[x+y*image_x]=tempi; depth=(header & 0x1f)<<3; tabb[x+y*image_x]=depth; } if (dodajx==1) { tempi=fgetc(plik); tempi=fgetc(plik); } } } if (depth==24){ fseek(plik,header+offs+(offss*12),SEEK_SET); for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tempi=fgetc(plik); if (bpp==32) tabb[x+y*image_x]=tempi; else tabr[x+y*image_x]=tempi; tempi=fgetc(plik); tabg[x+y*image_x]=tempi; tempi=fgetc(plik); if (bpp==32) tabr[x+y*image_x]=tempi; else tabb[x+y*image_x]=tempi; if (bpp==32) tempi=fgetc(plik); } } } return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -