更新:RenderLayer树的绘制对RenderObject的绘制。同一时候补足绘制阶段的描写叙述。

       QtWebkit里,QWebView,QWebPage和QWebFrame的关系例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGljaHdlaTE5ODM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

       QtWebKit从绘制事件(Qt的paint)发出,到WebCore里面的RenderLayers树的绘制具体流程分析例如以下。

       首先是QWidget收到paintEvent,发送给Qt的QWebView,在QWebView里。创建Qt的画笔QPainter,并基于此画笔创建画图上下文:GraphicContext,然后使用此画笔再调用Qt的QWebFrame的渲染函数render把这个QWebFrame绘制到裁剪区里。在QWebFrame的render函数里。再调用QWebFramePrivate的绘制相对坐标函数:renderRelativeCoords,后者就会计算每个裁剪区和QWebView的交集、同一时候调用FrameView的绘制内容函数:paintContents。

         FrameView的paintContents函数内部就会開始绘制RenderLayer--通过paintLayer函数,此函数自己不干活,实际调用的是RenderLayer自己的绘制函数:RenderLayer::paint,此RenderLayer的函数内部又会调用自己的paintLayer函数,这里才是重中之重。

         在paintLayer函数里,主要分成三件事:1 做几何表换:比方平移、翻转、旋转等等;2 绘制RenderLayer的内容。3 绘制RenderLayer的反射。

后面两件事情事实上都是调用与本RenderLayer关联的RenderObject来绘制,每一层的绘制都包含:绘制背景、绘制前景、绘制外边框、绘制掩模、绘制z坐标为负数的RenderLayer、以及z坐标为正数的RenderLayer--即paintList。这paintLayer是递归调用的。具体序列图例如以下:

QtWebkit里RenderLayer树的绘制具体流程分析的更多相关文章

  1. Android View 绘制刷新流程分析

    Android中对View的更新有很多种方式,使用时要区分不同的应用场合.1.不使用多线程和双缓冲      这种情况最简单,一般只是希望在View发生改变时对UI进行重绘.你只需显式地调用View对 ...

  2. 源码分析篇 - Android绘制流程(一)窗口启动流程分析

    Activity.View.Window之间的关系可以用以下的简要UML关系图表示,在这里贴出来,比较能够帮组后面流程分析部分的阅读. 一.Activity的启动流程 在startActivity() ...

  3. 【转载】Android 中 View 绘制流程分析

    创建Window 在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建Window,将一个View add到WindowManager时,Window ...

  4. 理解WebKit和Chromium: 硬件加速之RenderLayer树到合成树

    转载请注明原文地址:http://blog.csdn.net/milado_nju ## 概述 在前面的章节中,笔者介绍了WebKit渲染引擎是如何有HTML网页构建DOM树.RenderObject ...

  5. elasticsearch indices.recovery 流程分析(索引的_open操作也会触发recovery)——主分片recovery主要是从translog里恢复之前未写完的index,副分片recovery主要是从主分片copy segment和translog来进行恢复

    摘自:https://www.easyice.cn/archives/231 elasticsearch indices.recovery 流程分析与速度优化 目录 [隐藏] 主分片恢复流程 副本分片 ...

  6. Cocos2dx开发之运行与渲染流程分析

    学习Cocos2dx,我们都知道程序是由 AppDelegate 的方法 applicationDidFinishLaunching 开始,在其中做些必要的初始化,并创建运行第一个 CCScene 即 ...

  7. Cocos2d-x3.3RC0的Android编译Activity启动流程分析

    本文将从引擎源代码Jni分析Cocos2d-x3.3RC0的Android Activity的启动流程,以下是具体分析. 1.引擎源代码Jni.部分Java层和C++层代码分析 watermark/2 ...

  8. 第2章 rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...

  9. rsync算法原理和工作流程分析

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...

随机推荐

  1. STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发

    这里我主要说一下如何做一个USB下位机,这里主要分3部分:1.建立工程:2.添加报文描述符:3.数据的传输.这里就不讲USB的理论知识了,有想要了解的自行百度一下就可以了. 建立工程:工程建立参考:h ...

  2. 2015 Multi-University Training Contest 6 hdu 5358 First One

    First One Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  3. apk去广告工具(利用apktool去除apk文件里的广告)

    基本知识 apk安装包的文件结构 以知名桌面软件“LauncherPro”为例,apk安装包文件目录: 文件目录如下: - META-INF - res - anim - color - drawab ...

  4. 应用Spring和Hibernate(C3P0数据池)写数据库交互项目

    一.xml的配置文件(application.xml) <?xml version="1.0" encoding="UTF-8"?> <bea ...

  5. java ee5的新特性

    1.标注 一种元数据,作用分为三类:编写文档@Document.代码分析@Deparecated(过时的)和编译检查@override(重写) 2.EJB3 EJB2的升级版,商业化的java bea ...

  6. iOS 常见小问题

    1. iOS 编译后上下有黑边 ? 缺少启动图片 2.Failed to instantiate the default view controller for UIMainStoryboardFil ...

  7. 千万别相信鲁大师的硬件測温柔CPU測温功能!!

    非常多人本来随手安装的一个软件. 相信也信任得过它 . 这下让我測试对它失望了.没想到鲁大师这个測温功能实在太搓了!! 白白浪费了我一晚上,  搞来了硅胶 ,弄了几遍  , 还是一样, 还以为买了水货 ...

  8. vue 路由demo2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. bzoj2748: [HAOI2012]音量调节(背包)

    2748: [HAOI2012]音量调节 题目:传送门 题解: sb省选题..呵呵一眼背包: f[i][j]表示第i时刻能否为音量j 代码: #include<cstdio> #inclu ...

  10. zzulioj--1715--土豪银行(贪心)

     1715: 土豪银行 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 456  Solved: 123 SubmitStatusWeb Board ...