refactor: split spectrogram.c into per-concern modules
spectrogram.c was ~2950 lines holding everything. Break it into cohesive translation units; spectrogram.c keeps only globals + the main frame loop. New modules: - spectrogram_types.h shared types, constants, extern globals, inline math - fft.c/.h FFT, bit-reverse, twiddle (standalone, no app deps) - stft.c/.h STFT compute, adaptive resolution, FFT-size LRU cache - audio.c/.h WAV/ffmpeg load, FreeSignal, bandpass, playback - render.c/.h UI scaling, colormaps, texture gen, on-screen drawing - ui.c/.h file browser, sidebar, sliders, PNG export Also: - utils.c now includes utils.h instead of re-typedef'ing AudioSignal/ SignalStats (they had to be hand-synced before). - Remove dead code: ApplyHannWindow and ComputeSTFTHighResRange were never called (the live high-res path is ComputeNextHighResChunk). - Delete the unused raylib-template main.c. - rspektrum.make: build the new units. premake5.lua: glob src/**.c so a future regen stays correct. Pure code movement otherwise; no behavior change. Builds clean (-Wshadow). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// render.h - UI scaling, colormaps, spectrogram texture generation, drawing
|
||||
#ifndef RENDER_H
|
||||
#define RENDER_H
|
||||
|
||||
#include "spectrogram_types.h"
|
||||
|
||||
// --- UI scaling & scaled text ---
|
||||
float GetUIScale(void);
|
||||
void DrawTextScaled(const char* text, float x, float y, float baseSize, Color color);
|
||||
float MeasureTextScaled(const char* text, float baseSize);
|
||||
|
||||
// --- Colormaps ---
|
||||
void GenerateColormapTexture(void);
|
||||
|
||||
// --- Spectrogram texture ---
|
||||
void GenerateSpectrogramTexture(StftResult* stft, Image* image, Texture2D* texture);
|
||||
|
||||
// --- On-screen drawing (operate on the global app state) ---
|
||||
void DrawSpectrogramGrid(Rectangle bounds, int numCellsX, int numCellsY, Color color);
|
||||
void DrawLabels(Rectangle bounds);
|
||||
void DrawSelection(Rectangle bounds);
|
||||
void DrawSelectionDrag(Rectangle bounds);
|
||||
void DrawPlayhead(Rectangle bounds);
|
||||
|
||||
#endif // RENDER_H
|
||||
Reference in New Issue
Block a user