加载中…
正文 字体大小:

chromium源码学习笔记(7) -- UI

(2013-06-03 20:26:00)
标签:

it

ui

分类: webkit
    chromium使用的是自己开发的UI框架 — views,官方有四篇文档介绍了UI系统:
    views framework:ui框架及view介绍
    views Windowing system:使用view创建对话框和窗口
    Aura:chrome的下一代硬件加速ui框架
    native controls:本地控件

    chromium的ui框架是跨平台的,但是支持得最好的还是windows平台。chromium中与ui相关的所有控件,几乎都继承自View(views系统的基础类和接口定义在src/ui/views),通过树形结构,views组成一个控件或一个页面。而widget作为view的容器,负责消息的传递工作。

    Widget
    Widget是views树的根,是一个本地窗口。Widget从windows系统接收消息,并转换为views系统认识的信息,传递给RootView,RootView则负责分发消息。
    渲染由每个View负责,绘制自己的区域。这样,随着消息的分发,views树中的各区域维护各自的绘制,最终在一个统一的画布上形成最终的绘制内容。绘制由Skia和GDI共同完成,GDI负责文本绘制,其他由Skia完成。
    chromium将不同平台的Widget封装了一个统一接口NativeWidgetPrivate,并将不同平台的消息做了抽象,如下图所示。
chromium源码学习笔记(7) <wbr>-- <wbr>UI
    
    View
    View则是Widget下的控件和页面了。与windows普通窗口的概念相对应,View也分为客户区和非客户区,具体分类为:
    NonClientView:非客户区,如边框等,是其他两种View的父类;
    NonClientFrameView:非客户区内容,如标题栏,关闭按钮等;
    ClientView:客户端内容。
    Widget和View的关系如下图所示。
chromium源码学习笔记(7) <wbr>-- <wbr>UI

    Controls
    还有一些ui元素不是由View来绘制,比如按钮、编辑框等控件,它们直接基于windows本地控件封装,且融合与Widget-View结构。

    chromium的UI框架还是很值得研究的,有人甚至基于此构造了一个通用ui库。本篇只做了简单介绍,更详细的内容请参考:Google Chrome源码剖析【四】:UI绘制Chrome学习笔记(二):UI组件,皮肤引擎 —— 基础设施篇Chrome学习笔记(三):UI组件,皮肤引擎 —— 控件库

    关于chromium源码第一阶段的学习到此为止,主要目标是学习chromium代码框架上的设计,知道chromium是怎样工作的。下一阶段主要关注源码,从源码角度继续深入之前的理解,并学习chromium在细节上的精彩设计。

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有