fix: ASCII渲染静区bug — saturating_sub导致左/上边距读取模块边界而非空白
x < margin 时 mx 被 saturating_sub 截断为 0,导致读取 modules[0][*] 而不是渲染空白静区。 改为显式边界检查 x >= margin && x < margin+size,四边静区均为空白。
This commit is contained in:
@@ -12,12 +12,11 @@ pub fn render_ascii(qr: &QrCode, invert: bool) -> String {
|
||||
let mut result = String::new();
|
||||
for y in 0..total {
|
||||
for x in 0..total {
|
||||
let mx = x.saturating_sub(margin);
|
||||
let my = y.saturating_sub(margin);
|
||||
let is_dark = if mx < size && my < size {
|
||||
qr.modules()[my][mx]
|
||||
let in_qr = x >= margin && x < margin + size && y >= margin && y < margin + size;
|
||||
let is_dark = if in_qr {
|
||||
qr.modules()[y - margin][x - margin]
|
||||
} else {
|
||||
false
|
||||
false // 静区始终为亮色
|
||||
};
|
||||
result.push_str(if is_dark { dark_char } else { light_char });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user