📄 fill.c
字号:
/* fill.c: * * fill an image area with a particular pixel value * * jim frost 10.02.89 * * Copyright 1989 Jim Frost. See included file "copyright.h" for complete * copyright information. */#ifdef SCCS static char *sccs_id = "@(#)fill.c 1.1 10/13/90";#endif#include "copyright.h"#include "image.h"void fill(image, fx, fy, fw, fh, pixval) Image *image; unsigned int fx, fy, fw, fh; Pixel pixval;{ unsigned int x, y; unsigned int linelen, start; byte *lineptr, *pixptr; byte startmask, mask; goodImage(image); switch(image->type) { case IBITMAP: /* this could be made a lot faster */ linelen= (image->width / 8) + (image->width % 8 ? 1 : 0); lineptr= image->data + (linelen * fy); start= (fx / 8) + (fx % 8 ? 1 : 0); startmask= 0x80 >> (fx % 8); for (y= fy; y < fy + fh; y++) { mask= startmask; pixptr= lineptr + start; for (x= fx; x < fw; x++) { if (pixval) *pixptr |= mask; else *pixptr &= ~mask; if (mask >>= 1) { mask= 0x80; pixptr++; } } lineptr += linelen; } break; case IRGB: linelen= image->width * image->pixlen; start= image->pixlen * fx; lineptr= image->data + (linelen * fy); for (y= fy; y < fy + fh; y++) { pixptr= lineptr + start; for (x= fx; x < fw; x++) { valToMem(pixval, pixptr, image->pixlen); pixptr += image->pixlen; } lineptr += linelen; } break; default: printf("fill: Unsupported image type (ignored)\n"); return; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -