aboutsummaryrefslogtreecommitdiff
path: root/libpsi-visualizer/src/cli/horizontal_cli.rs
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2025-12-06 22:33:56 +0100
committerhachem <im@hachem.wtf>2025-12-06 22:33:56 +0100
commit1fb7989e9405f9795a1d5b3953881b9bb8a137b4 (patch)
treec680f041fe41e5ccd1e311ec7b1502abb96237af /libpsi-visualizer/src/cli/horizontal_cli.rs
parentedc6bae7bf5039c8cef2f2c9c164187478b1c7eb (diff)
[add]: custom gates + rework vertical renderer
Diffstat (limited to 'libpsi-visualizer/src/cli/horizontal_cli.rs')
-rw-r--r--libpsi-visualizer/src/cli/horizontal_cli.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/libpsi-visualizer/src/cli/horizontal_cli.rs b/libpsi-visualizer/src/cli/horizontal_cli.rs
index 067e23d..bac0c5e 100644
--- a/libpsi-visualizer/src/cli/horizontal_cli.rs
+++ b/libpsi-visualizer/src/cli/horizontal_cli.rs
@@ -246,6 +246,31 @@ impl<'a> fmt::Display for HorizontalRenderer<'a> {
}
gap_line.push_str(" ║ ");
}
+ GateOp::Custom(gate, targets) => {
+ let name = &gate.name;
+ let label = format!("[{}]", name);
+
+ for (i, line) in q_lines.iter_mut().enumerate() {
+ if targets.contains(&i) {
+ if i == targets[0] {
+ line.push_str(&format!("─{}─", label));
+ } else {
+ line.push_str(&format!("─{}─", "─".repeat(label.len())));
+ }
+ } else if i > min_q && i < max_q {
+ line.push_str(&format!(
+ "─{}─",
+ "│".to_string() + &"─".repeat(label.len() - 1)
+ ));
+ } else {
+ line.push_str(&format!("─{}─", "─".repeat(label.len())));
+ }
+ }
+ for line in c_lines.iter_mut() {
+ line.push_str(&format!("═{}═", "═".repeat(label.len())));
+ }
+ gap_line.push_str(&format!(" {} ", " ".repeat(label.len())));
+ }
}
}