Exemple #1
0
static int draw(effect* e, RGB32 *src, RGB32 *dest)
{
    int x, y, xx, yy, v;
    int count;
    RGB32 *p, *q;
    unsigned char *diff, *r;
    mosaic_t * priv = e->priv;

    if(!priv->bgIsSet) {
        setBackground(e, src);
    }

    diff = image_bgsubtract_y(e, src);

    for(y=0; y<e->video_height-7; y+=8) {
        for(x=0; x<e->video_width-7; x+=8) {
            count = 0;
            p = &src[y*e->video_width+x];
            q = &dest[y*e->video_width+x];
            r = &diff[y*e->video_width+x];
            for(yy=0; yy<8; yy++) {
                for(xx=0; xx<8; xx++) {
                    count += r[yy*e->video_width+xx];
                }
            }
            if(count > CENSOR_LEVEL*255) {
                v = p[3*e->video_width+3];
                for(yy=0; yy<8; yy++) {
                    for(xx=0; xx<8; xx++) {
                        q[yy*e->video_width+xx] = v;
                    }
                }
            } else {
                for(yy=0; yy<8; yy++) {
                    for(xx=0; xx<8; xx++) {
                        q[yy*e->video_width+xx] = p[yy*e->video_width+xx];
                    }
                }
            }
        }
    }

    return 0;
}
Exemple #2
0
static int draw(RGB32 *src, RGB32 *dest)
{
	int x, y;
	unsigned char *diff;

	if(!bgIsSet) {
		setBackground(src);
	}

	diff = image_diff_filter(image_bgsubtract_y(src));
	for(y=video_height; y>0; y--) {
		for(x=video_width; x>0; x--) {
			if(*diff++) {
				*dest = 0 - ((inline_fastrand()>>31) & y);
			} else {
				*dest = *src;
			}
			src++;
			dest++;
		}