- 用户态共享网络协议栈 CODE/tools/net_stack.h(eth/ARP/IPv4/ICMP/UDP-DNS/TCP static inline,轮询模型) - shell 内建 ping/curl/run 命令;ping.elf/curl.elf 对齐 net_stack.h 真实协议栈 - shell dev_mode 串口镜像(g_serial_mirror)便于自动化验证 - DSK 启动流程:firstInit.txt 双行格式(firstInit + dev_mode),dev_mode=1 触发 shell 自动回归测试 - FirstInit 完成→持久化 USER.CONF + 翻转 firstInit 0->1(保留 dev_mode) - firstInit=1 时 DSK 加载 login.elf 进行用户选择 + 密码校验后再进 desktop - 新增 CODE/login/ 登录应用、CODE/DKM/dkm_shared.h、Logo.png - ahci/e1000/virtio_net/fat32/console_fb 驱动更新;utsm serial/block/dsk_loader 调整 - build.ps1 打包 ping.elf/curl.elf 进 SATA FAT32 根目录 - 移除 CODE/tools/bash(与 shell.elf 重复)
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
"""render_embedded.py — render FirstInit Chinese strings at varied sizes"""
|
|
from PIL import Image, ImageFont, ImageDraw
|
|
|
|
ttf = "SYSTEM/system/font/simhei.ttf"
|
|
|
|
texts = [
|
|
("welcome", "欢迎使用 Deshab", 36),
|
|
("setup", "接下来让我们来引导你设置你的系统", 36),
|
|
("title", "创建你的 Deshab 账户", 24),
|
|
("computer", "计算机名", 24),
|
|
("username", "用户名", 24),
|
|
("password", "密码", 24),
|
|
("hint", "按 Enter 继续,Backspace 删除", 16), # 20 -> 16
|
|
("prefs_title", "设置系统偏好", 24),
|
|
("prefs_language", "语言", 22),
|
|
("prefs_region", "地区", 22),
|
|
("prefs_timezone", "时区", 22),
|
|
("prefs_keyboard", "键盘布局", 22),
|
|
("prefs_theme", "主题", 22),
|
|
("prefs_hint", "Enter 切换选项,方向键切换项目,鼠标点击选择", 16),
|
|
("network_title", "网络设置", 24),
|
|
("net_mode", "网络模式", 22),
|
|
("net_device", "网络设备", 22),
|
|
("net_ip", "地址获取", 22),
|
|
("net_dns", "DNS", 22),
|
|
("net_hint", "Enter 切换选项,方向键切换项目,鼠标点击选择", 16),
|
|
("privacy_title", "隐私与诊断", 24),
|
|
("done", "设置完成,请重启系统", 24), # final status
|
|
]
|
|
|
|
lines = []
|
|
lines.append("/* Auto-generated */")
|
|
lines.append("")
|
|
|
|
for name, text, size in texts:
|
|
font = ImageFont.truetype(ttf, size)
|
|
bbox = font.getbbox(text)
|
|
w = bbox[2]
|
|
h = size + 6
|
|
img = Image.new("L", (w, h), 0)
|
|
draw = ImageDraw.Draw(img)
|
|
draw.text((0, 3), text, font=font, fill=255)
|
|
pixels = list(img.tobytes())
|
|
|
|
lines.append(f"static const int g_txt_{name}_w = {w};")
|
|
lines.append(f"static const int g_txt_{name}_h = {h};")
|
|
lines.append(f"static const unsigned char g_txt_{name}[{w}*{h}] = {{")
|
|
for y in range(h):
|
|
row = ", ".join(str(pixels[y*w + x]) for x in range(w))
|
|
lines.append(f" {row},")
|
|
lines.append("};")
|
|
lines.append("")
|
|
|
|
with open("CODE/firstInit/text_bitmaps.c", "w", encoding="ascii") as f:
|
|
f.write("\n".join(lines))
|
|
|
|
print("Generated CODE/firstInit/text_bitmaps.c")
|