X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmaskengine.C;h=8f6541ae6338bafd4191a32cffc7ad71514fe325;hp=e369d77c6bc99cadd33b2e4ad7ba2fc254bc763f;hb=b350aa5a1ccbadcb5f794183c443c0738cd1e9ab;hpb=b8cd5c4f5f296f626f5ec691d2440612bcf59422 diff --git a/cinelerra-5.1/cinelerra/maskengine.C b/cinelerra-5.1/cinelerra/maskengine.C index e369d77c..8f6541ae 100644 --- a/cinelerra-5.1/cinelerra/maskengine.C +++ b/cinelerra-5.1/cinelerra/maskengine.C @@ -220,10 +220,12 @@ void MaskUnit::process_package(LoadPackage *package) int fg = 0xffff * (rv >= 0 ? vv : 0); int bg = 0xffff * (rv >= 0 ? 0 : vv); int rr = r*r; double dr = 1./rr; + // gausian, rr is x**2, limit 1/255 + double sig2 = -log(255.0); temp_t psf[rr+1]; spot = psf; for( int i=0; i<=rr; ++i ) { - double d = i*dr; - psf[i] = (1-d)*fg + d*bg; + double d = exp(i*dr * sig2); + psf[i] = d*fg + (1-d)*bg; } int n = edge.size(); for( int i=0; i