translation fixes, pref wdw min width, xfer mode ops
[goodguy/history.git] / cinelerra-5.1 / cinelerra / overlayframe.inc
index 05052de1760718d3f3b325e16abd654b627c6bb0..f29bc5724be062b7c8c51033a66600895e3723b1 100644 (file)
 
 // 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