English: en/code-map.md
如果你第一次阅读仓库,不建议直接扎进 overlay 细节。更高效的顺序是:
src/main.rssrc/app.rssrc/config.rs和src/config/*src/overlay.rs和src/overlay/*src/settings.rs和src/settings/*src/ocr/*、src/translation/*src/pin.rs
这样能先建立“系统是怎么跑起来的”,再进入截图与标注细节。
作用:
- 解析启动模式
- 加载配置与路径
- 初始化日志
- 分发到主程序、设置窗口或调试入口
当你想知道程序为什么会进入某个模式时,从这里看最合适。
作用:
- 持有主事件循环
- 协调托盘、热键、overlay、贴图和设置窗口
- 处理配置热重载
这是“运行时调度中心”。如果问题涉及托盘菜单、热键、配置变更后行为,优先看这里。
这是 overlay 的总入口和 façade,负责:
- 导出公开类型
- 组织子模块
- 定义全局常量和高层结构
内部状态模型:
- 当前工具
- 当前选区
- 标注对象集合
- OCR/翻译显示状态
- 拖拽、调整尺寸、文字编辑等编辑态
输入处理:
- 鼠标事件
- 键盘事件
- 工具栏点击后的动作切换
如果你在改交互逻辑,通常先看这里。
主渲染与导出:
- 选区与暗层
- 标注对象渲染
- OCR/翻译覆盖层渲染
- 最终导出图片生成
底层绘图原语:
- 像素级绘制
- GDI 文本栅格化
tiny-skia抗锯齿路径- SVG 图标贴图
如果视觉效果不对,但交互逻辑没问题,通常问题在这里。
文字工具专属逻辑:
- 文字框排版
- 光标与编辑状态
- 文本样式
工具栏布局与按钮定义。
overlay 窗口的原生 Win32 部分:
- 窗口类注册
- layered surface
wndproc- cursor 切换
按职责拆为:
types.rs:配置类型与默认值compat.rs:老配置兼容paths.rs:portable / appdata 路径选择io.rs:加载与写入
如果你要加配置字段,基本都要经过这里。
按页面和支持层拆开:
theme.rs:视觉主题profiles.rs:模型相关文案和选项pages/*:每个设置页的绘制逻辑
设置页问题优先不要去 app 查,先看这里。
mod.rs:统一入口parse.rs:解析 provider 响应normalize.rs:bbox 归一化providers/*:不同 OCR provider 的协议适配
mod.rs:统一入口parallel.rs:块级并发翻译调度parse.rs:翻译响应解析providers/*:不同翻译 provider 的协议适配
src/capture.rs:抓屏与 UI 元素探测src/output.rs:复制到剪贴板、保存 PNGsrc/pin.rs:贴图窗口src/startup.rs:开机自启同步src/tray.rs:托盘与菜单src/hotkey.rs:全局热键注册src/memory.rs:截图后工作集回收