X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ffft_graph.h;h=ab05da348b4e6fef6e219c3b34b0898891fe64a7;hb=ad942b104a80c74c689e0c1b5c016d1870850830;hp=73636b989d802d36007a36e3e522cbfdf270b04d;hpb=ee58e757e9beb551669ebf843448e2eb839b24f1;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; };