summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-03-22 10:47:02 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2018-03-27 16:50:44 +0000
commit3c4ea1b3c662d17b4b82a55a4b10e50226dbb14f (patch)
treea2ca9e32253876baea3da909b6744e0c0c8cde89 /tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
parente3fa4af68ecf50c3d32e576b4b05bfefecd18c1b (diff)
Benchmark: move widgets benchmarks still in gui subdirectory to widgets
Move all widget-dependent benchmarks which were still in gui subdirectory to widgets Task-number: QTBUG-23129 Change-Id: I1359f1ea4036cacdfdbe08ff9ecdf1e2c75a005b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp')
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp289
1 files changed, 0 insertions, 289 deletions
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
deleted file mode 100644
index 59ed50157b..0000000000
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "webview.h"
-#include "webview_p.h"
-#include <QtGui>
-
-static const int MotionEndWaitTime = 2000;
-static const int TileSideLength = 128;
-
-WebViewPrivate::WebViewPrivate(WebView *w)
- : q(w)
- , cache(0)
-{
- web = new QGraphicsWebView;
-
- web->setParentItem(q->viewport());
-
- web->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- web->page()->mainFrame()->setScrollBarPolicy(
- Qt::Horizontal, Qt::ScrollBarAlwaysOff);
- web->page()->mainFrame()->setScrollBarPolicy(
- Qt::Vertical, Qt::ScrollBarAlwaysOff);
- web->setZValue(3);
-
-// cache = new WebViewCache(web);
-// web->setGraphicsEffect(cache);
-
- adjustSize();
-}
-
-void WebViewPrivate::adjustSize()
-{
- QSizeF contentSize = web->page()->mainFrame()->contentsSize();
- QPointF pos = web->pos();
-
- qreal w = qMax(contentSize.width(), q->viewport()->boundingRect().width());
- qreal h = qMax(contentSize.height(), q->viewport()->boundingRect().height());
-
- if (web->boundingRect().size() != QSizeF(w, h)) {
- //qDebug() << "WebView: adjustSize:" << QSizeF(w, h);
-
- web->resize(w, h);
- web->setPos(pos);
-
- if (w > q->viewport()->boundingRect().width())
- q->horizontalScrollBar()->setSliderSize(w);
- else
- q->horizontalScrollBar()->setSliderSize(0.0);
-
- if (h > q->viewport()->boundingRect().height())
- q->verticalScrollBar()->setSliderSize(h);
- else
- q->verticalScrollBar()->setSliderSize(0.0);
- }
-}
-
-void WebViewPrivate::_q_loadStarted()
-{
- qDebug() << "WebView: load started";
- adjustSize();
-}
-
-void WebViewPrivate::_q_loadProgress(int progress)
-{
- Q_UNUSED(progress)
-// qDebug() << "WebView: load progress" << progress;
- adjustSize();
-}
-
-void WebViewPrivate::_q_loadFinished(bool ok)
-{
- qDebug() << "WebView: load finished" << (ok ? "ok" : "not ok");
- adjustSize();
-}
-
-void WebViewPrivate::_q_viewportChanged(QGraphicsWidget* viewport)
-{
- web->setParentItem(viewport);
- viewport->setFlag(QGraphicsItem::ItemClipsChildrenToShape,
- true);
- adjustSize();
-}
-
-void WebViewPrivate::_q_motionEnded()
-{
- motionTimer.stop();
- qDebug() << "Motion ended";
- q->prepareGeometryChange();
-}
-
-WebViewCache::WebViewCache(QGraphicsWebView *webView)
- : m_webView(webView)
-{
-}
-
-WebViewCache::~WebViewCache()
-{
-}
-
-void WebViewCache::draw(QPainter * painter, QGraphicsEffectSource * source)
-{
- const QGraphicsItem *item = source->graphicsItem();
-
- QSizeF itemSize = item->boundingRect().size();
-
- if (!qFuzzyCompare(itemSize.width(), m_itemSize.width()) ||
- !qFuzzyCompare(itemSize.height(), m_itemSize.height())) {
- qDebug() << "Refresh tile cache, for new size" << itemSize;
-
- for (int i = 0; i < m_tilePixmaps.size(); i++) {
- QPixmapCache::remove(m_tilePixmaps[i]);
- }
-
- m_tilePixmaps.clear();
- m_tileRects.clear();
-
- int itemWidth = itemSize.width() + 0.5;
- int itemHeight = itemSize.height() + 0.5;
-
- int tilesX = itemWidth / TileSideLength;
- int tilesY = itemHeight / TileSideLength;
-
- if ((itemWidth % TileSideLength) != 0) {
- ++tilesX;
- }
-
- if ((itemHeight % TileSideLength) != 0) {
- ++tilesY;
- }
-
- int tilesCount = tilesX * tilesY;
-
- m_tilePixmaps.resize(tilesCount);
- m_tileRects.resize(tilesCount);
-
- for (int i = 0; i < tilesX; i++) {
- for (int j = 0; j < tilesY; j++) {
- int x = i * TileSideLength;
- int y = j * TileSideLength;
-
- m_tileRects[i + j * tilesX]
- = QRectF(x, y, TileSideLength, TileSideLength);
- }
- }
-
- m_itemSize = itemSize;
- }
-
- const QGraphicsItem *parentItem = item->parentItem();
- QPointF itemPos = item->pos();
- QRectF parentRect = parentItem->boundingRect();
-
- for (int i = 0; i < m_tileRects.size(); i++) {
- QRectF tileRect = m_tileRects[i].translated(itemPos);
-
- if (!tileRect.intersects(parentRect) && !tileRect.contains(parentRect)) {
- continue;
- }
-
- QPixmap tilePixmap;
-
- if (!QPixmapCache::find(m_tilePixmaps[i], &tilePixmap)) {
- tilePixmap = QPixmap(TileSideLength, TileSideLength);
-
- QWebFrame *webFrame = m_webView->page()->mainFrame();
-
- QPainter tilePainter(&tilePixmap);
- tilePainter.translate(-m_tileRects[i].left(), -m_tileRects[i].top());
- webFrame->render(&tilePainter, m_tileRects[i].toRect());
- tilePainter.end();
-
- m_tilePixmaps[i] = QPixmapCache::insert(tilePixmap);
- }
-
- tileRect = tileRect.translated(-itemPos);
-
- painter->drawPixmap(tileRect.topLeft(), tilePixmap);
- }
-}
-
-WebView::WebView(QGraphicsWidget *parent)
- : AbstractScrollArea(parent)
- , d(new WebViewPrivate(this))
-{
- setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- setContentsMargins(0, 0, 0, 0);
- connect(d->web->page(), SIGNAL(loadStarted()),
- this, SLOT(_q_loadStarted()));
- connect(d->web->page(), SIGNAL(loadProgress(int)),
- this, SLOT(_q_loadProgress(int)));
- connect(d->web->page(), SIGNAL(loadFinished(bool)),
- this, SLOT(_q_loadFinished(bool)));
- connect(this, SIGNAL(viewportChanged(QGraphicsWidget*)),
- this, SLOT(_q_viewportChanged(QGraphicsWidget*)));
- connect(&d->motionTimer, SIGNAL(timeout()),
- this, SLOT(_q_motionEnded()));
-}
-
-WebView::~WebView()
-{
- d->web->setGraphicsEffect(0);
- delete d->cache;
-}
-
-void WebView::setUrl(const QUrl& url)
-{
- d->adjustSize();
- d->web->setUrl(url);
-}
-
-void WebView::scrollContentsBy(qreal dx, qreal dy)
-{
- if (qFuzzyCompare((float)dy, 0.0f) && qFuzzyCompare((float)dx, 0.0f))
- return;
-
- if (!d->motionTimer.isActive()) {
- d->motionTimer.start(MotionEndWaitTime);
- }
-
- QSizeF contentSize = d->web->page()->mainFrame()->contentsSize();
- QRectF viewportRect = viewport()->boundingRect();
- QPointF pos = d->web->pos();
-
- qreal w = qMax(contentSize.width(), viewportRect.width());
- qreal h = qMax(contentSize.height(), viewportRect.height());
-
- qreal minx = qMin(0.0f, (float) -(w - viewportRect.width()));
- qreal miny = qMin(0.0f, (float) -(h - viewportRect.height()));
-
- qreal x = d->web->pos().x() - dx;
-
- if (x < minx)
- x = minx;
- else if (x > 0)
- x = 0.0;
-
- qreal y = d->web->pos().y() - dy;
-
- if (y < miny)
- y = miny;
- else if (y > 0)
- y = 0.0;
-
- d->web->setPos(x, y);
-}
-
-QSizeF WebView::sizeHint(Qt::SizeHint which, const QSizeF & constraint) const
-{
- if (which == Qt::PreferredSize) {
- QSizeF contentSize = d->web->page()->mainFrame()->contentsSize();
- return contentSize;
- }
-
- return AbstractScrollArea::sizeHint(which, constraint);
-}
-
-void WebView::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
- AbstractScrollArea::resizeEvent(event);
- d->adjustSize();
-}
-
-#include "moc_webview.cpp"