From fba043f4234453f68284cb31d8c215ff5af6a66f Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Sat, 18 Nov 2023 22:12:55 +0100 Subject: Refactoring --- lib/audio.hpp | 28 ++++++++++++++++++++++++++++ lib/ui.hpp | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 lib/audio.hpp create mode 100644 lib/ui.hpp (limited to 'lib') diff --git a/lib/audio.hpp b/lib/audio.hpp new file mode 100644 index 0000000..3502714 --- /dev/null +++ b/lib/audio.hpp @@ -0,0 +1,28 @@ +#ifndef AUDIO_HPP +#define AUDIO_HPP + +#include + +#define FRAMES_PER_BUFFER 256 + +class AudioData { + public: + AudioData(); + void set_device_num(int device_num); + int get_channel_cnt(); + float* get_channels(); + + void start_stream(); + void close_stream(); + + private: + PaStream* stream; + int device_num; + int channel_cnt; + float* channels; + + static int patestCallback(const void* inputBuffer, void* outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, + void* userData); +}; + +#endif diff --git a/lib/ui.hpp b/lib/ui.hpp new file mode 100644 index 0000000..c656058 --- /dev/null +++ b/lib/ui.hpp @@ -0,0 +1,36 @@ +#ifndef UI_HPP +#define UI_HPP + +#include +#include +#include "audio.hpp" +#include + +using namespace std; + +class GTKUI { + public: + GTKUI(int argc, char* argv[]); + static void draw(cairo_t* cr, GtkWidget* drawing_area, gpointer user_data); + static void draw_cb(GtkDrawingArea* drawing_area, cairo_t* cr, int width, int height, gpointer user_data); + static void select_device(GtkWidget* widget, gpointer user_data); + static void refresh(GtkWidget* widget, gpointer user_data); + static void close_window(GtkWidget* widget, gpointer user_data); + static gboolean drawCallback(GtkWidget* widget, GdkFrameClock* frame_clock, gpointer user_data); + static void activate(GtkApplication* app, gpointer user_data); + + private: + GtkApplication* app; + + GtkWidget* window; + GtkWidget* grid; + GtkWidget* refresh_button; + GtkWidget* quit_button; + vector buttons; + GtkWidget* drawing_area; + + int status; + AudioData* audiodata; +}; + +#endif -- cgit v1.2.3