╭─────────────╮ │scroll to top│ ╰─────────────╯ ╭ SubTitle.zig ─────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │http│ ssh │ │ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
423 } 424 first = false; 425 426 for (0..2) |text_row| { 427 for (0..2) |text_col| { 428 var pattern: u6 = 0; 429 for (0..3) |sub_row| { 430 for (0..2) |sub_col| { 431 const row_idx = text_row * 3 + sub_row; 432 const col_idx = text_col * 2 + sub_col; 433 if (on[row_idx][col_idx]) { 434 pattern |= @as(u6, 1) << @intCast(sub_row * 2 + sub_col); 435 } 436 } 437 } 438 const cp = sextantCodepoint(pattern); 439 var utf8_buf: [4]u8 = undefined; 440 const len = try std.unicode.utf8Encode(cp, &utf8_buf); 441 try rows[text_row].appendSlice(allocator, utf8_buf[0..len]); 442 } 443 } 444 } 445 446 var out: std.ArrayList(u8) = .empty; 447 errdefer out.deinit(allocator); 448 try out.appendSlice(allocator, rows[0].items); 449 try out.append(allocator, '\n'); 450 try out.appendSlice(allocator, rows[1].items); 451 return out.toOwnedSlice(allocator); 452 } 453