TUT/NEXT_STEPS.md
m1ngsama d80d0a1c6e feat: Implement TUT 2.0 with new rendering architecture
Major features:
- New modular architecture with Terminal, FrameBuffer, Renderer layers
- True Color (24-bit) support with warm, eye-friendly color scheme
- Unicode support with proper CJK character width handling
- Differential rendering for improved performance
- Page caching (LRU, 20 pages, 5-minute expiry)
- Search functionality with highlighting (/, n/N)
- Form rendering (input, button, checkbox, radio, select)
- Image placeholder support ([alt text] or [Image: filename])
- Binary data download via fetch_binary()
- Loading state indicators

New files:
- src/browser_v2.cpp/h - Browser with new rendering system
- src/main_v2.cpp - Entry point for tut2
- src/render/* - Terminal, FrameBuffer, Renderer, Layout, Image modules
- src/utils/unicode.cpp/h - Unicode handling utilities
- tests/* - Test programs for each module

Build with: cmake --build build_v2
Run: ./build_v2/tut2 [URL]
2025-12-26 14:56:17 +08:00

140 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TUT 2.0 - 下次继续从这里开始
## 当前位置
- **阶段**: Phase 4 - 图片支持
- **进度**: 基础功能完成 (占位符显示)
- **最后完成**: 图片占位符渲染 + 二进制数据下载支持
## Phase 4 已完成功能
### 图片占位符 (已完成)
- `<img>` 标签解析和渲染
- 显示 alt 文本或文件名
- 格式: `[Example Photo]``[Image: filename.jpg]`
### 二进制下载支持 (已完成)
- `HttpClient::fetch_binary()` 方法
- `BinaryResponse` 结构体
### ASCII Art 渲染器框架 (已完成)
- `ImageRenderer`
- 支持 ASCII、块字符、盲文三种模式
- PPM 格式解码(内置,无需外部库)
## 启用完整图片支持
要支持 PNG、JPEG 等常见格式,需要下载 stb_image.h:
```bash
# 下载 stb_image.h 到 src/utils/ 目录
curl -L https://raw.githubusercontent.com/nothings/stb/master/stb_image.h \
-o src/utils/stb_image.h
# 重新编译
cmake --build build_v2
```
## Phase 3 已完成功能
### 页面缓存
- LRU缓存最多20个页面
- 5分钟缓存过期
- 刷新时跳过缓存 (`r` 键)
- 缓存页面状态栏显示图标
### 差分渲染优化
- 批量输出连续相同样式的字符
- 减少光标移动次数
- 只更新变化的单元格
### 加载状态指示
- 连接状态、解析状态
- 缓存加载、错误状态
## Phase 2 已完成功能
### 搜索功能
- `/` 触发搜索模式
- `n`/`N` 跳转匹配
- 搜索高亮
### 链接导航完善
- Tab切换时自动滚动到链接位置
### 窗口大小调整
- 动态获取尺寸
- 自动重新布局
### 表单渲染
- 输入框、按钮、复选框等
## 文件变更 (Phase 4)
### 新增文件
- `src/render/image.h` - 图片渲染器头文件
- `src/render/image.cpp` - 图片渲染器实现
### 修改的文件
- `src/dom_tree.h` - 添加 img_src, img_width, img_height 属性
- `src/dom_tree.cpp` - 解析 img 标签的 src, width, height 属性
- `src/render/layout.h` - 添加 layout_image_element 方法
- `src/render/layout.cpp` - 实现图片布局
- `src/http_client.h` - 添加 BinaryResponse, fetch_binary
- `src/http_client.cpp` - 实现 fetch_binary
- `CMakeLists.txt` - 添加 image.cpp
## 下一步要做
### 实现真正的 ASCII Art 图片渲染
1. 下载 stb_image.h
2. 在 browser_v2.cpp 中添加图片下载逻辑
3. 调用 ImageRenderer 渲染图片
4. 将 ASCII art 结果插入布局
### 其他可选功能
- 异步HTTP请求
- 书签管理
- 更多表单交互
## 构建命令
```bash
# 配置
cmake -B build_v2 -S . -DCMAKE_BUILD_TYPE=Debug
# 编译全部
cmake --build build_v2
# 运行TUT 2.0
./build_v2/tut2 # 显示帮助
./build_v2/tut2 https://example.com # 打开网页
# 测试程序
./build_v2/test_terminal
./build_v2/test_renderer
./build_v2/test_layout
```
## 快捷键
| 键 | 功能 |
|---|---|
| j/k | 上下滚动 |
| Ctrl+d/u | 翻页 |
| gg/G | 顶部/底部 |
| Tab | 下一个链接 |
| Enter | 跟随链接 |
| h/l | 后退/前进 |
| / | 搜索 |
| n/N | 下一个/上一个匹配 |
| r | 刷新(跳过缓存)|
| :o URL | 打开URL |
| :q | 退出 |
| ? | 帮助 |
## 恢复对话时说
> "继续TUT 2.0开发"
---
更新时间: 2025-12-26