留素是桌面端照片拼版工具:把多张照片快速排到 6 英寸相纸上,导出后打印、裁切、留存。
界面目标:干净、丝滑、灵动、高级。旧版 UI 不作参考,仅作反例;设计质量是本轮重做的重要目标。
产品本质(现阶段):把照片导入,提供拼版布局、边框与裁切,产出可打印的页面。定位随需求演进,不固定——单张、二、四、九只是首批布局预设,不是产品边界(见 ADR-0006)。
- 快速导入照片。
- 把导入的照片排进相纸页面:选择拼版布局(首批预设:单张全幅、二、四、九,模型可扩展),并对每个槽位做旋转、镜像、填充、裁切偏移和替换。
- 叠加可扩展边框,例如胶片尺孔、白边、拍立得边、裁切辅助线。
- 保证预览、导出、打印前检查一致。
- 输出适合打印的图片文件。
- 6 英寸相纸页面模型(档案化尺寸,不写死,见 ADR-0003)。
- 通用槽位布局模型,首批预设:单张全幅、二、四、九(ADR-0006)。
- 图片导入、槽位填充、槽位编辑。
- 多页连续排版:每页独立模板,编辑中可随时更换;支持批量创建空页(ADR-0013)。
- 背景色或基础背景设置。
- 多档位 PPI 导出图片(见 ADR-0004)。
- 最小项目保存 / 打开能力。
- 最小测试与样张验证。
- 不做复杂修图:磨皮、滤镜市场、调色曲线、局部修复。
- 不做云同步、账号系统、素材商城。
- 不做大型图库管理。
- 不做移动端。
- 不做打印机直连,只导出图片文件(ADR-0004)。
- 暂不做边框系统与胶片尺孔,架构已预留(ADR-0005)。
- 不原样保留旧版 UI;UI 重新设计。
- 不把旧版代码视为可直接复制的事实来源。旧留素项目快照已删除——因为想大幅度重构,防止受到旧版影响,决定删除(ADR-0012)。
- 模板负责照片槽位布局;边框负责装饰、孔洞、线条、留白、胶片尺孔等外观层;裁切标记负责打印裁切辅助。理由见 ADR-0001。
- 渲染引擎负责把页面模型转换成预览图、缩略图和导出图,三者共享同一套几何事实,见尺寸与渲染规则。
- UI 只负责操作入口和状态展示,不是最终几何真相。
- 尺寸不写死:6 英寸为首个页面档案;打印机档案化,预留尺寸校准功能(ADR-0003)。
- 导出 PPI 多档位:300 / 600 / 自定义(72–1200),默认 300(ADR-0004)。
- 首版只导出图片,不做打印机直连(ADR-0004)。
- 胶片尺孔暂不开发,边框系统整体延后(ADR-0005)。
- 界面追求薄厚度、半透明硬质材料、克制高光与柔影;照片、纸面及页缩略图稳定清楚,装饰不进入导出。RhineLabUI 和效果图只作局部质感参考,不固定最终分区、不照搬布局或功能,也不强制全控件玻璃化(ADR-0015)。
- 换模板保全照片与编辑状态,溢出照片进入相邻新增页(ADR-0013)。模板库支持搜索、滚动与 JSON 目录导入,当前四个模板只是起点。导出控件由能力定义生成,当前选项不构成最终清单(ADR-0014)。
- 尺寸校准功能:生成校准矩形 → 打印实测 → 输入实测值 → 软件计算偏移并保存到对应打印机档案。
- 打印机档案扩展:更多机型与相纸尺寸。
- 边框系统:胶片尺孔、白边、拍立得边等(架构见 ADR-0001)。
- 技术栈:Qt 6(QML)+ C++17 + CMake + Ninja(ADR-0007)。
- 需要 Qt 6.5+ 桌面套件(含编译工具链、CMake、Ninja)。
- 配置:
cmake --preset windows-dev;预设通过环境变量LIUSU_QT_DIR指向本机 Qt 目录(形如<Qt根>/6.x.y/<套件>),或在本机CMakeUserPresets.json(已被 Git 忽略)写入绝对路径,不入库。 - 构建:
cmake --build --preset windows-dev;测试:ctest --preset windows-dev。 - 构建产物在
build/,不进入仓库。
- 文档入口与路由:docs/README.md。
- AI 协作入口:AGENTS.md。
- 当前进度、验证及所有者验收记录:总跟踪 Issue。
- 界面组织、控件、素材与职责:界面设计基准。