diff options
Diffstat (limited to 'examples/opengl/legacy/grabber/mainwindow.cpp')
-rw-r--r-- | examples/opengl/legacy/grabber/mainwindow.cpp | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/examples/opengl/legacy/grabber/mainwindow.cpp b/examples/opengl/legacy/grabber/mainwindow.cpp deleted file mode 100644 index 6ea6a28051..0000000000 --- a/examples/opengl/legacy/grabber/mainwindow.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** 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. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "glwidget.h" -#include "mainwindow.h" - -#include <QtWidgets> - -MainWindow::MainWindow() -{ - centralWidget = new QWidget; - setCentralWidget(centralWidget); - - glWidget = new GLWidget; - pixmapLabel = new QLabel; - - glWidgetArea = new QScrollArea; - glWidgetArea->setWidget(glWidget); - glWidgetArea->setWidgetResizable(true); - glWidgetArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - glWidgetArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - glWidgetArea->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); - glWidgetArea->setMinimumSize(50, 50); - - pixmapLabelArea = new QScrollArea; - pixmapLabelArea->setWidget(pixmapLabel); - pixmapLabelArea->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); - pixmapLabelArea->setMinimumSize(50, 50); - - xSlider = createSlider(SIGNAL(xRotationChanged(int)), - SLOT(setXRotation(int))); - ySlider = createSlider(SIGNAL(yRotationChanged(int)), - SLOT(setYRotation(int))); - zSlider = createSlider(SIGNAL(zRotationChanged(int)), - SLOT(setZRotation(int))); - - createActions(); - createMenus(); - - QGridLayout *centralLayout = new QGridLayout; - centralLayout->addWidget(glWidgetArea, 0, 0); - centralLayout->addWidget(pixmapLabelArea, 0, 1); - centralLayout->addWidget(xSlider, 1, 0, 1, 2); - centralLayout->addWidget(ySlider, 2, 0, 1, 2); - centralLayout->addWidget(zSlider, 3, 0, 1, 2); - centralWidget->setLayout(centralLayout); - - xSlider->setValue(15 * 16); - ySlider->setValue(345 * 16); - zSlider->setValue(0 * 16); - - setWindowTitle(tr("Grabber")); - resize(400, 300); -} - -void MainWindow::renderIntoPixmap() -{ - QSize size = getSize(); - if (size.isValid()) { - QPixmap pixmap = glWidget->renderPixmap(size.width(), size.height()); - setPixmap(pixmap); - } -} - -void MainWindow::grabFrameBuffer() -{ - QImage image = glWidget->grabFrameBuffer(); - setPixmap(QPixmap::fromImage(image)); -} - -void MainWindow::clearPixmap() -{ - setPixmap(QPixmap()); -} - -void MainWindow::about() -{ - QMessageBox::about(this, tr("About Grabber"), - tr("The <b>Grabber</b> example demonstrates two approaches for " - "rendering OpenGL into a Qt pixmap.")); -} - -void MainWindow::createActions() -{ - renderIntoPixmapAct = new QAction(tr("&Render into Pixmap..."), this); - renderIntoPixmapAct->setShortcut(tr("Ctrl+R")); - connect(renderIntoPixmapAct, SIGNAL(triggered()), - this, SLOT(renderIntoPixmap())); - - grabFrameBufferAct = new QAction(tr("&Grab Frame Buffer"), this); - grabFrameBufferAct->setShortcut(tr("Ctrl+G")); - connect(grabFrameBufferAct, SIGNAL(triggered()), - this, SLOT(grabFrameBuffer())); - - clearPixmapAct = new QAction(tr("&Clear Pixmap"), this); - clearPixmapAct->setShortcut(tr("Ctrl+L")); - connect(clearPixmapAct, SIGNAL(triggered()), this, SLOT(clearPixmap())); - - exitAct = new QAction(tr("E&xit"), this); - exitAct->setShortcuts(QKeySequence::Quit); - connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); - - aboutAct = new QAction(tr("&About"), this); - connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); - - aboutQtAct = new QAction(tr("About &Qt"), this); - connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); -} - -void MainWindow::createMenus() -{ - fileMenu = menuBar()->addMenu(tr("&File")); - fileMenu->addAction(renderIntoPixmapAct); - fileMenu->addAction(grabFrameBufferAct); - fileMenu->addAction(clearPixmapAct); - fileMenu->addSeparator(); - fileMenu->addAction(exitAct); - - helpMenu = menuBar()->addMenu(tr("&Help")); - helpMenu->addAction(aboutAct); - helpMenu->addAction(aboutQtAct); -} - -QSlider *MainWindow::createSlider(const char *changedSignal, - const char *setterSlot) -{ - QSlider *slider = new QSlider(Qt::Horizontal); - slider->setRange(0, 360 * 16); - slider->setSingleStep(16); - slider->setPageStep(15 * 16); - slider->setTickInterval(15 * 16); - slider->setTickPosition(QSlider::TicksRight); - connect(slider, SIGNAL(valueChanged(int)), glWidget, setterSlot); - connect(glWidget, changedSignal, slider, SLOT(setValue(int))); - return slider; -} - -void MainWindow::setPixmap(const QPixmap &pixmap) -{ - pixmapLabel->setPixmap(pixmap); - QSize size = pixmap.size() / pixmap.devicePixelRatio(); - if (size - QSize(1, 0) == pixmapLabelArea->maximumViewportSize()) - size -= QSize(1, 0); - pixmapLabel->resize(size); -} - -QSize MainWindow::getSize() -{ - bool ok; - QString text = QInputDialog::getText(this, tr("Grabber"), - tr("Enter pixmap size:"), - QLineEdit::Normal, - tr("%1 x %2").arg(glWidget->width()) - .arg(glWidget->height()), - &ok); - if (!ok) - return QSize(); - - QRegularExpression regExp(tr("^([0-9]+) *x *([0-9]+)$")); - QRegularExpressionMatch match = regExp.match(text); - if (match.hasMatch()) { - int width = match.captured(1).toInt(); - int height = match.captured(2).toInt(); - if (width > 0 && width < 2048 && height > 0 && height < 2048) - return QSize(width, height); - } - - return glWidget->size(); -} |