<div dir="ltr"><div class="gmail_default" style="font-size:small">And now here is the forgotten attached!<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Oct 1, 2022 at 7:27 PM Phyllis Smith <<a href="mailto:phylsmith2017@gmail.com">phylsmith2017@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto">more documentation, it seems Adobe products use shared code for this ....</div><div dir="auto"><br></div><div dir="auto"><a href="https://www.rippletraining.com/blog/final-cut-pro-x/understanding-blend-modes-final-cut-pro/" rel="noreferrer noreferrer noreferrer" target="_blank">https://www.rippletraining.com/blog/final-cut-pro-x/understanding-blend-modes-final-cut-pro/</a></div></div></blockquote><div><span class="gmail_default" style="font-size:small">Using the above URL for comparison, I used it on current CinGG and HV 4.6.1 for subtract.  HV matches and GG does not.  So tomorrow I will look at the code that Andrew quoted below to see if </span><span class="gmail_default" style="font-size:small">adding the specific guard corrects the issue.  In the attached, top left is HV 4.6.1 and bottom left is GG current with right side the URL.</span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">--quote---</div><div dir="auto"><br></div><div dir="auto"><div dir="auto"><h3 style="line-height:1.04">Subtract</h3>
</div><div dir="auto"><p>Subtract
 does what it advertises; the color values of one layer are subtracted 
from the other layer. This tends to have a net darkening effect. Pixel 
values can’t fall below zero, so negative numbers are rendered to black.</p><p><br></p><p>---end quote---</p><p><br></p><p>in older cingg code (from 4.6.mod era - earliest public code on Google code) I see such construct :</p><p><br></p><p>/data/data/com.termux/files/home/cingg-g~nelerra-4.6.mod/cinelerra/overlayframe.C       4762/69317  UTF-8        6%</p><p>                        break; \</p><p>                case TRANSFER_SUBTRACT: \</p><p>                        r = (temp_type)output[0] - (temp_type)input1; \</p><p>                        g = ((temp_type)output[1] - (temp_type)chroma_offset) - \</p><p>                                ((temp_type)input2 - (temp_type)chroma_offset) + \</p><p>                                (temp_type)chroma_offset; \</p><p>                        b = ((temp_type)output[2] - (temp_type)chroma_offset) - \</p><p>                                ((temp_type)input3 - (temp_type)chroma_offset) + \</p><p>                                (temp_type)chroma_offset; \</p><p>                        if(r < 0) r = 0; \</p><p>                        if(g < 0) g = 0; \</p><p>                        if(b < 0) b = 0; \</p><p>                        r = (r * opacity + output[0] * transparency) / max; \</p><p>                        g = (g * opacity + output[1] * transparency) / max; \</p><p>                        b = (b * opacity + output[2] * transparency) / max; \                                                              break; \</p><p><br></p><p>---</p><p><br></p><p>so it basically had specific guard against going negative. Not sure if our implementation does the same just in different place?</p><p><br></p><p>I see no specific handling of it in macros ...</p><p><br></p><p><br></p><p>overlayframe.h     [----] 38 L:[ 53+ 0  53/615] *(1572/17155b) 001[*][X]</p><p>// ADDITION<--->[(Sa + Da), (Sc + Dc)]</p><p>#define ALPHA_ADDITION(mx, Sa, Da) (Sa + Da)</p><p>#define COLOR_ADDITION(mx, Sc, Sa, Dc, Da) (Sc + Dc)</p><p>#define CHROMA_ADDITION COLOR_ADDITION</p><p><br></p><p>// SUBTRACT<--->[(Sa - Da), (Sc - Dc)]</p><p>#define ALPHA_SUBTRACT(mx, Sa, Da) (Sa - Da)</p><p>#define COLOR_SUBTRACT(mx, Sc, Sa, Dc, Da) (Sc - Dc)</p><p>#define CHROMA_SUBTRACT COLOR_SUBTRACT</p><p><br></p><p>but apparently you can add some comparing here ...just .. it went from two-stage process to single stage for untrained eye and I am not sure where to put those ifs?</p><p><br></p><p><br></p><p><br></p><p><br></p></div></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вс, 25 сент. 2022 г., 11:06 Andrew Randrianasulu <<a href="mailto:randrianasulu@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">randrianasulu@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">I found Graphics-softlight mode behaving visually close...but not sure how close to CinHV/CV subtract mode ...<div dir="auto"><br></div><div dir="auto"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вс, 25 сент. 2022 г., 10:24 Andrew Randrianasulu <<a href="mailto:randrianasulu@gmail.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">randrianasulu@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">I was trying to repeat tuto at<div dir="auto"><a href="https://linuxvideoediting.blogspot.com/2022/01/transparent-text-effect-in-Cinelerra-part1.html?m=1" rel="noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">https://linuxvideoediting.blogspot.com/2022/01/transparent-text-effect-in-Cinelerra-part1.html?m=1</a><br></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">so I loaded video, created empty new vid track, applied 'titles', 'blur' and 'invert video' to _empty track_, then set track's mode to subtract .... result was color inversion of original video on second vid track (</div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div></div>
</blockquote></div></div>
</blockquote></div>