ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | LICENSE

Commit: 6092a6cfb580cedd65de1657829ac15277f26383
Parent: b22f811d0194b0961e153ca7b56cd50a4c0c3cd2
Author: Randy Palamar
Date:   Thu, 11 Jul 2024 09:26:08 -0600

fix view rectangle clamping

Diffstat:
Mbeamformer.c | 42+++++++++++++++++++-----------------------
1 file changed, 19 insertions(+), 23 deletions(-)

diff --git a/beamformer.c b/beamformer.c @@ -92,21 +92,6 @@ do_compute_shader(BeamformerCtx *ctx, enum compute_shaders shader) } } -static Rect -cut_rect_left(Rect r, f32 fraction) -{ - r.size.w *= fraction; - return r; -} - -static Rect -cut_rect_right(Rect r, f32 fraction) -{ - r.pos.x += fraction * r.size.w; - r.size.w *= (1 - fraction); - return r; -} - static void draw_settings_ui(BeamformerCtx *ctx, Arena arena, f32 dt, Rect r, v2 mouse) { @@ -345,20 +330,24 @@ do_beamformer(BeamformerCtx *ctx, Arena arena) ctx->font_size, ctx->font_spacing)}; Rect wr = {.size = {.w = (f32)ctx->window_size.w, .h = (f32)ctx->window_size.h}}; - Rect lr = cut_rect_left(wr, 0.3), rr = cut_rect_right(wr, 0.3); + Rect lr = wr, rr = wr; + lr.size.w = 420; + rr.size.w = wr.size.w - lr.size.w - 10; + rr.pos.x = lr.pos.x + lr.size.w + 10; f32 tick_len = 20; - f32 pad = 1.5 * txt_s.x + tick_len; + f32 x_pad = txt_s.x + tick_len; + f32 y_pad = 1.5 * txt_s.x + tick_len; - Rect vr = rr; - vr.size.h -= pad; + Rect vr = rr; + vr.size.h -= y_pad; vr.size.w = vr.size.h * output_dim.w / output_dim.h; - if (vr.size.w + pad > rr.size.w) { - vr.size.h = (rr.size.w - pad) * output_dim.h / output_dim.w; + if (vr.size.w + x_pad > rr.size.w) { + vr.size.h = (rr.size.w - x_pad) * output_dim.h / output_dim.w; vr.size.w = vr.size.h * output_dim.w / output_dim.h; } - vr.pos.x += (rr.size.w - (vr.size.w + pad))/2; - vr.pos.y += (rr.size.h - (vr.size.h + pad) + txt_s.h) / 2; + vr.pos.x += (rr.size.w - (vr.size.w + x_pad)) / 2; + vr.pos.y += (rr.size.h - (vr.size.h + y_pad) + txt_s.h) / 2; Rectangle tex_r = { 0.0f, 0.0f, (f32)output->width, -(f32)output->height }; NPatchInfo tex_np = { tex_r, 0, 0, 0, 0, NPATCH_NINE_PATCH }; @@ -420,6 +409,13 @@ do_beamformer(BeamformerCtx *ctx, Arena arena) } } + f32 desired_width = lr.size.w + vr.size.w; + if (desired_width > ctx->window_size.w) { + ctx->window_size.w = desired_width; + SetWindowSize(ctx->window_size.w, ctx->window_size.h); + SetWindowMinSize(desired_width, 960); + } + /* NOTE: check mouse wheel for adjusting dynamic range of image */ v2 mouse = { .rl = GetMousePosition() }; if (CheckCollisionPointRec(mouse.rl, vr.rl)) {