aboutsummaryrefslogtreecommitdiff
path: root/libpsi-visualizer/src/cli/horizontal_cli.rs
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2024-09-29 16:10:02 +0200
committerhachem <im@hachem.wtf>2024-09-29 16:10:02 +0200
commit88ae20ff8254dd60c3de252e49369d4125f9e1a2 (patch)
tree58529a8f1fc11c9719e975a7a3a21a48afdc5d8b /libpsi-visualizer/src/cli/horizontal_cli.rs
parent116e85e799971b857e14d70ba4397703d469c704 (diff)
ASCII rendering engine
Diffstat (limited to 'libpsi-visualizer/src/cli/horizontal_cli.rs')
-rw-r--r--libpsi-visualizer/src/cli/horizontal_cli.rs33
1 files changed, 19 insertions, 14 deletions
diff --git a/libpsi-visualizer/src/cli/horizontal_cli.rs b/libpsi-visualizer/src/cli/horizontal_cli.rs
index ad551ae..151dae1 100644
--- a/libpsi-visualizer/src/cli/horizontal_cli.rs
+++ b/libpsi-visualizer/src/cli/horizontal_cli.rs
@@ -12,29 +12,34 @@
c1: ═══════════════════════════════════════════════■═════════▓
*/
-use crate::Visualizer;
+use crate::{renderer::*, Visualizer};
use libpsi_core::QuantumCircuit;
+#[allow(unused)]
pub struct HorizontalCLIVisualizer<'a> {
circuit: &'a QuantumCircuit,
+ renderer: CLIRenderer,
}
impl<'a> Visualizer<'a> for HorizontalCLIVisualizer<'a> {
fn new(circuit: &'a QuantumCircuit) -> HorizontalCLIVisualizer<'a> {
- HorizontalCLIVisualizer { circuit }
+ let terminal_width = term_size::dimensions().unwrap().0;
+ HorizontalCLIVisualizer {
+ circuit,
+ renderer: CLIRenderer::new(terminal_width),
+ }
}
- // NOTE(Hachem): This is a temporary function
- fn render(&self) {
- for instruction in self.circuit.get_instructions() {
- print!("Applied {} on ", &instruction.gate.0);
- for bit_index in instruction.control_indices {
- print!("q{} ", bit_index);
- }
- for bit_index in instruction.target_indices {
- print!("q{} ", bit_index);
- }
- println!();
- }
+ fn render(&mut self) {
+ self.renderer.draw_quad(Quad::new(2, 2, 2, 2), false);
+ self.renderer.draw_quad(Quad::new(5, 10, 6, 3), true);
+ self.renderer.draw_quad(Quad::new(17, 4, 17, 10), true);
+ self.renderer.draw_quad(Quad::new(15, 7, 7, 4), false);
+
+ self.renderer.draw_vline(4, 4, 5, true);
+ self.renderer.draw_hline(3, 6, 5, false);
+
+ self.renderer.draw_text(4, 15, "This is some text.");
+ println!("{}", self.renderer.to_string());
}
}