use qr2term::matrix::Matrix;
use qr2term::render;
pub struct Qr {
matrix: Matrix<render::Color>,
}
const QUIET_ZONE_WIDTH: usize = 1;
impl Qr {
pub fn new<D: AsRef<[u8]>>(data: D) -> Result<Self, String> {
let raw = qr2term::qr::Qr::from(&data)
.map_err(|err| format!("Error: Cannot print QR code: {}", err))?;
let mut matrix = raw.to_matrix();
matrix.surround(QUIET_ZONE_WIDTH, render::QrLight);
Ok(Qr { matrix })
}
pub fn print(&self) -> (usize, usize) {
let renderer = render::Renderer::default();
renderer.print_stdout(&self.matrix);
(renderer.width(&self.matrix), renderer.height(&self.matrix))
}
}