diff --git a/src/modules/Image/blit.c b/src/modules/Image/blit.c index 43ca8fad8bb709cec7b41e52e3bea3ef3f46026a..f7cd4133490cfca057c4586d1464a6f7bd8d0507 100644 --- a/src/modules/Image/blit.c +++ b/src/modules/Image/blit.c @@ -1,10 +1,10 @@ -/* $Id: blit.c,v 1.37 1999/06/18 19:19:14 mirar Exp $ */ +/* $Id: blit.c,v 1.38 2000/04/13 17:52:33 grubba Exp $ */ #include "global.h" /* **! module Image **! note -**! $Id: blit.c,v 1.37 1999/06/18 19:19:14 mirar Exp $ +**! $Id: blit.c,v 1.38 2000/04/13 17:52:33 grubba Exp $ **! class Image */ @@ -155,23 +155,26 @@ void img_box_nocheck(INT32 x1,INT32 y1,INT32 x2,INT32 y2) end=this->img+x2+y2*this->xsize+1; THREADS_ALLOW(); - if(!this->alpha) - { - if(!mod) - img_clear(foo,rgb,end-foo); - else { - int length = x2-x1+1, xs=this->xsize, y=y2-y1+1; - rgb_group *from = foo; - if(!length) return; - for(x=0; x<length; x++) *(foo+x) = rgb; - while(--y) MEMCPY((foo+=xs), from, length*sizeof(rgb_group)); + do { + if(!this->alpha) + { + if(!mod) + img_clear(foo,rgb,end-foo); + else { + int length = x2-x1+1, xs=this->xsize, y=y2-y1+1; + rgb_group *from = foo; + if(!length) + break; /* Break to the while(0). */ + for(x=0; x<length; x++) *(foo+x) = rgb; + while(--y) MEMCPY((foo+=xs), from, length*sizeof(rgb_group)); + } + } + else + { + for (; foo<=end; foo+=mod) for (x=x1; x<=x2; x++,foo++) + set_rgb_group_alpha(*foo,rgb,this->alpha); } - } - else - { - for (; foo<=end; foo+=mod) for (x=x1; x<=x2; x++,foo++) - set_rgb_group_alpha(*foo,rgb,this->alpha); - } + } while(0); THREADS_DISALLOW(); }