#pragma once #include #include #include #include #include #include #include #include #include #define WINDOW_FLAGS ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoBackground class MainWindow { public: void init(); void draw(); void setViewBandwidthSlider(float bandwidth); bool sdrIsRunning(); void setFFTSize(int size); void setFFTWindow(int win); void setFirstMenuRender(); // TODO: Replace with it's own class void setVFO(double freq); void setPlayState(bool _playing); bool isPlaying(); bool lockWaterfallControls = false; bool playButtonLocked = false; Event onPlayStateChange; private: static void fftHandler(dsp::complex_t* samples, int count, void* ctx); static void vfoAddedHandler(VFOManager::VFO* vfo, void* ctx); // FFT Variables int fftSize = 8192 * 8; std::mutex fft_mtx; fftwf_complex *fft_in, *fft_out; fftwf_plan fftwPlan; // GUI Variables bool firstMenuRender = true; bool startedWithMenuClosed = false; float fftMin = -70.0; float fftMax = 0.0; float bw = 8000000; bool playing = false; bool showCredits = false; std::string audioStreamName = ""; std::string sourceName = ""; int menuWidth = 300; bool grabbingMenu = false; int newWidth = 300; int fftHeight = 300; bool showMenu = true; int tuningMode = tuner::TUNER_MODE_NORMAL; dsp::stream dummyStream; bool demoWindow = false; int selectedWindow = 0; bool initComplete = false; EventHandler vfoCreatedHandler; };