Compression API
#include "webview/compression.hpp"。资源压缩力度枚举,仅构建期 gen_assets_rc.py 扫描源码 Compression::X token 消费。
枚举
cpp
enum class Compression { None, Fast, Normal, Max };| 值 | LZMA2 preset | 说明 |
|---|---|---|
None | — | 不压缩(默认,per-file RCDATA,mode=raw) |
Fast | 1 | 最快,压缩率低 |
Normal | 5 | 平衡 |
Max | 9 | 最慢,压缩率最高 |
level 映射
cpp
inline int compressionLevel(Compression c);
// Fast→1, Normal→5, Max→9, None→0(store,理论不走到)配置点
Window::Opts::compression(默认 None)+ OptsBuilder::compression(c):
cpp
webview::Window::opts()
.url(L"src/assets/html/index.html")
.compression(webview::Compression::Max);构建期扫描
gen_assets_rc.py 正则 Compression::(None|Fast|Normal|Max) 扫源码字面量,决定 py7zr LZMA2 preset。运行期不读此枚举——读 manifest mode 字段分流(raw / 7z)。
非 None 时:py7zr 打 assets.7z,单条 rASSET_7Z RCDATA,manifest mode=7z。 None 时:per-file RCDATA,mode=raw(向后兼容)。
archive.hpp
运行期解压(框架内部用,消费方一般不直接调):
cpp
bool extract7zToMemory(const void* data, std::size_t len, AssetCache& out);
// AssetCache = std::unordered_map<std::string, std::vector<uint8_t>>用 vendored 7z Dec SDK 解 .7z 内存块到 map。失败返 false。