| 146 |
|
return(gcol); |
| 147 |
|
} |
| 148 |
|
|
| 149 |
+ |
static void |
| 150 |
+ |
recolor( /* recolor the given node */ |
| 151 |
+ |
PNODE *p |
| 152 |
+ |
) |
| 153 |
+ |
{ |
| 154 |
+ |
while (p->kid != NULL) { /* need to propogate down */ |
| 155 |
+ |
int mx = (p->xmin + p->xmax) >> 1; |
| 156 |
+ |
int my = (p->ymin + p->ymax) >> 1; |
| 157 |
+ |
int ki; |
| 158 |
+ |
if (p->x >= mx) |
| 159 |
+ |
ki = (p->y >= my) ? UR : DR; |
| 160 |
+ |
else |
| 161 |
+ |
ki = (p->y >= my) ? UL : DL; |
| 162 |
+ |
pcopy(p, p->kid+ki); |
| 163 |
+ |
p = p->kid + ki; |
| 164 |
+ |
} |
| 165 |
|
|
| 166 |
+ |
(*dev->paintr)(greyscale?greyof(p->v):p->v, |
| 167 |
+ |
p->xmin, p->ymin, p->xmax, p->ymax); |
| 168 |
+ |
} |
| 169 |
+ |
|
| 170 |
|
int |
| 171 |
|
paint( /* compute and paint a rectangle */ |
| 172 |
|
PNODE *p |
| 206 |
|
copycolor(p->v, thisray.rcol); |
| 207 |
|
scalecolor(p->v, exposure); |
| 208 |
|
|
| 209 |
< |
(*dev->paintr)(greyscale?greyof(p->v):p->v, |
| 190 |
< |
p->xmin, p->ymin, p->xmax, p->ymax); |
| 209 |
> |
recolor(p); /* paint it */ |
| 210 |
|
|
| 211 |
|
if (ambounce <= 0) /* shall we check for input? */ |
| 212 |
|
flushintvl = ray_pnprocs*WFLUSH; |
| 235 |
|
PNODE *p = (PNODE *)raydone.rno; |
| 236 |
|
copycolor(p->v, raydone.rcol); |
| 237 |
|
scalecolor(p->v, exposure); |
| 238 |
< |
(*dev->paintr)(greyscale?greyof(p->v):p->v, |
| 220 |
< |
p->xmin, p->ymin, p->xmax, p->ymax); |
| 238 |
> |
recolor(p); |
| 239 |
|
nwaited++; |
| 240 |
|
} |
| 241 |
|
if (rval < 0) |
| 373 |
|
} |
| 374 |
|
} |
| 375 |
|
return(p); |
| 376 |
+ |
} |
| 377 |
+ |
|
| 378 |
+ |
|
| 379 |
+ |
void |
| 380 |
+ |
compavg( /* recompute averages */ |
| 381 |
+ |
PNODE *p |
| 382 |
+ |
) |
| 383 |
+ |
{ |
| 384 |
+ |
if (p->kid == NULL) |
| 385 |
+ |
return; |
| 386 |
+ |
compavg(p->kid+DL); |
| 387 |
+ |
compavg(p->kid+DR); |
| 388 |
+ |
compavg(p->kid+UL); |
| 389 |
+ |
compavg(p->kid+UR); |
| 390 |
+ |
setcolor(p->v, .0, .0, .0); |
| 391 |
+ |
addcolor(p->v, p->kid[DL].v); |
| 392 |
+ |
addcolor(p->v, p->kid[DR].v); |
| 393 |
+ |
addcolor(p->v, p->kid[UL].v); |
| 394 |
+ |
addcolor(p->v, p->kid[UR].v); |
| 395 |
+ |
scalecolor(p->v, 0.25); |
| 396 |
|
} |
| 397 |
|
|
| 398 |
|
|