Qt5のWebKit対応、主に描画部分に関する調査メモ。
WebKitとWebKit2の違い
Webkit2は"Webkit version 2"という意味ではなく、マルチプロセスモデルを採用した別種の存在であり、APIはWebkitと大幅に異なっている。
ただしWebkitとWebkit2は同一リポジトリ上で管理されており、コア部分であるWebCoreはWebkitとWebkit2で共通である。
QtのWebKit対応
Qt5ではWebkit2に対応したQtWebkitと、Webkitに対応したQtWebKitWidgetが存在している。
両者の違いとしては、QtWebKitはQMLからの使用が想定されており、従来のC++ APIとしてはQtWebKitWidgetを使用することになる。
C++からQtWebKitを使用するにはQQmlComponent経由で呼び出す必要がある。
QtWebKitWidget(WebKit)での描画
QWebViewはQWidgetを継承しており、QWebView::paintEventでは自身をQPaintDeviceとしてQPainterを生成して描画処理を行っている。
基本的にその他のQWidgetと同様の描画処理が行われると考えられる。
QtWebKit(WebKit2)での描画
(調査途中)
WebKit2ではUIプロセスとWebプロセスが分離しており描画データをShareableBitmap(またはGraphicsSurface)で受け渡ししている。
QtWebKitではSahreableBitmap(またはGraphicsSurface)はQImageで実装されている。
Comments
Let's comment your feelings that are more than good