X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Foverlayframe.C;fp=cinelerra-5.0%2Fcinelerra%2Foverlayframe.C;h=c660dbbb745539b86ab930dad1a9bedc76cf9e07;hb=e919ce8a71cdc99bb7344cc192e13a2c2db9e1c0;hp=187bcadd28c898e1bb0c65bccb7e68e92aad401c;hpb=6c0c8bd0e577001d1cc18c6c27d58e62f58a6bff;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/overlayframe.C b/cinelerra-5.0/cinelerra/overlayframe.C index 187bcadd..c660dbbb 100644 --- a/cinelerra-5.0/cinelerra/overlayframe.C +++ b/cinelerra-5.0/cinelerra/overlayframe.C @@ -394,12 +394,12 @@ int OverlayFrame::overlay(VFrame *output, VFrame *input, // MAX [max(Sa, Da), MAX(Sc, Dc)] #define ALPHA_MAX(mx, Sa, Da) (Sa > Da ? Sa : Da) #define COLOR_MAX(mx, Sc, Sa, Dc, Da) (Sc > Dc ? Sc : Dc) -#define CHROMA_MAX(mx, Sc, Sa, Dc, Da) (Sc > Dc ? Sc : Dc) +#define CHROMA_MAX(mx, Sc, Sa, Dc, Da) (mabs(Sc) > mabs(Dc) ? Sc : Dc) // MIN [min(Sa, Da), MIN(Sc, Dc)] #define ALPHA_MIN(mx, Sa, Da) (Sa < Da ? Sa : Da) #define COLOR_MIN(mx, Sc, Sa, Dc, Da) (Sc < Dc ? Sc : Dc) -#define CHROMA_MIN(mx, Sc, Sa, Dc, Da) (Sc < Dc ? Sc : Dc) +#define CHROMA_MIN(mx, Sc, Sa, Dc, Da) (mabs(Sc) < mabs(Dc) ? Sc : Dc) // AVERAGE [(Sa + Da) * 0.5, (Sc + Dc) * 0.5] #define ALPHA_AVERAGE(mx, Sa, Da) ((Sa + Da) / 2) @@ -409,12 +409,12 @@ int OverlayFrame::overlay(VFrame *output, VFrame *input, // DARKEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] #define ALPHA_DARKEN(mx, Sa, Da) (Sa + Da - (Sa * Da) / mx) #define COLOR_DARKEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (Sc < Dc ? Sc : Dc)) -#define CHROMA_DARKEN COLOR_DARKEN +#define CHROMA_DARKEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (mabs(Sc) < mabs(Dc) ? Sc : Dc)) // LIGHTEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] #define ALPHA_LIGHTEN(mx, Sa, Da) (Sa + Da - Sa * Da / mx) #define COLOR_LIGHTEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (Sc > Dc ? Sc : Dc)) -#define CHROMA_LIGHTEN COLOR_LIGHTEN +#define CHROMA_LIGHTEN(mx, Sc, Sa, Dc, Da) ((Sc * (mx - Da) + Dc * (mx - Sa)) / mx + (mabs(Sc) > mabs(Dc) ? Sc : Dc)) // DST [Da, Dc] #define ALPHA_DST(mx, Sa, Da) Da