【UI引擎】DirectUI、WebCore、Java Swing图形引擎渲染机制之串联分析

来源:互联网 发布:科学引文数据库源期刊 编辑:程序博客网 时间:2024/06/05 22:48

一、Java Swing引擎        

      1、Swing组件分类:标量型组件(即单一的组件,如JButton)和符合型组件(如JComboBox)。
      2、可行性类库设计分析

             Swing架构中的渲染器MVC结构如下,(2)

            

             前提条件:theApp来启动,并逐一构建类对象。

             基本架构方式:new对象后,构造默认的链指针(也可以是在Attach时,构建Render),实现委托和Render。优越之一:Renderer作为父类对象,子类可以派生MyRender,设置自己的MyRender,此时类似模板模式。

             最后,调用父类的super.Render(...),此时传参数,控制父类函数写显存,以实现特殊效果。
             组织规则:当WM_PAINT消息来临时,找到相应的Object,调用其Render()函数。

       3、JTable激活编辑器交互分析(1)

            

           用OpenGL的状态机模型实现。

二、WebCore引擎

        

         解析html,构建DOM树,采用节点变换,遍历节点,进行渲染。这时,父类可以提供同一个接口函数,如:       

for (RenderObject* child = firstChild(); child; child = child->nextSibling()) {       doDraw();            //virtual,进行接口变换}  

          若是交换节点次序,则提供相应的交换绘制函数,由交换节点函数调用。

三、DirectUI引擎

       1、基本机制

              解析xml GUI布局。

        核心机制一:消息分发 (6)        

CPaintManageerUI::MessageHandler(){ //....case WM_LBUTTONDOWN:{     POINT pt = {GET_X_LAPAM(lParam),GET_Y_LPARAM(lParam)};     m_ptLastMousePos = pt;     CControlUI* pControl = FindControl(pt);     //...     TEventUI event = { 0 };     event.Type = UIEVENT_BUTONDOWN;     pControl->Event(event);}break;}

         数学分析:消息顺利到达 = f(event);  //此时,局部变量命令格式是:字母全部小写。  

         第二种写法:

       
      2、渲染顺序          

virtual void DoPaint() //虚函数,统一派生类的接口命名{PaintBkColor()PaintBkImage()PaintStatusImage()PaintText()PaintBorder()}

      3、类库架构

        

参考:0、Surfin' Safari-Blog Archive>>WebCore Rendering I【】

1、java swing渲染器

2、Java Swing中渲染器机制的研究

3、WebCore中的渲染机制(一):基础知识

4、DOM树-Render树-RenderLayer树对应关系

5、DOM结点的渲染(attach)

6、DirectUI>>Soul Apogee【】

7、DUI中的函数说明

8、DirectUI界面渲染流程

9、DUiLib源码分析——第一篇UIManager

10、Duilib讲解

11、WIN32界面开发之三:DUI雏形开发(一)

12、duilib库分析:消息流程分析

13、浏览器是怎样工作的:渲染引擎,HTML解析(连载二)

0 0
原创粉丝点击