Commit: 9c8a7bc079ac401490a60bc754f3f9904edd73b4
Parent: a0b6c178ccc7b57615321204efae91100c038804
Author: Randy Palamar
Date: Tue, 13 Oct 2026 13:26:08 -0600
ui: add emission parameter info to parameter lister
closes: #79
Diffstat:
4 files changed, 79 insertions(+), 12 deletions(-)
diff --git a/beamformer.meta b/beamformer.meta
@@ -323,8 +323,8 @@
@Expand(AcquisitionKindTable) ` str8_comp("$(pretty_name)"),`
`};`
``
- `read_only str8 beamformer_filter_kind_strings[] = {`
- @Expand(FilterKindTable) ` str8_comp("$(name)"),`
+ `read_only str8 beamformer_emission_kind_strings[] = {`
+ @Expand(EmissionKind) ` str8_comp("$(name)"),`
`};`
``
`read_only str8 beamformer_interpolation_mode_strings[] = {`
diff --git a/beamformer_internal.h b/beamformer_internal.h
@@ -598,7 +598,8 @@ struct BeamformerUIPanel {
struct {
u32 parameter_block;
- b16 expand_coordinate[2];
+ b8 expand_emission;
+ b8 expand_coordinate[2];
} parameter_listing;
struct {
diff --git a/generated/beamformer.c b/generated/beamformer.c
@@ -1016,9 +1016,9 @@ read_only str8 beamformer_acquisition_kind_strings[] = {
str8_comp("ULM"),
};
-read_only str8 beamformer_filter_kind_strings[] = {
- str8_comp("Kaiser"),
- str8_comp("MatchedChirp"),
+read_only str8 beamformer_emission_kind_strings[] = {
+ str8_comp("Sine"),
+ str8_comp("Chirp"),
};
read_only str8 beamformer_interpolation_mode_strings[] = {
diff --git a/ui.c b/ui.c
@@ -3420,6 +3420,77 @@ ui_build_parameters_listing(BeamformerUIPanel *panel)
UIParent(value_column) ui_labelf("%0.2f###demod", bp->demodulation_frequency * 1e-6);
UIParent(unit_column) ui_label(str8("[MHz]##demod"));
+ u32 parameter_block = panel->u.parameter_listing.parameter_block;
+
+ BeamformerParameterBlock *pb = beamformer_parameter_block(beamformer_context->shared_memory, parameter_block);
+ BeamformerComputePlan *cp = beamformer_context->compute_context.compute_plans[parameter_block];
+
+ // NOTE(rnp): emission info
+ {
+ BeamformerEmissionParameters *ep = &pb->parameters.emission_parameters;
+ str8 kind = str8("Unknown");
+ b32 valid = ep->kind <= BeamformerEmissionKind_Count;
+ if (valid) kind = beamformer_emission_kind_strings[ep->kind];
+
+ UIFlags(ui_top_flags()|(!valid * UINodeFlag_Disabled))
+ UIParent(label_column)
+ {
+ UISignal signal = ui_label_button(str8("Emission"));
+ if ui_pressed(signal)
+ panel->u.parameter_listing.expand_emission ^= 1u;
+ }
+ UIParent(unit_column) UIPrefHeight(ui_em(1.0f, 1.0f)) ui_spacer(0);
+ UIParent(value_column) ui_label(kind);
+ if (valid && panel->u.parameter_listing.expand_emission) {
+ switch (ep->kind) {
+ case BeamformerEmissionKind_Sine:{
+ UIParent(label_column)
+ {
+ ui_label(str8(" Cycles"));
+ ui_label(str8(" Frequency"));
+ }
+
+ UIParent(value_column)
+ {
+ ui_labelf("%0.2f###sine_cycles", ep->sine.cycles);
+ ui_labelf("%0.2f###sine_freq", ep->sine.frequency * 1e-6f);
+ }
+
+ UIParent(unit_column)
+ {
+ UIPrefHeight(ui_em(1.0f, 1.0f)) ui_spacer(0);
+ ui_label(str8("[MHz]###sine_freq"));
+ }
+ }break;
+
+ case BeamformerEmissionKind_Chirp:{
+ UIParent(label_column)
+ {
+ ui_label(str8(" Duration"));
+ ui_label(str8(" Min Frequency"));
+ ui_label(str8(" Max Frequency"));
+ }
+
+ UIParent(value_column)
+ {
+ ui_labelf("%0.2f###chirp_duration", ep->chirp.duration * 1e6f);
+ ui_labelf("%0.2f###chirp_min", ep->chirp.min_frequency * 1e-6f);
+ ui_labelf("%0.2f###chirp_max", ep->chirp.max_frequency * 1e-6f);
+ }
+
+ UIParent(unit_column)
+ {
+ ui_label(str8("[us]###chirp_duration"));
+ ui_label(str8("[MHz]###chirp_min"));
+ ui_label(str8("[MHz]###chirp_max"));
+ }
+ }break;
+
+ InvalidDefaultCase;
+ }
+ }
+ }
+
UIParent(label_column) ui_label(str8("Speed of Sound"));
UIParent(unit_column) ui_label(str8("[m/s]"));
UIParent(value_column)
@@ -3430,11 +3501,7 @@ ui_build_parameters_listing(BeamformerUIPanel *panel)
ui->flush_parameters = 1;
}
- u32 parameter_block = panel->u.parameter_listing.parameter_block;
b32 rebuild_transform = 0;
-
- BeamformerParameterBlock *pb = beamformer_parameter_block(beamformer_context->shared_memory, parameter_block);
- BeamformerComputePlan *cp = beamformer_context->compute_context.compute_plans[parameter_block];
m4 das_transform = pb->parameters.das_voxel_transform;
if (cp) das_transform = m4_mul(cp->ui_voxel_transform, das_transform);
v3 coordinates[2] = {
@@ -3453,8 +3520,7 @@ ui_build_parameters_listing(BeamformerUIPanel *panel)
for (u32 index = 0; index < 2; index++) {
UIParent(label_column)
{
- UISignal signal = ui_button(dimension_strings[dimension - 1][index]);
- signal.node->flags &= ~(UINodeFlag_DrawBackground|UINodeFlag_DrawBorder);
+ UISignal signal = ui_label_button(dimension_strings[dimension - 1][index]);
if ui_pressed(signal)
panel->u.parameter_listing.expand_coordinate[index] ^= 1u;
}