[SCM] calf/master: + Framework: factor gridline drawing out of Filter, Filterclavier, Phaser and Flanger, implement a basic version of get_changed_offsets

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:39:07 UTC 2013


The following commit has been merged in the master branch:
commit 868b87b781f3b470b4012a19debc8cb969767ecf
Author: Krzysztof Foltman <wdev at foltman.com>
Date:   Sat Jan 24 20:38:21 2009 +0000

    + Framework: factor gridline drawing out of Filter, Filterclavier, Phaser and Flanger, implement a basic version of get_changed_offsets

diff --git a/src/calf/modules.h b/src/calf/modules.h
index c08c1a7..8bbcd20 100644
--- a/src/calf/modules.h
+++ b/src/calf/modules.h
@@ -61,7 +61,13 @@ public:
 };
 #endif
 
-class flanger_audio_module: public audio_module<flanger_metadata>, public line_graph_iface
+class frequency_response_line_graph: public line_graph_iface 
+{
+    bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
+    virtual int get_changed_offsets(int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline);
+};
+
+class flanger_audio_module: public audio_module<flanger_metadata>, public frequency_response_line_graph
 {
 public:
     dsp::simple_flanger<float, 2048> left, right;
@@ -119,11 +125,11 @@ public:
         return outputs_mask; // XXXKF allow some delay after input going blank
     }
     bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context);
-    bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
     float freq_gain(int subindex, float freq, float srate);
+    virtual int get_changed_offsets(int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline) { subindex_graph = subindex_dot = subindex_gridline = 0; return 0; }
 };
 
-class phaser_audio_module: public audio_module<phaser_metadata>, public line_graph_iface
+class phaser_audio_module: public audio_module<phaser_metadata>, public frequency_response_line_graph
 {
 public:
     float *ins[in_count]; 
@@ -680,7 +686,7 @@ public:
 class filter_audio_module: 
     public audio_module<filter_metadata>, 
     public filter_module_with_inertia<biquad_filter_module, filter_metadata>, 
-    public line_graph_iface
+    public frequency_response_line_graph
 {
 public:    
     void params_changed()
@@ -707,7 +713,6 @@ public:
     }
     
     bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context);
-    bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
 };
 
 /// A multitap stereo chorus thing - processing
@@ -827,7 +832,7 @@ public:
 class filterclavier_audio_module: 
         public audio_module<filterclavier_metadata>, 
         public filter_module_with_inertia<biquad_filter_module, filterclavier_metadata>, 
-        public line_graph_iface
+        public frequency_response_line_graph
 {        
     const float min_gain;
     const float max_gain;
@@ -909,7 +914,6 @@ public:
     }
 
     bool get_graph(int index, int subindex, float *data, int points, cairo_iface *context);
-    bool get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context);
     
 private:
     void adjust_gain_according_to_filter_mode(int velocity) {
diff --git a/src/modules_dsp.cpp b/src/modules_dsp.cpp
index 8e1269a..0395161 100644
--- a/src/modules_dsp.cpp
+++ b/src/modules_dsp.cpp
@@ -20,6 +20,7 @@
  */
 #include <config.h>
 #include <assert.h>
+#include <limits.h>
 #include <memory.h>
 #if USE_JACK
 #include <jack/jack.h>
@@ -108,6 +109,22 @@ static bool get_freq_gridline(int subindex, float &pos, bool &vertical, std::str
     return true;
 }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+bool frequency_response_line_graph::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
+{ 
+    return get_freq_gridline(subindex, pos, vertical, legend, context);
+}
+
+int frequency_response_line_graph::get_changed_offsets(int generation, int &subindex_graph, int &subindex_dot, int &subindex_gridline)
+{
+    subindex_graph = 0;
+    subindex_dot = 0;
+    subindex_gridline = generation ? INT_MAX : 0;
+    return 1;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 void flanger_audio_module::activate() {
     left.reset();
@@ -145,13 +162,6 @@ float flanger_audio_module::freq_gain(int subindex, float freq, float srate)
     return (subindex ? right : left).freq_gain(freq, srate);                
 }
 
-bool flanger_audio_module::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
-{
-    if (index == par_delay)
-        return get_freq_gridline(subindex, pos, vertical, legend, context);
-    return false;
-}
-
 ///////////////////////////////////////////////////////////////////////////////////////////////
 
 void phaser_audio_module::set_sample_rate(uint32_t sr)
@@ -229,14 +239,6 @@ bool filter_audio_module::get_graph(int index, int subindex, float *data, int po
     return false;
 }
 
-bool filter_audio_module::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
-{
-    if (index == par_cutoff) {
-        return get_freq_gridline(subindex, pos, vertical, legend, context);
-    }
-    return false;
-}
-
 ///////////////////////////////////////////////////////////////////////////////////////////////
 
 bool filterclavier_audio_module::get_graph(int index, int subindex, float *data, int points, cairo_iface *context)
@@ -251,11 +253,6 @@ bool filterclavier_audio_module::get_graph(int index, int subindex, float *data,
     return false;
 }
 
-bool filterclavier_audio_module::get_gridline(int index, int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context)
-{
-    return get_freq_gridline(subindex, pos, vertical, legend, context);
-}
-
 ///////////////////////////////////////////////////////////////////////////////////////////////
 
 rotary_speaker_audio_module::rotary_speaker_audio_module()

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list