graphic art overlay modes, pref window resize, submenu fixes
[goodguy/history.git] / cinelerra-5.1 / cinelerra / overlayframe.inc
index f29bc5724be062b7c8c51033a66600895e3723b1..18a926c9f2bf97aadda24e7b44309f0a51c4af59 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_TYPES 30
 
 #define TRANSFER_NORMAL                0
 #define TRANSFER_ADDITION      1
@@ -111,21 +34,29 @@ https://docs.gimp.org/2.6/en/gimp-concepts-layer-modes.html
 #define TRANSFER_REPLACE       5
 #define TRANSFER_MAX           6
 #define TRANSFER_MIN           7
-#define TRANSFER_AVERAGE       8
-#define TRANSFER_DARKEN                9
-#define TRANSFER_LIGHTEN       10
-#define TRANSFER_DST           11
-#define TRANSFER_DST_ATOP      12
-#define TRANSFER_DST_IN                13
-#define TRANSFER_DST_OUT       14
-#define TRANSFER_DST_OVER      15
-#define TRANSFER_SRC           16
-#define TRANSFER_SRC_ATOP      17
-#define TRANSFER_SRC_IN                18
-#define TRANSFER_SRC_OUT       19
-#define TRANSFER_SRC_OVER      20
+#define TRANSFER_DARKEN                8
+#define TRANSFER_LIGHTEN       9
+#define TRANSFER_DST           10
+#define TRANSFER_DST_ATOP      11
+#define TRANSFER_DST_IN                12
+#define TRANSFER_DST_OUT       13
+#define TRANSFER_DST_OVER      14
+#define TRANSFER_SRC           15
+#define TRANSFER_SRC_ATOP      16
+#define TRANSFER_SRC_IN                17
+#define TRANSFER_SRC_OUT       18
+#define TRANSFER_SRC_OVER      19
+#define TRANSFER_AND           20
 #define TRANSFER_OR            21
 #define TRANSFER_XOR           22
+#define TRANSFER_OVERLAY       23
+#define TRANSFER_SCREEN                24
+#define TRANSFER_BURN          25
+#define TRANSFER_DODGE         26
+#define TRANSFER_HARDLIGHT     27
+#define TRANSFER_SOFTLIGHT     28
+#define TRANSFER_DIFFERENCE    29
+
 
 // Interpolation types