oxihuman_viewer/
fire_debug_view.rs1#![allow(dead_code)]
4
5#[derive(Debug, Clone)]
9pub struct FireDebugView {
10 pub enabled: bool,
11 pub show_temperature: bool,
12 pub show_fuel: bool,
13 pub temp_min: f32,
14 pub temp_max: f32,
15}
16
17impl FireDebugView {
18 pub fn new() -> Self {
19 Self {
20 enabled: false,
21 show_temperature: true,
22 show_fuel: false,
23 temp_min: 300.0,
24 temp_max: 2000.0,
25 }
26 }
27}
28
29impl Default for FireDebugView {
30 fn default() -> Self {
31 Self::new()
32 }
33}
34
35pub fn new_fire_debug_view() -> FireDebugView {
37 FireDebugView::new()
38}
39
40pub fn frdv_set_enabled(v: &mut FireDebugView, enabled: bool) {
42 v.enabled = enabled;
43}
44
45pub fn frdv_set_show_temperature(v: &mut FireDebugView, show: bool) {
47 v.show_temperature = show;
48}
49
50pub fn frdv_set_show_fuel(v: &mut FireDebugView, show: bool) {
52 v.show_fuel = show;
53}
54
55pub fn frdv_set_temp_min(v: &mut FireDebugView, t: f32) {
57 v.temp_min = t.max(0.0);
58}
59
60pub fn frdv_set_temp_max(v: &mut FireDebugView, t: f32) {
62 v.temp_max = t.max(v.temp_min + 1.0);
63}
64
65pub fn frdv_normalize_temp(v: &FireDebugView, temp: f32) -> f32 {
67 let range = v.temp_max - v.temp_min;
68 if range < 1e-6 {
69 return 0.0;
70 }
71 ((temp - v.temp_min) / range).clamp(0.0, 1.0)
72}
73
74pub fn fire_debug_view_to_json(v: &FireDebugView) -> String {
76 format!(
77 r#"{{"enabled":{},"show_temperature":{},"show_fuel":{},"temp_min":{:.2},"temp_max":{:.2}}}"#,
78 v.enabled, v.show_temperature, v.show_fuel, v.temp_min, v.temp_max
79 )
80}
81
82#[cfg(test)]
83mod tests {
84 use super::*;
85
86 #[test]
87 fn test_defaults() {
88 let v = new_fire_debug_view();
89 assert!(!v.enabled);
90 assert!(v.show_temperature);
91 assert!(!v.show_fuel);
92 }
93
94 #[test]
95 fn test_enable() {
96 let mut v = new_fire_debug_view();
97 frdv_set_enabled(&mut v, true);
98 assert!(v.enabled);
99 }
100
101 #[test]
102 fn test_toggle_fuel() {
103 let mut v = new_fire_debug_view();
104 frdv_set_show_fuel(&mut v, true);
105 assert!(v.show_fuel);
106 }
107
108 #[test]
109 fn test_temp_min_clamped() {
110 let mut v = new_fire_debug_view();
111 frdv_set_temp_min(&mut v, -100.0);
112 assert_eq!(v.temp_min, 0.0);
113 }
114
115 #[test]
116 fn test_temp_max_set() {
117 let mut v = new_fire_debug_view();
118 frdv_set_temp_max(&mut v, 3000.0);
119 assert!((v.temp_max - 3000.0).abs() < 1e-4);
120 }
121
122 #[test]
123 fn test_normalize_mid() {
124 let v = new_fire_debug_view(); let n = frdv_normalize_temp(&v, 1150.0);
126 assert!((n - 0.5).abs() < 0.01); }
128
129 #[test]
130 fn test_normalize_clamp_below() {
131 let v = new_fire_debug_view();
132 assert_eq!(frdv_normalize_temp(&v, 0.0), 0.0);
133 }
134
135 #[test]
136 fn test_json_keys() {
137 let v = new_fire_debug_view();
138 let s = fire_debug_view_to_json(&v);
139 assert!(s.contains("temp_max"));
140 }
141
142 #[test]
143 fn test_clone() {
144 let v = new_fire_debug_view();
145 let v2 = v.clone();
146 assert!((v2.temp_min - v.temp_min).abs() < 1e-4);
147 }
148}