rmux 0.4.3

A local terminal multiplexer with a tmux-style CLI, daemon runtime, Rust SDK, and ratatui integration.
use qrcode::{Color as QrColor, EcLevel, QrCode};

pub(super) fn half_block_qr(data: &str) -> Result<Vec<String>, qrcode::types::QrError> {
    let code = QrCode::with_error_correction_level(data.as_bytes(), EcLevel::L)?;
    let quiet_zone = 2usize;
    let size = code.width() + quiet_zone * 2;
    let mut lines = Vec::new();

    for y in (0..size).step_by(2) {
        let mut line = String::new();
        for x in 0..size {
            let top = qr_dark(&code, quiet_zone, x, y);
            let bottom = qr_dark(&code, quiet_zone, x, y + 1);
            line.push(match (top, bottom) {
                (false, false) => ' ',
                (true, false) => '',
                (false, true) => '',
                (true, true) => '',
            });
        }
        lines.push(line);
    }

    Ok(lines)
}

fn qr_dark(code: &QrCode, quiet_zone: usize, x: usize, y: usize) -> bool {
    if x < quiet_zone || y < quiet_zone {
        return false;
    }
    let qx = x - quiet_zone;
    let qy = y - quiet_zone;
    qx < code.width() && qy < code.width() && code[(qx, qy)] == QrColor::Dark
}