如果你想实现一个GUI框架
So you want to write a GUI framework
当我们讨论GUI
的时候我们在讨论什么?
根据一个GUI框架是否和平台/环境紧密集成,可以将GUI框架划分成两个阵营:
为游戏、嵌入式设备和Web应用设计的框架 提供应用层面需要的所有功能,包括和硬件交互、接收原始的事件流并将之呈送至各种类型的缓冲区和界面;
为桌面应用设计的框架:需要考虑兼容不同平台的API、设计模式和规范。
游戏和嵌入式设备的GUI
游戏和嵌入式设备的GUI框架,其中大部分可以从系统集成的角度来考虑:游戏和嵌入式应用程序不必做那么多,因为在只有一个window
的场景下,很多功能都需要应用自己去完成。
原生客户端应用的构成
渲染窗口(Windowing)
Tabs: 标签页
Menus: 菜单栏
Painting: 绘图
Animation: 动画
Text: 文本
The compositor: 排版
Web views: 渲染HTML页面
处理输入(Handling input)
Pointer:鼠标
Keyboard:键盘
便利性(Accessibility): 大量辅助技术的总称
国际化与本土化(Internationalization and Localization)
其他一些常见和不常见的特性
将以上所有要素集成起来
设计跨平台的API;
不要拒绝 web view;
原生的视觉和感觉;
MultiTool: 带有实时Web界面的系统监控工具
[Media] System Tools with real-time Web UI ????️ ????
MultiTool:
项目使用RillRate(一个为机器人、微服务和IoT设备设计的实时UI工具),实现了对CPU、内存和系统信息的监控,将数据可视化并实时呈现在web界面上。
TODO:
网络监控器
磁盘监控器
进程监控器
其他一些惊喜
gzp: v0.3.0 现在支持多线程压缩snappy
gzp: v0.3.0 now with support for parallel compression with Snappy
关于gzp:
gzp是一个用Rust实现的多线程压缩编码库,目前支持Gzip格式(依赖flate2)和snappy格式(依赖rust-snappy)
链接
github:https://github.com/sstadick/gzp
crate: https://crates.io/crates/gzp
FeoBlog(类似Tumblr的分布式社交网络) v0.6.0 发布
FeoBlog (A distributed, Tumblr-like social network in Rust) v0.6.0 Released
新特性:
支持OGP(Open Graph Protocol)协议;
更便捷地分享链接;
db prune
和db usage
命令;
改进:
更快的在服务器之间同步数据;
更好的在浏览器上缓存静态文件;
支持登陆用户设置背景颜色;
Bug修复:
切换页面时渲染组件(的bug);
一周一库(Rust Module of the Week):std::fs Part 2
std::fs (Part 2)
本周继续讲解(std::fs Part 1) Rust 标准库中std::fs
模块
std::fs
是Rust标准库中操作文件系统的模块,包括创建、读取、更新、删除等常见操作。由于不同操作系统支持的API不尽相同,本文仅展示了与平台无关的一些例子:
通过修改时间(mtime)来聚合相同年份、月份乃至日期的文件;
硬链接(hard link)一个路径至另一个路径;
递归创建目录;
递归删除文件夹;
拷贝文件;
From 日报小组 odd-cat
社区学习交流平台订阅:
Rust.cc 论坛: 支持 rss
微信公众号:Rust 语言中文社区