Skip to content

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)
Fast1最快,压缩率低
Normal5平衡
Max9最慢,压缩率最高

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。