refactor: 迁移 shader.wgsl 至 static/wgsl/,新增 model 模块
This commit is contained in:
48
src/ui.rs
48
src/ui.rs
@@ -3,7 +3,10 @@ use eframe::egui;
|
||||
use crate::{
|
||||
connection::{ConnectionManager, ConnectionState},
|
||||
recording::Recorder,
|
||||
theme::{ONE_DARK_PRO, ACCENT_BLUE, ACCENT_GREEN, ACCENT_ORANGE, ACCENT_RED, accent_text, dim_text, group_frame, panel_frame, tag_button},
|
||||
theme::{
|
||||
ACCENT_BLUE, ACCENT_GREEN, ACCENT_ORANGE, ACCENT_RED, ONE_DARK_PRO, accent_text, dim_text,
|
||||
group_frame, panel_frame, tag_button,
|
||||
},
|
||||
utils::serial_enum,
|
||||
};
|
||||
|
||||
@@ -977,12 +980,7 @@ fn paint_integrated_center_panel(
|
||||
// ── Signal Chart (sparkline) ───────────────────────────────────────────
|
||||
|
||||
/// Draw a mini sparkline chart with current/min/max labels.
|
||||
pub fn draw_signal_chart(
|
||||
ui: &mut egui::Ui,
|
||||
values: &[f32],
|
||||
label: &str,
|
||||
color: egui::Color32,
|
||||
) {
|
||||
pub fn draw_signal_chart(ui: &mut egui::Ui, values: &[f32], label: &str, color: egui::Color32) {
|
||||
let chart_height = 48.0;
|
||||
let chart_width = ui.available_width().min(200.0);
|
||||
|
||||
@@ -991,16 +989,20 @@ pub fn draw_signal_chart(
|
||||
ui.colored_label(color, label);
|
||||
if let (Some(&last), Some(&min), Some(&max)) = (
|
||||
values.last(),
|
||||
values.iter().min_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)),
|
||||
values.iter().max_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)),
|
||||
values
|
||||
.iter()
|
||||
.min_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)),
|
||||
values
|
||||
.iter()
|
||||
.max_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)),
|
||||
) {
|
||||
ui.colored_label(ONE_DARK_PRO.text, format!("{:.0}", last));
|
||||
ui.colored_label(ONE_DARK_PRO.text_dim, format!("↓{:.0} ↑{:.0}", min, max));
|
||||
}
|
||||
});
|
||||
|
||||
let (rect, _response) = ui
|
||||
.allocate_exact_size(egui::vec2(chart_width, chart_height), egui::Sense::hover());
|
||||
let (rect, _response) =
|
||||
ui.allocate_exact_size(egui::vec2(chart_width, chart_height), egui::Sense::hover());
|
||||
|
||||
if values.len() < 2 {
|
||||
return;
|
||||
@@ -1038,11 +1040,7 @@ pub fn draw_signal_chart(
|
||||
// ── Recording Toolbar ──────────────────────────────────────────────────
|
||||
|
||||
/// Draw recording controls inside the connect panel.
|
||||
pub fn draw_recording_toolbar(
|
||||
ui: &mut egui::Ui,
|
||||
recorder: &Recorder,
|
||||
export_path: &mut String,
|
||||
) {
|
||||
pub fn draw_recording_toolbar(ui: &mut egui::Ui, recorder: &Recorder, export_path: &mut String) {
|
||||
let is_recording = recorder.is_recording();
|
||||
let frame_count = recorder.frame_count();
|
||||
let duration_ms = recorder.duration_ms();
|
||||
@@ -1203,9 +1201,15 @@ pub fn draw_matrix_config_panel(
|
||||
ui.colored_label(dim_text(), "矩阵尺寸");
|
||||
ui.add_space(8.0);
|
||||
ui.colored_label(ONE_DARK_PRO.text, "行");
|
||||
ui.add_sized(egui::vec2(56.0, 20.0), egui::DragValue::new(&mut config.rows).range(1..=128));
|
||||
ui.add_sized(
|
||||
egui::vec2(56.0, 20.0),
|
||||
egui::DragValue::new(&mut config.rows).range(1..=128),
|
||||
);
|
||||
ui.colored_label(ONE_DARK_PRO.text, "列");
|
||||
ui.add_sized(egui::vec2(56.0, 20.0), egui::DragValue::new(&mut config.cols).range(1..=128));
|
||||
ui.add_sized(
|
||||
egui::vec2(56.0, 20.0),
|
||||
egui::DragValue::new(&mut config.cols).range(1..=128),
|
||||
);
|
||||
});
|
||||
|
||||
ui.add_space(4.0);
|
||||
@@ -1235,12 +1239,16 @@ pub fn draw_matrix_config_panel(
|
||||
ui.colored_label(ONE_DARK_PRO.text, "最小");
|
||||
ui.add_sized(
|
||||
egui::vec2(72.0, 20.0),
|
||||
egui::DragValue::new(&mut config.color_min).range(0.0..=10000.0).speed(100.0),
|
||||
egui::DragValue::new(&mut config.color_min)
|
||||
.range(0.0..=10000.0)
|
||||
.speed(100.0),
|
||||
);
|
||||
ui.colored_label(ONE_DARK_PRO.text, "最大");
|
||||
ui.add_sized(
|
||||
egui::vec2(72.0, 20.0),
|
||||
egui::DragValue::new(&mut config.color_max).range(1.0..=10000.0).speed(100.0),
|
||||
egui::DragValue::new(&mut config.color_max)
|
||||
.range(1.0..=10000.0)
|
||||
.speed(100.0),
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user