summaryrefslogtreecommitdiffstats
path: root/WebKitTools/QtLauncher/webview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKitTools/QtLauncher/webview.cpp')
-rw-r--r--WebKitTools/QtLauncher/webview.cpp62
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());