do my homework IV me plz... need to make super fast!!! you'll get what i'm trying to do [fuzzing] but i need another approach to it... which you girls must know!!!!
Code:
/***************************** fuzz *******************************************/
void OUTPUT :: fuzz (unsigned int xl, unsigned int yl, unsigned int xh, unsigned it yh)
{
unsigned char * old_ptr = h.vb.outdbl.gfx_ptr_;
// copy the current background to the out double buffer
h.vb.bg_to_out_dbl (xl, yl, xh, yh);
// for each pixel in the viewframe
for (unsigned int u0 = yl; u0 < yh; u0++)
for (unsigned int u1 = xl; u1 < xh; u1++)
{
unsigned int r = 0, g = 0, b = 0;
unsigned char radius_print [9];
unsigned int avg_div;
// grab pixels from out_dbl_
h.vb.outdbl.gfx_ptr_ = h.vb.outdbl.out_dbl_;
// get a new grid for each pixel
avg_div = 0;
while (avg_div < 5) // get at least a 5-pixel average
{
avg_div = 0;
for (unsigned int u0 = 0; u0 < 9; u0++)
{
radius_print [u0] = rand () % 2;
if (radius_print [u0]) avg_div++;
}
}
// ensure at least the first pixel is on so that it get's counted for
if (radius_print [4] == 0)
{
radius_print [4] = 1;
avg_div++;
}
// add 'em up
for (unsigned int u2 = 0; u2 < 3; u2++)
for (unsigned int u3 = 0; u3 < 3; u3++)
if (radius_print [u2 * 3 + u3])
{
unsigned int x,y;
unsigned int pix_add;
x = (u1 + h.vb.vars.x_size - 1 + u3) % h.vb.vars.x_size;
y = (u0 + h.vb.vars.y_size - 1 + u2) % h.vb.vars.y_size;
pix_add = h.vb.g_pixel (x, y);
// over line flow, reword...
r += (pix_add >> (h.vb.vars.g_bpp + h.vb.vars.b_bpp)) & h.vb.vars.r_max;
g += (pix_add >> h.vb.vars.b_bpp ) & h.vb.vars.g_max;
b += (pix_add >> 0 ) & h.vb.vars.b_max;
}
r /= avg_div;
g /= avg_div;
b /= avg_div;
// place pixels to gfx_bg__
h.vb.outdbl.gfx_ptr_ = h.vb.outdbl.gfx_bg__;
P_PIXEL (u1, u0, r,g,b);
}
h.vb.update (xl, yl, xh, yh);
}
much thanks... i've profiled it many a time... and now that i've got my dirty rectangles updating routine... [doesn't that sound nasty?] i still need it harder better faster stronger!!!
=-{da, with wings}-=
[edited]