GUI的几个关键问题
作者:longwei
链接:https://www.zhihu.com/question/21219705/answer/17612611
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一般都是类似xml的树结构来描述
2. 怎么render, refresh
拿到object tree/render tree之后, 如何把这个东西画出来到framebuffer上, cpu?gpu?以什么格式?node的状态改变之后, 怎么刷新,什么时候刷新。
3. 如何管理这个tree。
clip, transparent等等属性怎么处理, layout怎么管理,parent关掉了怎么处理子节点? ...
4. 用户点击这里该怎么办?(user event handling)
无非这几种办法
function pointer(Callback) 或者 signal/slot 或者observer interface+ registration。
5. event handle (system event handling)
这是比4更广义的问题,
a. input device trigged, 发IRQ, kernel处理, 丢给framework的handler.
b. 打包放入 event queue.
c. loop engine dispatches event: (key events sent to widget has the focus, mouse event to widget under cursor).
d. if target dont have handler for this event, bubble up to the root node until someone accpet it.
5. MVC 的具体细节和jargon
6. 多线程, IPC, shared memory问题
链接:https://www.zhihu.com/question/21219705/answer/17612611
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
主要把几个关键问题弄清楚,每个框架都有不同的方案解决这几个问题。
1. 怎么描述界面。一般都是类似xml的树结构来描述
2. 怎么render, refresh
拿到object tree/render tree之后, 如何把这个东西画出来到framebuffer上, cpu?gpu?以什么格式?node的状态改变之后, 怎么刷新,什么时候刷新。
3. 如何管理这个tree。
clip, transparent等等属性怎么处理, layout怎么管理,parent关掉了怎么处理子节点? ...
4. 用户点击这里该怎么办?(user event handling)
无非这几种办法
function pointer(Callback) 或者 signal/slot 或者observer interface+ registration。
5. event handle (system event handling)
这是比4更广义的问题,
a. input device trigged, 发IRQ, kernel处理, 丢给framework的handler.
b. 打包放入 event queue.
c. loop engine dispatches event: (key events sent to widget has the focus, mouse event to widget under cursor).
d. if target dont have handler for this event, bubble up to the root node until someone accpet it.
5. MVC 的具体细节和jargon
6. 多线程, IPC, shared memory问题
我思故我在