mirror of
https://github.com/m1ngsama/TUT.git
synced 2025-12-26 12:04:11 +00:00
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]
140 lines
3.1 KiB
Markdown
140 lines
3.1 KiB
Markdown
# 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
|