X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Foverlayframe.inc;h=f29bc5724be062b7c8c51033a66600895e3723b1;hb=361dbd9de4e6e4143ea0cac5daa89b30685a4c70;hp=05052de1760718d3f3b325e16abd654b627c6bb0;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/overlayframe.inc b/cinelerra-5.1/cinelerra/overlayframe.inc index 05052de1..f29bc572 100644 --- a/cinelerra-5.1/cinelerra/overlayframe.inc +++ b/cinelerra-5.1/cinelerra/overlayframe.inc @@ -24,6 +24,83 @@ // Modes +/* +source +x = porter duff operator +g = good guy +a = android +* = hv 4.6.1 + +cin 5.1 overlayframe TRANSFER_MODEs +x DST [Da, Dc] +x DST_ATOP [Sa, Sc * (1 - Da) + Dc * Sa] +x DST_IN [Da * Sa, Dc * Sa] +x DST_OUT [Da * (1 - Sa), Dc * (1 - Sa)] +x DST_OVER [Sa * (1 - Da) + Da, Sc * (1 - Da) + Dc] +x SRC [Sa, Sc] +x SRC_ATOP [Da, Sc * Da + Dc * (1 - Sa)] +x SRC_IN [Sa * Da, Sc * Da] +x SRC_OUT [Sa * (1 - Da), Sc * (1 - Da)] +x SRC_OVER [Sa + Da * (1 - Sa), Sc + (1 - Sa) * Dc] +g OR [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] +a XOR [Sa * (1 - Da) + Da * (1 - Sa), Sc * (1 - Da) + Dc * (1 ­ Sa)] +* NORMAL [Sa + Da * (1 - Sa), Sc * Sa + Dc * (1 ­ Sa)]) +* ADDITION [(Sa + Da), (Sc + Dc)] +* SUBTRACT [(Sa - Da), (Sc ­ Dc)] +* MULTIPLY [(Sa * Da), Sc * Dc] +* DIVIDE [(Sa / Da), (Sc / Dc)] +* REPLACE [Sa, Sc] (fade = 1) +* MAX [max(Sa, Da), MAX(Sc, Dc)] +* MIN [min(Sa, Da), MIN(Sc, Dc)] +g AVERAGE [(Sa + Da) * 0.5, (Sc + Dc) * 0.5] +a DARKEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] +a LIGHTEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] + +https://developer.android.com/reference/android/graphics/PorterDuff.Mode.html + ADD Saturate(S + D) + CLEAR [0, 0] + DARKEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] + DST [Da, Dc] + DST_ATOP [Sa, Sa * Dc + Sc * (1 - Da)] + DST_IN [Sa * Da, Sa * Dc] + DST_OUT [Da * (1 - Sa), Dc * (1 - Sa)] + DST_OVER [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc] + LIGHTEN [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] + MULTIPLY [Sa * Da, Sc * Dc] + OVERLAY (defined, but unspecified in android) + SCREEN [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] + SRC [Sa, Sc] + SRC_ATOP [Da, Sc * Da + (1 - Sa) * Dc] + SRC_IN [Sa * Da, Sc * Da] + SRC_OUT [Sa * (1 - Da), Sc * (1 - Da)] + SRC_OVER [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] + XOR [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] + +https://docs.gimp.org/2.6/en/gimp-concepts-layer-modes.html + Normal [M] + Dissolve [I + dots] + Multiply [M * I] + Divide [I / M] + Screen [1 - (1-M)*(1-I)] + Overlay [I * (I + 2*M*(1-I))] + Dodge [I / (1-M)] + Burn [1 - (1-I) / M] + Hard light [M>0.5 ? (1 - (1-2*(M-0.5))*(1 - I) : 2*M*I] + Soft light [((1-I)*M + Screen()) * I] + Grain extract [I - M + 0.5] + Grain merge [I + M - 0.5] + Difference [abs(I-M)] + Addition [min((I+M),1.0)] + Subtract [max((I-M),0.0)] + Darken only [min(M,I)] + Lighten only [max(M,I)] + Hue [hue(M) + sat(I)+val(I)] + Saturation [sat(M) + hue(I)+val(I)] + Color [hue(M)+sat(M) + val(I)] + Value [val(M) + sat(I)+hue(I)] + +*/ + #define TRANSFER_TYPES 23 #define TRANSFER_NORMAL 0