X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ffft_graph.h;h=c91adec8b758d8fe849b08ac4d0bf2c230eb506f;hb=e33d4553b2b333c30835b00741fc5c1fd0e2b36d;hp=73636b989d802d36007a36e3e522cbfdf270b04d;hpb=ee58e757e9beb551669ebf843448e2eb839b24f1;p=ardour.git diff --git a/gtk2_ardour/fft_graph.h b/gtk2_ardour/fft_graph.h index 73636b989d..c91adec8b7 100644 --- a/gtk2_ardour/fft_graph.h +++ b/gtk2_ardour/fft_graph.h @@ -20,7 +20,7 @@ #ifndef __ardour_fft_graph_h #define __ardour_fft_graph_h -#include +#include "ardour/types.h" #include #include @@ -38,43 +38,50 @@ class AnalysisWindow; class FFTGraph : public Gtk::DrawingArea { public: - + FFTGraph(int windowSize); ~FFTGraph(); void set_analysis_window(AnalysisWindow *a_window); - + int windowSize() const { return _windowSize; } void setWindowSize(int windowSize); void redraw(); bool on_expose_event (GdkEventExpose* event); - + void on_size_request(Gtk::Requisition* requisition); void on_size_allocate(Gtk::Allocation & alloc); FFTResult *prepareResult(Gdk::Color color, std::string trackname); - + + void set_show_minmax (bool v) { _show_minmax = v; redraw(); } + void set_show_normalized (bool v) { _show_normalized = v; redraw(); } + private: + void update_size(); + void setWindowSize_internal(int windowSize); void draw_scales(Glib::RefPtr window); - - static const int scaleWidth = 512; - static const int scaleHeight = 420; + + static const int minScaleWidth = 512; + static const int minScaleHeight = 420; + + int currentScaleWidth; + int currentScaleHeight; static const int h_margin = 20; static const int v_margin = 20; + Glib::RefPtr graph_gc; int width; int height; - - void analyze(float *window, float *composite); + int _windowSize; int _dataSize; Glib::RefPtr layout; - Glib::RefPtr graph_gc; AnalysisWindow *_a_window; fftwf_plan _plan; @@ -84,6 +91,9 @@ class FFTGraph : public Gtk::DrawingArea float *_hanning; int *_logScale; + bool _show_minmax; + bool _show_normalized; + friend class FFTResult; };