ac262505c1
Commit the accumulated working-tree changes as one snapshot. - Headless render: `--render OUT.png INPUT.wav` draws the spectrogram (full window, or `--pane` for the spectrogram pane only) to a PNG with no visible window. Options: `--annotations`/`--no-annotations`, `--annotation-opacity`, `--width`/`--height`. - mLnL annotations: parse the optional `mLnL` RIFF chunk (schema v2) and render tx_frame/assertion/control overlays, a timeline lane, and a waveform-scope echo, with hover tooltips on the spectrogram, timeline, and scope. - sched_offset_ms: parse the per-frame intent->air latency and surface it in the hover tooltips (boxes stay air-anchored upstream). - Supporting: build wiring (rspektrum.make), shared types/headers, web-build and capture-script tweaks, and removal of the old synchrosqueezing LaTeX doc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.6 KiB
C
41 lines
1.6 KiB
C
// 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);
|
|
const char* ColormapName(ColormapType type);
|
|
|
|
// --- Spectrogram texture ---
|
|
// GenerateSpectrogramTexture recomputes the synchrosqueezed reassignment (use
|
|
// when the STFT changes). ColorizeSpectrogram only re-maps the cached
|
|
// reassignment to colors (use for dB-floor / colormap changes).
|
|
void GenerateSpectrogramTexture(StftResult* stft, Image* image, Texture2D* texture);
|
|
void ColorizeSpectrogram(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 DrawCursorReadout(Rectangle bounds);
|
|
void DrawMarkers(Rectangle bounds);
|
|
void DrawSpectrumPanel(Rectangle bounds);
|
|
void DrawPlayhead(Rectangle bounds);
|
|
void DrawAnnotations(Rectangle bounds);
|
|
// Annotation timeline lane. Updates app.hoveredTimelineEvent and
|
|
// app.selectedAnnotation in response to mouse interaction in `lane`.
|
|
void DrawTimeline(Rectangle lane);
|
|
// Time-only annotation overlay rendered on top of the waveform scope.
|
|
// Shares opacity/selection state with the spectrogram overlay.
|
|
void DrawAnnotationsOnScope(Rectangle scopeBounds);
|
|
|
|
#endif // RENDER_H
|