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();
|
let mut result = String::new();
|
||||||
for y in 0..total {
|
for y in 0..total {
|
||||||
for x in 0..total {
|
for x in 0..total {
|
||||||
let mx = x.saturating_sub(margin);
|
let in_qr = x >= margin && x < margin + size && y >= margin && y < margin + size;
|
||||||
let my = y.saturating_sub(margin);
|
let is_dark = if in_qr {
|
||||||
let is_dark = if mx < size && my < size {
|
qr.modules()[y - margin][x - margin]
|
||||||
qr.modules()[my][mx]
|
|
||||||
} else {
|
} else {
|
||||||
false
|
false // 静区始终为亮色
|
||||||
};
|
};
|
||||||
result.push_str(if is_dark { dark_char } else { light_char });
|
result.push_str(if is_dark { dark_char } else { light_char });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user