📄 fmask.c
字号:
/*--------------------------- Commande MegaWave -----------------------------*//* mwcommand name = {fmask}; version = {"2.0"}; author = {"Lionel Moisan"}; function = {"Choose between two Fimages according to a mask value"}; usage = { 'v':[v=0]->v "mask transparency value (default 0)", 'i'->i_flag "invert: the test mask==v selects A (instead of B)", 'c':c->c "take float constant c as value of B", out<-out "output Fimage (at each point, equals A if mask!=v, B else)", mask->mask "mask Cimage", A->A "first Fimage", { B->B "second Fimage, not needed if -c option is selected" } };*/#include <stdio.h>#include "mw.h"void fmask(mask,A,B,out,i_flag,v,c)Fimage mask,A,B,out;char *i_flag;int *v;float *c;{ int i; float a,b; unsigned char m; if ((c?1:0)+(B?1:0) != 1) mwerror(USAGE,1,"Please specify image B or use -c option."); if (A->nrow!=mask->nrow || A->ncol!=mask->ncol) mwerror(USAGE,1,"Image A and mask must have the same size."); if (B) if (B->nrow!=mask->nrow || B->ncol!=mask->ncol) mwerror(USAGE,1,"Image B and mask must have the same size."); /* prepare output */ out = mw_change_fimage(out,A->nrow,A->ncol); if (!out) mwerror(FATAL, 1, "Not enough memory."); /* main loop */ for (i=A->nrow*A->ncol;i--;) { m = mask->gray[i]; a = A->gray[i]; b = (B?B->gray[i]:*c); if (i_flag) out->gray[i] = ((m==*v)?a:b); else out->gray[i] = ((m!=*v)?a:b); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -