blob: 3f02c597d07196bc19bf753bfefa2e26af9ed333 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/*
NOTE(Hachem): This is what I would like the output to be like
┌───┐ ┌───────┐ ┌─────────┐
|q0>: ─────┤ H ├────┤ C-NOT ├────┤ MEASURE ├───────────────────▓
└───┘ └───┬───┘ └────┬────┘
│ │ ┌─────────┐
|q1>: ──────────────────■─────────────┼─────────┤ MEASURE ├────▓
│ └────┬────┘
│ │
c0: ════════════════════════════════■══════════════╪═════════▓
c1: ═══════════════════════════════════════════════■═════════▓
*/
use core::fmt;
use crate::{renderer::*, Visualizer};
use libpsi_core::QuantumCircuit;
#[allow(unused)]
pub struct HorizontalCLIVisualizer<'a> {
circuit: &'a QuantumCircuit<'a>,
renderer: CLIRenderer,
}
impl<'a> fmt::Display for HorizontalCLIVisualizer<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.renderer.to_string())
}
}
impl<'a> Visualizer<'a> for HorizontalCLIVisualizer<'a> {
fn new(circuit: &'a QuantumCircuit) -> HorizontalCLIVisualizer<'a> {
let terminal_width = term_size::dimensions().unwrap().0;
HorizontalCLIVisualizer {
circuit,
renderer: CLIRenderer::new(terminal_width),
}
}
fn render(&mut self) {
println!("{}", self);
}
}
|