roka-qr 0.1.0

Zero-dependency QR code encoder + decoder with built-in PNG/PBM I/O — pure Rust, no unsafe.
Documentation
//! Matrix → Bitmap:渲染时控制放大倍数和 quiet zone 宽度。
//!
//! - `scale`:每个模块放大成 scale × scale 像素
//! - `quiet`:四周白色边框宽度(以模块数计)。QR 标准建议 ≥ 4。

use super::matrix::Matrix;
use crate::pbm::Bitmap;

pub fn render_to_bitmap(matrix: &Matrix, scale: usize, quiet: usize) -> Bitmap {
    let n = matrix.size;
    let dim_modules = n + 2 * quiet;
    let dim_pixels = dim_modules * scale;
    let mut bm = Bitmap::new(dim_pixels, dim_pixels);
    for r in 0..n {
        for c in 0..n {
            let v = matrix.get(r, c);
            if !v {
                continue; // 白色像素已经是初始值
            }
            let y0 = (quiet + r) * scale;
            let x0 = (quiet + c) * scale;
            for dy in 0..scale {
                for dx in 0..scale {
                    bm.set(x0 + dx, y0 + dy, true);
                }
            }
        }
    }
    bm
}