diff options
Diffstat (limited to 'examples/widgets/painting/shared')
-rw-r--r-- | examples/widgets/painting/shared/CMakeLists.txt | 19 | ||||
-rw-r--r-- | examples/widgets/painting/shared/arthurstyle.cpp | 51 | ||||
-rw-r--r-- | examples/widgets/painting/shared/arthurstyle.h | 51 | ||||
-rw-r--r-- | examples/widgets/painting/shared/arthurwidgets.cpp | 131 | ||||
-rw-r--r-- | examples/widgets/painting/shared/arthurwidgets.h | 68 | ||||
-rw-r--r-- | examples/widgets/painting/shared/fbopaintdevice.cpp | 113 | ||||
-rw-r--r-- | examples/widgets/painting/shared/fbopaintdevice.h | 91 | ||||
-rw-r--r-- | examples/widgets/painting/shared/hoverpoints.cpp | 78 | ||||
-rw-r--r-- | examples/widgets/painting/shared/hoverpoints.h | 51 | ||||
-rw-r--r-- | examples/widgets/painting/shared/shared.pri | 6 | ||||
-rw-r--r-- | examples/widgets/painting/shared/use_lib.cmake | 7 |
11 files changed, 31 insertions, 635 deletions
diff --git a/examples/widgets/painting/shared/CMakeLists.txt b/examples/widgets/painting/shared/CMakeLists.txt index 0fc65d3d99..5eaa3b42e1 100644 --- a/examples/widgets/painting/shared/CMakeLists.txt +++ b/examples/widgets/painting/shared/CMakeLists.txt @@ -1,5 +1,5 @@ -# special case skip regeneration -# Port of shared.pri to be included by painting examples +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause add_library(painting_shared OBJECT) add_library(painting_shared::painting_shared ALIAS painting_shared) @@ -10,17 +10,8 @@ target_sources(painting_shared PRIVATE hoverpoints.cpp hoverpoints.h ${moc_files} ) -target_link_libraries(painting_shared PUBLIC Qt::Widgets) -target_include_directories(painting_shared PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") -## Scopes: -##################################################################### +set_target_properties(painting_shared PROPERTIES UNITY_BUILD OFF) -if (TARGET Qt::OpenGL OR QT_FEATURE_opengles2) - target_compile_definitions(painting_shared PRIVATE QT_OPENGL_SUPPORT) - target_link_libraries(painting_shared PUBLIC - Qt::OpenGL - ) - qt6_wrap_cpp(moc_files_gl fbopaintdevice.h) # no automoc for OBJECT libs - target_sources(painting_shared PRIVATE fbopaintdevice.cpp fbopaintdevice.h ${moc_files_gl}) -endif() +target_link_libraries(painting_shared PUBLIC Qt6::Widgets) +target_include_directories(painting_shared PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/examples/widgets/painting/shared/arthurstyle.cpp b/examples/widgets/painting/shared/arthurstyle.cpp index 42afeb44c1..15087b8e1a 100644 --- a/examples/widgets/painting/shared/arthurstyle.cpp +++ b/examples/widgets/painting/shared/arthurstyle.cpp @@ -1,52 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "arthurstyle.h" #include "arthurwidgets.h" diff --git a/examples/widgets/painting/shared/arthurstyle.h b/examples/widgets/painting/shared/arthurstyle.h index 64c888b636..e665a87192 100644 --- a/examples/widgets/painting/shared/arthurstyle.h +++ b/examples/widgets/painting/shared/arthurstyle.h @@ -1,52 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef ARTHURSTYLE_H #define ARTHURSTYLE_H diff --git a/examples/widgets/painting/shared/arthurwidgets.cpp b/examples/widgets/painting/shared/arthurwidgets.cpp index 61e73c4a60..4ff435783b 100644 --- a/examples/widgets/painting/shared/arthurwidgets.cpp +++ b/examples/widgets/painting/shared/arthurwidgets.cpp @@ -1,52 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "arthurwidgets.h" #include <QApplication> @@ -61,11 +14,6 @@ #include <QBoxLayout> #include <QRegularExpression> #include <QOffscreenSurface> -#include <QOpenGLContext> -#if QT_CONFIG(opengl) -#include <QtOpenGL/QOpenGLPaintDevice> -#include <QtOpenGL/QOpenGLWindow> -#endif extern QPixmap cached(const QString &img); @@ -81,61 +29,13 @@ ArthurFrame::ArthurFrame(QWidget *parent) pt.end(); } - -#if QT_CONFIG(opengl) -void ArthurFrame::enableOpenGL(bool use_opengl) -{ - if (m_use_opengl == use_opengl) - return; - - m_use_opengl = use_opengl; - - if (!m_glWindow && use_opengl) { - createGlWindow(); - QApplication::postEvent(this, new QResizeEvent(size(), size())); - } - - if (use_opengl) { - m_glWidget->show(); - } else { - if (m_glWidget) - m_glWidget->hide(); - } - - update(); -} - -void ArthurFrame::createGlWindow() -{ - Q_ASSERT(m_use_opengl); - - m_glWindow = new QOpenGLWindow(); - QSurfaceFormat f = QSurfaceFormat::defaultFormat(); - f.setSamples(4); - f.setAlphaBufferSize(8); - f.setStencilBufferSize(8); - m_glWindow->setFormat(f); - m_glWindow->setFlags(Qt::WindowTransparentForInput); - m_glWindow->resize(width(), height()); - m_glWidget = QWidget::createWindowContainer(m_glWindow, this); - // create() must be called after createWindowContainer() otherwise - // an incorrect offsetting of the position will occur. - m_glWindow->create(); -} -#endif - - void ArthurFrame::paintEvent(QPaintEvent *e) { static QImage *static_image = nullptr; QPainter painter; - if (preferImage() -#if QT_CONFIG(opengl) - && !m_use_opengl -#endif - ) { + if (preferImage()) { if (!static_image || static_image->size() != size()) { delete static_image; static_image = new QImage(size(), QImage::Format_RGB32); @@ -150,18 +50,7 @@ void ArthurFrame::paintEvent(QPaintEvent *e) painter.fillRect(0, height() - o, o, o, bg); painter.fillRect(width() - o, height() - o, o, o, bg); } else { -#if QT_CONFIG(opengl) - if (m_use_opengl && m_glWindow->isValid()) { - m_glWindow->makeCurrent(); - - painter.begin(m_glWindow); - painter.fillRect(QRectF(0, 0, m_glWindow->width(), m_glWindow->height()), palette().color(backgroundRole())); - } else { - painter.begin(this); - } -#else painter.begin(this); -#endif } painter.setClipRect(e->rect()); @@ -205,27 +94,15 @@ void ArthurFrame::paintEvent(QPaintEvent *e) painter.setBrush(Qt::NoBrush); painter.drawPath(clipPath); - if (preferImage() -#if QT_CONFIG(opengl) - && !m_use_opengl -#endif - ) { + if (preferImage()) { painter.end(); painter.begin(this); painter.drawImage(e->rect(), *static_image, e->rect()); } -#if QT_CONFIG(opengl) - if (m_use_opengl) - m_glWindow->update(); -#endif } void ArthurFrame::resizeEvent(QResizeEvent *e) { -#if QT_CONFIG(opengl) - if (m_glWidget) - m_glWidget->setGeometry(0, 0, e->size().width(), e->size().height()); -#endif QWidget::resizeEvent(e); } diff --git a/examples/widgets/painting/shared/arthurwidgets.h b/examples/widgets/painting/shared/arthurwidgets.h index 69fee57a27..e508e811cb 100644 --- a/examples/widgets/painting/shared/arthurwidgets.h +++ b/examples/widgets/painting/shared/arthurwidgets.h @@ -1,52 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef ARTHURWIDGETS_H #define ARTHURWIDGETS_H @@ -56,7 +9,6 @@ #include <QPushButton> #include <QGroupBox> -QT_FORWARD_DECLARE_CLASS(QOpenGLWindow) QT_FORWARD_DECLARE_CLASS(QTextDocument) QT_FORWARD_DECLARE_CLASS(QTextEdit) QT_FORWARD_DECLARE_CLASS(QVBoxLayout) @@ -77,20 +29,12 @@ public: void loadSourceFile(const QString &fileName); bool preferImage() const { return m_preferImage; } -#if QT_CONFIG(opengl) - QOpenGLWindow *glWindow() const { return m_glWindow; } -#endif public slots: void setPreferImage(bool pi) { m_preferImage = pi; } void setDescriptionEnabled(bool enabled); void showSource(); -#if QT_CONFIG(opengl) - void enableOpenGL(bool use_opengl); - bool usesOpenGL() { return m_use_opengl; } -#endif - signals: void descriptionEnabledChanged(bool); @@ -98,17 +42,11 @@ protected: void paintEvent(QPaintEvent *) override; void resizeEvent(QResizeEvent *) override; -#if QT_CONFIG(opengl) - virtual void createGlWindow(); - QOpenGLWindow *m_glWindow = nullptr; - QWidget *m_glWidget = nullptr; - bool m_use_opengl = false; -#endif QPixmap m_tile; bool m_showDoc = false; bool m_preferImage = false; - QTextDocument *m_document = nullptr;; + QTextDocument *m_document = nullptr; QString m_sourceFileName; }; diff --git a/examples/widgets/painting/shared/fbopaintdevice.cpp b/examples/widgets/painting/shared/fbopaintdevice.cpp deleted file mode 100644 index 9368293218..0000000000 --- a/examples/widgets/painting/shared/fbopaintdevice.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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 "fbopaintdevice.h" - -#include <QOffscreenSurface> -#include <QOpenGLFunctions> - -QFboPaintDevice::QFboPaintDevice(const QSize &size, bool flipped, bool clearOnInit, - QOpenGLFramebufferObject::Attachment attachment) - : QOpenGLPaintDevice(size) -{ - QOpenGLFramebufferObjectFormat format; - format.setAttachment(attachment); - format.setSamples(4); - m_framebufferObject = new QOpenGLFramebufferObject(size, format); - QOffscreenSurface *surface = new QOffscreenSurface(); - surface->create(); - m_surface = surface; - setPaintFlipped(flipped); - if (clearOnInit) { - m_framebufferObject->bind(); - - context()->functions()->glClearColor(0, 0, 0, 0); - context()->functions()->glClear(GL_COLOR_BUFFER_BIT); - } -} - -QFboPaintDevice::~QFboPaintDevice() -{ - delete m_framebufferObject; - delete m_surface; -} - -void QFboPaintDevice::ensureActiveTarget() -{ - if (QOpenGLContext::currentContext() != context()) - context()->makeCurrent(m_surface); - - m_framebufferObject->bind(); -} - -GLuint QFboPaintDevice::takeTexture() -{ - // We have multisamples so we can't just forward takeTexture(). - QOpenGLFramebufferObject resolvedFbo(m_framebufferObject->size(), m_framebufferObject->attachment()); - QOpenGLFramebufferObject::blitFramebuffer(&resolvedFbo, m_framebufferObject); - return resolvedFbo.takeTexture(); -} - -QImage QFboPaintDevice::toImage() const -{ - QOpenGLContext *currentContext = QOpenGLContext::currentContext(); - QSurface *currentSurface = currentContext ? currentContext->surface() : nullptr; - - context()->makeCurrent(m_surface); - - QImage image = m_framebufferObject->toImage(!paintFlipped()); - - if (currentContext) - currentContext->makeCurrent(currentSurface); - else - context()->doneCurrent(); - - return image; -} diff --git a/examples/widgets/painting/shared/fbopaintdevice.h b/examples/widgets/painting/shared/fbopaintdevice.h deleted file mode 100644 index a42bcc756d..0000000000 --- a/examples/widgets/painting/shared/fbopaintdevice.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ - -#ifndef QFBOPAINTDEVICE_H -#define QFBOPAINTDEVICE_H - -#ifndef QT_NO_OPENGL - -#include <QImage> -#include <QOpenGLFramebufferObject> -#include <QOpenGLPaintDevice> -#include <QSurface> - -class QFboPaintDevice : public QOpenGLPaintDevice { -public: - QFboPaintDevice(const QSize &size, bool flipped = false, bool clearOnInit = true, - QOpenGLFramebufferObject::Attachment = QOpenGLFramebufferObject::CombinedDepthStencil); - ~QFboPaintDevice(); - - // QOpenGLPaintDevice: - void ensureActiveTarget() override; - - bool isValid() const { return m_framebufferObject->isValid(); } - GLuint handle() const { return m_framebufferObject->handle(); } - GLuint takeTexture(); - QImage toImage() const; - - bool bind() { return m_framebufferObject->bind(); } - bool release() { return m_framebufferObject->release(); } - QSize size() const { return m_framebufferObject->size(); } - - QOpenGLFramebufferObject* framebufferObject() { return m_framebufferObject; } - const QOpenGLFramebufferObject* framebufferObject() const { return m_framebufferObject; } - - static bool isSupported() { return QOpenGLFramebufferObject::hasOpenGLFramebufferObjects(); } - -private: - QOpenGLFramebufferObject *m_framebufferObject; - QSurface *m_surface; -}; - -#endif // QT_NO_OPENGL - -#endif // QFBOPAINTDEVICE_H diff --git a/examples/widgets/painting/shared/hoverpoints.cpp b/examples/widgets/painting/shared/hoverpoints.cpp index ea59694f92..a917139613 100644 --- a/examples/widgets/painting/shared/hoverpoints.cpp +++ b/examples/widgets/painting/shared/hoverpoints.cpp @@ -1,62 +1,11 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "arthurwidgets.h" #include "hoverpoints.h" #include <algorithm> -#if QT_CONFIG(opengl) -#include <QtOpenGL/QOpenGLWindow> -#endif - HoverPoints::HoverPoints(QWidget *widget, PointShape shape) : QObject(widget), m_widget(widget), @@ -178,6 +127,7 @@ bool HoverPoints::eventFilter(QObject *object, QEvent *event) const int id = point.id(); switch (point.state()) { case QEventPoint::Pressed: + case QEventPoint::Stationary: { // find the point, move it const auto mappedPoints = m_fingerPointMapping.values(); @@ -202,7 +152,7 @@ bool HoverPoints::eventFilter(QObject *object, QEvent *event) } } if (activePoint != -1) { - m_fingerPointMapping.insert(point.id(), activePoint); + m_fingerPointMapping.insert(id, activePoint); movePoint(activePoint, point.position()); } } @@ -210,9 +160,11 @@ bool HoverPoints::eventFilter(QObject *object, QEvent *event) case QEventPoint::Released: { // move the point and release - const auto it = m_fingerPointMapping.find(id); - movePoint(it.value(), point.position()); - m_fingerPointMapping.erase(it); + const auto it = m_fingerPointMapping.constFind(id); + if (it != m_fingerPointMapping.constEnd()) { + movePoint(it.value(), point.position()); + m_fingerPointMapping.erase(it); + } } break; case QEventPoint::Updated: @@ -277,17 +229,7 @@ bool HoverPoints::eventFilter(QObject *object, QEvent *event) void HoverPoints::paintPoints() { QPainter p; -#if QT_CONFIG(opengl) - ArthurFrame *af = qobject_cast<ArthurFrame *>(m_widget); - if (af && af->usesOpenGL() && af->glWindow()->isValid()) { - af->glWindow()->makeCurrent(); - p.begin(af->glWindow()); - } else { - p.begin(m_widget); - } -#else p.begin(m_widget); -#endif p.setRenderHint(QPainter::Antialiasing); @@ -315,7 +257,7 @@ void HoverPoints::paintPoints() p.setPen(m_pointPen); p.setBrush(m_pointBrush); - for (const auto &point : qAsConst(m_points)) { + for (const auto &point : std::as_const(m_points)) { QRectF bounds = pointBoundingRect(point); if (m_shape == CircleShape) p.drawEllipse(bounds); diff --git a/examples/widgets/painting/shared/hoverpoints.h b/examples/widgets/painting/shared/hoverpoints.h index 8b341197d2..cac0dd5892 100644 --- a/examples/widgets/painting/shared/hoverpoints.h +++ b/examples/widgets/painting/shared/hoverpoints.h @@ -1,52 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications 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$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef HOVERPOINTS_H #define HOVERPOINTS_H diff --git a/examples/widgets/painting/shared/shared.pri b/examples/widgets/painting/shared/shared.pri index 7e2b4df8cb..77881b03cc 100644 --- a/examples/widgets/painting/shared/shared.pri +++ b/examples/widgets/painting/shared/shared.pri @@ -1,11 +1,5 @@ INCLUDEPATH += $$PWD -qtConfig(opengl) { - QT += opengl - SOURCES += $$PWD/fbopaintdevice.cpp - HEADERS += $$PWD/fbopaintdevice.h -} - SOURCES += \ $$PWD/arthurstyle.cpp\ $$PWD/arthurwidgets.cpp \ diff --git a/examples/widgets/painting/shared/use_lib.cmake b/examples/widgets/painting/shared/use_lib.cmake index 11e9c2cf71..84684a3444 100644 --- a/examples/widgets/painting/shared/use_lib.cmake +++ b/examples/widgets/painting/shared/use_lib.cmake @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + # Include this file in your example project to use the library defined in this directory. # This avoids find_package calls in a directory scope different from the directory scope of the # consuming target. @@ -6,8 +9,4 @@ if(NOT TARGET Qt::Widgets) find_package(Qt6 REQUIRED COMPONENTS Widgets) endif() -if(NOT TARGET Qt::OpenGL) - find_package(Qt6 OPTIONAL_COMPONENTS OpenGL) -endif() - add_subdirectory("${CMAKE_CURRENT_LIST_DIR}" painting_shared) |