X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Ffft_graph.h;h=ab05da348b4e6fef6e219c3b34b0898891fe64a7;hb=5932b7903a7c43cc3b5cfd043e64d577e0125799;hp=73636b989d802d36007a36e3e522cbfdf270b04d;hpb=50a3102b9b533d7f8786d220f8df67421b9227c8;p=ardour.git diff --git a/gtk2_ardour/fft_graph.h b/gtk2_ardour/fft_graph.h index 73636b989d..ab05da348b 100644 --- a/gtk2_ardour/fft_graph.h +++ b/gtk2_ardour/fft_graph.h @@ -1,5 +1,6 @@ /* Copyright (C) 2006 Paul Davis + Author: Sampo Savoleinen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +21,7 @@ #ifndef __ardour_fft_graph_h #define __ardour_fft_graph_h -#include +#include "ardour/types.h" #include #include @@ -38,43 +39,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 +92,9 @@ class FFTGraph : public Gtk::DrawingArea float *_hanning; int *_logScale; + bool _show_minmax; + bool _show_normalized; + friend class FFTResult; };