fix graph minimap

This commit is contained in:
Rokas Puzonas 2025-02-03 00:45:38 +02:00
parent fa4fb2009f
commit dc3e66cfdc

View File

@ -240,7 +240,7 @@ pub fn tick(self: *App) !void {
{
const sample_count: f32 = @floatFromInt(channel.samples.owned.len);
const min_visible_samples = sample_count*0.02;
const min_visible_samples = 1; // sample_count*0.02;
const minimap_box = self.ui.newBoxFromString("Minimap");
minimap_box.background = rl.Color.dark_purple;
@ -252,35 +252,35 @@ pub fn tick(self: *App) !void {
const minimap_rect = minimap_box.computedRect();
{
const middle_box = self.ui.newBoxFromString("Middle knob");
{
middle_box.flags.insert(.clickable);
middle_box.flags.insert(.draggable_x);
middle_box.background = rl.Color.ray_white;
middle_box.background = rl.Color.black.alpha(0.5);
middle_box.size.y = UI.Size.pixels(32, 1);
const signal = self.ui.signalFromBox(middle_box);
if (signal.dragged()) {
var samples_moved = signal.drag.x / minimap_rect.width * sample_count;
samples_moved = clamp(samples_moved, -channel.view_rect.from, sample_count - channel.view_rect.to);
channel.view_rect.from += samples_moved;
channel.view_rect.to += samples_moved;
}
middle_box.setFixedX(minimap_rect.width * channel.view_rect.from / sample_count + 4);
middle_box.setFixedWidth(minimap_rect.width * (channel.view_rect.to - channel.view_rect.from) / sample_count - 8);
}
{
const left_knob_box = self.ui.newBoxFromString("Left knob");
{
left_knob_box.flags.insert(.clickable);
left_knob_box.flags.insert(.draggable_x);
left_knob_box.background = rl.Color.ray_white;
left_knob_box.background = rl.Color.black.alpha(0.5);
left_knob_box.size.x = UI.Size.pixels(8, 1);
left_knob_box.size.y = UI.Size.pixels(32, 1);
}
const right_knob_box = self.ui.newBoxFromString("Right knob");
{
right_knob_box.flags.insert(.clickable);
right_knob_box.flags.insert(.draggable_x);
right_knob_box.background = rl.Color.black.alpha(0.5);
right_knob_box.size.x = UI.Size.pixels(8, 1);
right_knob_box.size.y = UI.Size.pixels(32, 1);
}
const left_knob_size = left_knob_box.persistent.size.x;
const right_knob_size = right_knob_box.persistent.size.x;
const left_signal = self.ui.signalFromBox(left_knob_box);
if (left_signal.dragged()) {
@ -294,17 +294,6 @@ pub fn tick(self: *App) !void {
channel.view_rect.from = clamp(channel.view_rect.from, 0, channel.view_rect.to-min_visible_samples);
}
left_knob_box.setFixedX(minimap_rect.width * channel.view_rect.from / sample_count - left_knob_box.persistent.size.x/2);
}
{
const right_knob_box = self.ui.newBoxFromString("Right knobaaa");
right_knob_box.flags.insert(.clickable);
right_knob_box.flags.insert(.draggable_x);
right_knob_box.background = rl.Color.ray_white;
right_knob_box.size.x = UI.Size.pixels(8, 1);
right_knob_box.size.y = UI.Size.pixels(32, 1);
const right_signal = self.ui.signalFromBox(right_knob_box);
if (right_signal.dragged()) {
channel.view_rect.to += remap(
@ -317,8 +306,39 @@ pub fn tick(self: *App) !void {
channel.view_rect.to = clamp(channel.view_rect.to, channel.view_rect.from+min_visible_samples, sample_count);
}
right_knob_box.setFixedX(minimap_rect.width * channel.view_rect.to / sample_count - right_knob_box.persistent.size.x/2);
const middle_signal = self.ui.signalFromBox(middle_box);
if (middle_signal.dragged()) {
var samples_moved = middle_signal.drag.x / minimap_rect.width * sample_count;
samples_moved = clamp(samples_moved, -channel.view_rect.from, sample_count - channel.view_rect.to);
channel.view_rect.from += samples_moved;
channel.view_rect.to += samples_moved;
}
left_knob_box.setFixedX(remap(f32,
0, sample_count,
0, minimap_rect.width - left_knob_size - right_knob_size,
channel.view_rect.from
));
right_knob_box.setFixedX(remap(f32,
0, sample_count,
left_knob_size, minimap_rect.width - right_knob_size,
channel.view_rect.to
));
middle_box.setFixedX(remap(f32,
0, sample_count,
left_knob_size, minimap_rect.width - right_knob_size,
channel.view_rect.from
));
middle_box.setFixedWidth(remap(f32,
0, sample_count,
0, minimap_rect.width - right_knob_size - left_knob_size,
channel.view_rect.to - channel.view_rect.from
));
}
}
}