Tiled Backing Store(一)

1. 概述

下列图片从层次的角度解释了什么是Tiled Backing Store:

  • viewport 视图端口:代表用来显示网页内容的区域。Qt里,实际上就是QWidget。
  • Tiled backing store: 可以看作是off-screen的pixmap的缓冲区。为了滚动、缩放操作的平滑,它覆盖的区域总是比viewport要大。
  • Covered content :代表被Tiled backing store覆盖的页面内容。如果需要,这部分内容可以缩放。
  • Page content:指的是Webkit渲染的整个frame 内容。

参考QtWebKitTiling可以获得更多的关于Tiled
backing store技术方面的知识。

2. Tiled Backing Store

下面的图显示了TiledBackingStore在QtWebkit中和Tile, TiledBackingStoreClient,Frame的关系:

2.1 Tile

在绘制网页到UI widget时,Tile是最小绘制单元。每个tile按坐标索引。Tile的布局可以映射为2维矩阵。例如左上可以用(0,0)来索引等等。

Tile可以设置为无效。如果WebCore::FrameView执行布局(layout)操作,无效操作将会被调用。无效操作唯一要做的事情就是去计算重绘引起的脏区域,这些脏区域以后被会Qt的画笔绘制。

tile采用双缓冲, 这使得在绘制时它可以避免闪烁等问题。

2个pixmap缓冲区都由tile维护。在目前Qt的实现里,所有的缓冲区被同时同步更新,因此并不需要独立的前后缓冲区(译者注:即不需要双缓冲)

时间: 2024-12-28 20:22:30

Tiled Backing Store(一)的相关文章

Tiled Backing Store (二)

2.2 前缓冲区(Front buffer) 通过QPinter来绘制tile实际上就是要绘制存储在前缓冲区里的pixmap.没有前缓冲区的tile意味着它不需要绘制. 2.3 后缓冲区(Backend Buffer) 后缓冲区充当tile内容的屏下(off-screen)后缓冲区并且可以采用Qt的画笔绘制到Qt widget上.在更新后缓冲区的过程中(In the process of updateBackBuffer),对于无效操作(invalidate)引起的脏区域,WebKit绘制脏区域

Tiled Backing Store(三)

3.Qt WebKit之QGraphicsWebView 本节叙述如何通过Qt的QGraphicsWebView实现分片底衬存储区(tiled backing store). 如上静态类图所示,只有实现了分片底衬存储区客户端(TiledBackingStoreClient)的接口的WebCore::Frame才拥有分片底衬存储区实例.其他类只能通过WebCore::Frame发消息给分片底衬存储区. QGraphicsWebView是QGraphicsWidget的子类. 它被用于显示屏幕上的可

Tiled Backing Store(四)

3.3 分片底衬仓库(TiledBackingStore)的可见区域矩形 如下图所示,WebCore::Frame::tiledBackingStoreVisibleRect最终请求QGraphicsWebView给出可见区域: 3.4 使分片底衬仓库无效 如果frame内容所在的矩形变脏了,WebCore::Frame会使这个矩形变成无效区域,同时告诉分片底衬仓库使之无效.分片底衬仓库使无效的操作完成, 它就会安排一次缓冲区更新任务. 如下列序列图所示,分片底衬仓库使无效的操作最终会触发一次Q

Backing Store ( 五 )的创建

不是所有的RenderLayer都需要创建它的Backing Store,只有网页的RenderObject树之RenderLayer满足如下条件: 1 Transform:几何变换 2 Video:页面有<video> 3 Canvas: 页面有<canvas> 4 Plugin 5 Frame 6 3DTransforms 7 Animation 8 Filters:CSS过滤器 9 Position:CSS之定位 10 clipsCompositingDescendants:

webkit内核分析之 Frame

参考地址:http://blog.csdn.net/dlmu2001/article/details/6164873 1.    描述 Frame类是WebCore内核同应用之间联系的一个重要的类.它有点像设计模式中的Façade,将内核的各个不同的零配件组装在了一起,但又不是Façade,因为用户很多时候还是要直接去操作里面的组件.除了设计上的考虑,Frame还有语法上的意义,它对应于Page里面的帧. 看一下类定义: 1 class Frame : public RefCounted<Fra

External Configuration Store Pattern 外部配置存储模式

Move configuration information out of the application deployment package to a centralized location. This pattern can provide opportunities for easier management and control of configuration data, and for sharing configuration data across applications

iSCSI配置

iSCSI介绍 几种存储的架构: 直接存取 (direct-attached storage):例如本机上面的磁盘,就是直接存取设备: 透过储存局域网络 (SAN):来自网络内的其他储存设备提供的磁盘(block device) 网络文件系统 (NAS):来自 NAS 提供的文件系统,只能直接使用,不可进行格式化(NFS/SMB等). iSCSI架构将存储和使用主机分为两个部分: iSCSI target:就是储存设备端,存放磁盘或 RAID 的设备,目前也能够将 Linux 主机仿真成 iSC

WPF 自定义控件 CropingImage 防QQ头像 编辑功能

1 <ControlTemplate x:Key="reSizeThumb" TargetType="{x:Type Thumb}"> 2 <Border Background="{DynamicResource BlueBrush}"> 3 </Border> 4 </ControlTemplate> 5 6 <ControlTemplate x:Key="moveThumb&qu

There is insufficient memory for the Java Runtime Environment to continue问题解决

在linux系统下长时间进行性能测试,连续几次发生服务器假死无法连接上的情况,无奈只能重启服务器.在测试路径下发现hs_err_pid17285.log文件,打开文件查看其主要内容如下: # There is insufficient memory for the Java Runtime Environment to continue.# Cannot create GC thread. Out of system resources.# Possible reasons:#   The sy