feather expandable limits, feather gausian taper, clear canvas tweaks
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / maskengine.C
index e369d77c6bc99cadd33b2e4ad7ba2fc254bc763f..8f6541ae6338bafd4191a32cffc7ad71514fe325 100644 (file)
@@ -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<n; ++i ) {