diff options
Diffstat (limited to 'WebKitTools/QtLauncher/webview.cpp')
-rw-r--r-- | WebKitTools/QtLauncher/webview.cpp | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/WebKitTools/QtLauncher/webview.cpp b/WebKitTools/QtLauncher/webview.cpp index d08da4c..443fc3e 100644 --- a/WebKitTools/QtLauncher/webview.cpp +++ b/WebKitTools/QtLauncher/webview.cpp @@ -33,6 +33,64 @@ #include "webview.h" #include <QtGui> +#include <QGraphicsScene> + +WebViewGraphicsBased::WebViewGraphicsBased(QWidget* parent) + : QGraphicsView(parent) + , m_item(new GraphicsWebView) + , m_numPaintsTotal(0) + , m_numPaintsSinceLastMeasure(0) + , m_measureFps(false) +{ + setScene(new QGraphicsScene(this)); + scene()->addItem(m_item); + + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + +} + +void WebViewGraphicsBased::resizeEvent(QResizeEvent* event) +{ + QGraphicsView::resizeEvent(event); + QRectF rect(QPoint(0, 0), event->size()); + m_item->setGeometry(rect); +} + +void WebViewGraphicsBased::enableFrameRateMeasurement() +{ + m_measureFps = true; + m_lastConsultTime = m_startTime = QTime::currentTime(); + QTimer* updateTimer = new QTimer(this); + updateTimer->setInterval(1000); + connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateFrameRate())); + updateTimer->start(); +} + +void WebViewGraphicsBased::updateFrameRate() +{ + QTime now = QTime::currentTime(); + + int interval = m_lastConsultTime.msecsTo(now); + int total = m_startTime.msecsTo(now); + + int average = total ? m_numPaintsTotal * 1000 / total : 0; + int current = interval ? m_numPaintsSinceLastMeasure * 1000 / interval : 0; + + qDebug("[FPS] average: %d, current: %d", average, current); + + m_lastConsultTime = now; + m_numPaintsSinceLastMeasure = 0; +} + +void WebViewGraphicsBased::paintEvent(QPaintEvent* event) +{ + QGraphicsView::paintEvent(event); + if (!m_measureFps) + return; + m_numPaintsSinceLastMeasure++; + m_numPaintsTotal++; +} static QMenu* createContextMenu(QWebPage* page, QPoint position) { @@ -49,7 +107,7 @@ static QMenu* createContextMenu(QWebPage* page, QPoint position) return menu; } -void WebViewGraphicsBased::mousePressEvent(QGraphicsSceneMouseEvent* event) +void GraphicsWebView::mousePressEvent(QGraphicsSceneMouseEvent* event) { setProperty("mouseButtons", QVariant::fromValue(int(event->buttons()))); setProperty("keyboardModifiers", QVariant::fromValue(int(event->modifiers()))); @@ -65,7 +123,7 @@ void WebViewTraditional::mousePressEvent(QMouseEvent* event) QWebView::mousePressEvent(event); } -void WebViewGraphicsBased::contextMenuEvent(QGraphicsSceneContextMenuEvent* event) +void GraphicsWebView::contextMenuEvent(QGraphicsSceneContextMenuEvent* event) { QMenu* menu = createContextMenu(page(), event->pos().toPoint()); menu->exec(mapToScene(event->pos()).toPoint()); |