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-10-15 18:59:54