📄 mga_rgb.c
字号:
/* (c) HelDoRe SGI RGB unit ... v0.0.4 24 bpp 24 bpp RLE 8 bpp GRAY 8 bpp GRAY RLE*/ #define VERRGB " unit v0.0.4"#include <stdio.h>#include "../mga_view.h"void help_rgb(){#ifdef USE_MAG_RGBprintf("RGB%s\n + uses ImageMagick\n",VERRGB);#elseprintf("RGB%s\n + 8 bpp\n + 8 bpp rle\n + 24 bpp\n + 24 bpp rle\n",VERRGB);#endif}int detect_rgb(){ int rle,type;#ifndef USE_MAG_RGB int dek;#endif tempi=fgetc16(plik); if (tempi != 474) return 1; rle=fgetc(plik); depth=fgetc(plik); tempi=fgetc16(plik); image_x=fgetc16(plik); image_y=fgetc16(plik); type=fgetc16(plik); if (check_image(image_x,image_y,depth)==3) return 3; printf("SGI RGB%s",VERRGB);#ifdef USE_MAG_RGB printf(" (IM)");#endif printf("\nSGI RGB detected: %ix%ix%i",image_x,image_y,depth*type*8); if (rle==1) printf(" RLE\n"); else printf("\n"); fseek(plik,12,SEEK_CUR); printf("Comment : "); while (tempi!=0) { tempi=fgetc(plik); printf("%c",tempi); } printf("\n");#ifdef USE_MAG_RGB detect_mag(0);#else fseek(plik,512,SEEK_SET); if (rle==0) { for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tabr[x+(image_y-1-y)*image_x]=fgetc(plik); if (type==1) { tabg[x+(image_y-1-y)*image_x]=tabr[x+(image_y-1-y)*image_x]; tabb[x+(image_y-1-y)*image_x]=tabr[x+(image_y-1-y)*image_x]; } } } if (type==3) { for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tabg[x+(image_y-1-y)*image_x]=fgetc(plik); } } for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tabb[x+(image_y-1-y)*image_x]=fgetc(plik); } } } } if (rle==1) { tempi=fgetc32(plik); fseek(plik,tempi,SEEK_SET); for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { if ((tempi=fgetc(plik))==-1) return 0; if (tempi==0) tempi=fgetc(plik); if (tempi>128) { for (depth=0;depth<(tempi-128);depth++) { tabr[(x++)+(image_y-1-y)*image_x]=fgetc(plik); if (type==1) { tabg[(x-1)+(image_y-1-y)*image_x]=tabr[(x-1)+(image_y-1-y)*image_x]; tabb[(x-1)+(image_y-1-y)*image_x]=tabr[(x-1)+(image_y-1-y)*image_x]; } } } else { dek=fgetc(plik); for (depth=0;depth<tempi;depth++) { tabr[(x++)+(image_y-1-y)*image_x]=dek; if (type==1) { tabg[(x-1)+(image_y-1-y)*image_x]=tabr[(x-1)+(image_y-1-y)*image_x]; tabb[(x-1)+(image_y-1-y)*image_x]=tabr[(x-1)+(image_y-1-y)*image_x]; } } } x--; } if (type==3) { for (x=0;x<image_x;x++) { tempi=fgetc(plik); if (tempi==0) tempi=fgetc(plik); if (tempi>128) { for (depth=0;depth<(tempi-128);depth++) tabg[(x++)+(image_y-1-y)*image_x]=fgetc(plik); } else { dek=fgetc(plik); for (depth=0;depth<tempi;depth++) tabg[(x++)+(image_y-1-y)*image_x]=dek; } x--; } for (x=0;x<image_x;x++) { tempi=fgetc(plik); if (tempi==0) tempi=fgetc(plik); if (tempi>128) { for (depth=0;depth<(tempi-128);depth++) tabb[(x++)+(image_y-1-y)*image_x]=fgetc(plik); } else { dek=fgetc(plik); for (depth=0;depth<tempi;depth++) tabb[(x++)+(image_y-1-y)*image_x]=dek; } x--; } } } }#endif return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -