X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fbluebanana%2Fbluebananacolor.c;h=e4321b3ab7b8e697ffbaa132910ffde87c57bd55;hb=c9bbecdcb49b2dc8fdefd017104fd4d052edb8a3;hp=357518aee8216155a953abded8cff5eece219a47;hpb=b77dbd97d927405c86a2a8ca0dd927bca3c70175;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/bluebanana/bluebananacolor.c b/cinelerra-5.1/plugins/bluebanana/bluebananacolor.c index 357518ae..e4321b3a 100644 --- a/cinelerra-5.1/plugins/bluebanana/bluebananacolor.c +++ b/cinelerra-5.1/plugins/bluebanana/bluebananacolor.c @@ -226,11 +226,16 @@ static inline void RGB_to_rgb8(float *R, float *G, float *B, float *S, float F, } static inline void Aal_to_alp8(float *S, float F, unsigned char *row, int w, int bpp){ - F = 1.f - F; - while(w--){ - float a = (1 - *S*F)*255.f +.5f; - row[3] = CLAMP(a,0,255); - row+=bpp; ++S; + if(S){ + while(w--){ + float a = *S*F*255.f +.5f; + row[3] = CLAMP(a,0,255); + row+=bpp; ++S; + } + }else{ + float a = F*255.f +.5f; + unsigned char s = CLAMP(a,0,255); + while(w--){ row[3] = s; row+=bpp; } } } @@ -275,11 +280,11 @@ static inline void RGB_to_rgbF(float *R, float *G, float *B, float *S, float F, } static inline void Aal_to_alpF(float *S, float F, float *row, int w, int bpp){ - F = 1.f - F; - while(w--){ - float a = 1.f - *S*F; - row[3] = a; - row+=bpp; + if(S){ + while(w--){ row[3] = *S++ * F; row+=bpp; } + }else{ + float a = F; + while(w--){ row[3] = a; row+=bpp; } } }