diff options
Diffstat (limited to 'examples/opengl/2dpainting.py')
-rw-r--r-- | examples/opengl/2dpainting.py | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/examples/opengl/2dpainting.py b/examples/opengl/2dpainting.py deleted file mode 100644 index 5b3ba6183..000000000 --- a/examples/opengl/2dpainting.py +++ /dev/null @@ -1,172 +0,0 @@ - -############################################################################ -## -## Copyright (C) 2013 Riverbank Computing Limited. -## Copyright (C) 2016 The Qt Company Ltd. -## Contact: http://www.qt.io/licensing/ -## -## This file is part of the Qt for Python examples of the Qt Toolkit. -## -## $QT_BEGIN_LICENSE:BSD$ -## 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$ -## -############################################################################ - -"""PySide2 port of the opengl/legacy/2dpainting example from Qt v5.x""" - -import sys -from PySide2.QtCore import * -from PySide2.QtGui import * -from PySide2.QtWidgets import * -from PySide2.QtOpenGL import * - -try: - from OpenGL import GL -except ImportError: - app = QApplication(sys.argv) - messageBox = QMessageBox(QMessageBox.Critical, "OpenGL 2dpainting", - "PyOpenGL must be installed to run this example.", - QMessageBox.Close) - messageBox.setDetailedText("Run:\npip install PyOpenGL PyOpenGL_accelerate") - messageBox.exec_() - sys.exit(1) - - -class Helper: - def __init__(self): - gradient = QLinearGradient(QPointF(50, -20), QPointF(80, 20)) - gradient.setColorAt(0.0, Qt.white) - gradient.setColorAt(1.0, QColor(0xa6, 0xce, 0x39)) - - self.background = QBrush(QColor(64, 32, 64)) - self.circleBrush = QBrush(gradient) - self.circlePen = QPen(Qt.black) - self.circlePen.setWidth(1) - self.textPen = QPen(Qt.white) - self.textFont = QFont() - self.textFont.setPixelSize(50) - - def paint(self, painter, event, elapsed): - painter.fillRect(event.rect(), self.background) - painter.translate(100, 100) - - painter.save() - painter.setBrush(self.circleBrush) - painter.setPen(self.circlePen) - painter.rotate(elapsed * 0.030) - - r = elapsed/1000.0 - n = 30 - for i in range(n): - painter.rotate(30) - radius = 0 + 120.0*((i+r)/n) - circleRadius = 1 + ((i+r)/n)*20 - painter.drawEllipse(QRectF(radius, -circleRadius, - circleRadius*2, circleRadius*2)) - - painter.restore() - - painter.setPen(self.textPen) - painter.setFont(self.textFont) - painter.drawText(QRect(-50, -50, 100, 100), Qt.AlignCenter, "Qt") - - -class Widget(QWidget): - def __init__(self, helper, parent = None): - QWidget.__init__(self, parent) - - self.helper = helper - self.elapsed = 0 - self.setFixedSize(200, 200) - - def animate(self): - self.elapsed = (self.elapsed + self.sender().interval()) % 1000 - self.repaint() - - def paintEvent(self, event): - painter = QPainter() - painter.begin(self) - painter.setRenderHint(QPainter.Antialiasing) - self.helper.paint(painter, event, self.elapsed) - painter.end() - - -class GLWidget(QGLWidget): - def __init__(self, helper, parent = None): - QGLWidget.__init__(self, QGLFormat(QGL.SampleBuffers), parent) - - self.helper = helper - self.elapsed = 0 - self.setFixedSize(200, 200) - - def animate(self): - self.elapsed = (self.elapsed + self.sender().interval()) % 1000 - self.repaint() - - def paintEvent(self, event): - painter = QPainter() - painter.begin(self) - self.helper.paint(painter, event, self.elapsed) - painter.end() - - -class Window(QWidget): - def __init__(self, parent = None): - QWidget.__init__(self, parent) - - helper = Helper() - native = Widget(helper, self) - openGL = GLWidget(helper, self) - nativeLabel = QLabel(self.tr("Native")) - nativeLabel.setAlignment(Qt.AlignHCenter) - openGLLabel = QLabel(self.tr("OpenGL")) - openGLLabel.setAlignment(Qt.AlignHCenter) - - layout = QGridLayout() - layout.addWidget(native, 0, 0) - layout.addWidget(openGL, 0, 1) - layout.addWidget(nativeLabel, 1, 0) - layout.addWidget(openGLLabel, 1, 1) - self.setLayout(layout) - - timer = QTimer(self) - self.connect(timer, SIGNAL("timeout()"), native.animate) - self.connect(timer, SIGNAL("timeout()"), openGL.animate) - timer.start(50) - - self.setWindowTitle(self.tr("2D Painting on Native and OpenGL Widgets")) - - -if __name__ == '__main__': - app = QApplication(sys.argv) - window = Window() - window.show() - sys.exit(app.exec_()) |