plugin gui ref by id fixes, plugin gui opengl update fixes, prores opts files
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / histogram / histogram.C
index da67c208694425820ffdc42af07f0949562086d7..f16e3fd4f46a771db8f1f4b24b27da0339fad9c4 100644 (file)
@@ -280,7 +280,8 @@ float HistogramMain::calculate_level(float input,
 // Scale to input range
        if(!EQUIV(config.high_input[mode], config.low_input[mode]))
        {
-               output = (input - config.low_input[mode]) /
+               output = input < config.low_input[mode] ? 0 :
+                   (input - config.low_input[mode]) /
                        (config.high_input[mode] - config.low_input[mode]);
        }
        else
@@ -445,9 +446,6 @@ int HistogramMain::process_buffer(VFrame *frame,
                frame_rate,
                use_opengl);
 
-// Apply histogram in hardware
-       if(use_opengl) return run_opengl();
-
        this->input = frame;
        this->output = frame;
        if( !engine )
@@ -457,8 +455,8 @@ int HistogramMain::process_buffer(VFrame *frame,
                if( cpus > smps ) cpus = smps;
                engine = new HistogramEngine(this, cpus, cpus);
        }
-// Always plot to set the curves if automatic
-       if(config.plot || config.automatic) send_render_gui(frame);
+// if to plot histogram
+       if(config.plot) send_render_gui(frame);
 
 // Generate tables here.  The same table is used by many packages to render
 // each horizontal stripe.  Need to cover the entire output range in  each
@@ -493,12 +491,11 @@ int HistogramMain::process_buffer(VFrame *frame,
 // config.gamma[HISTOGRAM_BLUE],
 // config.high_input[HISTOGRAM_BLUE]);
 
-
+// Apply histogram in hardware
+       if(use_opengl) return run_opengl();
 
 // Apply histogram
        engine->process_packages(HistogramEngine::APPLY, input, 0);
-
-
        return 0;
 }