diff options
author | Giulio Camuffo <giulio.camuffo@kdab.com> | 2016-05-27 11:04:03 +0300 |
---|---|---|
committer | Giulio Camuffo <giulio.camuffo@kdab.com> | 2016-06-03 09:19:05 +0000 |
commit | ec4eb4db61094179bc6a9ec26ec68fb710177053 (patch) | |
tree | c593d4e815ff6f1cc149ad5eaf206b825c316b0b /src/plugins/platforms/eglfs/qeglfsscreen.cpp | |
parent | 3ec57107cedb154f256e3ad001ea5475cc64fa94 (diff) |
Install some eglfsdeviceintegration headers, as a private module
This allows external integrations to be developed against it.
Also uniforms all class names as QEglFSFoo.
Change-Id: I72ff37c0fcdf1ccd37110b4c36874d6c99b2e743
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/eglfs/qeglfsscreen.cpp')
-rw-r--r-- | src/plugins/platforms/eglfs/qeglfsscreen.cpp | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/qeglfsscreen.cpp deleted file mode 100644 index a1ab854db1..0000000000 --- a/src/plugins/platforms/eglfs/qeglfsscreen.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** 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 Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** 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-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtCore/qtextstream.h> -#include <QtGui/qwindow.h> -#include <qpa/qwindowsysteminterface.h> -#include <qpa/qplatformcursor.h> -#include <QtPlatformSupport/private/qopenglcompositor_p.h> - -#include "qeglfsscreen.h" -#include "qeglfswindow.h" -#include "qeglfshooks.h" - -QT_BEGIN_NAMESPACE - -QEglFSScreen::QEglFSScreen(EGLDisplay dpy) - : m_dpy(dpy), - m_surface(EGL_NO_SURFACE), - m_cursor(0) -{ - m_cursor = qt_egl_device_integration()->createCursor(this); -} - -QEglFSScreen::~QEglFSScreen() -{ - delete m_cursor; - QOpenGLCompositor::destroy(); -} - -QRect QEglFSScreen::geometry() const -{ - return QRect(QPoint(0, 0), qt_egl_device_integration()->screenSize()); -} - -int QEglFSScreen::depth() const -{ - return qt_egl_device_integration()->screenDepth(); -} - -QImage::Format QEglFSScreen::format() const -{ - return qt_egl_device_integration()->screenFormat(); -} - -QSizeF QEglFSScreen::physicalSize() const -{ - return qt_egl_device_integration()->physicalScreenSize(); -} - -QDpi QEglFSScreen::logicalDpi() const -{ - return qt_egl_device_integration()->logicalDpi(); -} - -qreal QEglFSScreen::pixelDensity() const -{ - return qt_egl_device_integration()->pixelDensity(); -} - -Qt::ScreenOrientation QEglFSScreen::nativeOrientation() const -{ - return qt_egl_device_integration()->nativeOrientation(); -} - -Qt::ScreenOrientation QEglFSScreen::orientation() const -{ - return qt_egl_device_integration()->orientation(); -} - -QPlatformCursor *QEglFSScreen::cursor() const -{ - return m_cursor; -} - -qreal QEglFSScreen::refreshRate() const -{ - return qt_egl_device_integration()->refreshRate(); -} - -void QEglFSScreen::setPrimarySurface(EGLSurface surface) -{ - m_surface = surface; -} - -void QEglFSScreen::handleCursorMove(const QPoint &pos) -{ - const QOpenGLCompositor *compositor = QOpenGLCompositor::instance(); - const QList<QOpenGLCompositorWindow *> windows = compositor->windows(); - - // Generate enter and leave events like a real windowing system would do. - if (windows.isEmpty()) - return; - - // First window is always fullscreen. - if (windows.count() == 1) { - QWindow *window = windows[0]->sourceWindow(); - if (m_pointerWindow != window) { - m_pointerWindow = window; - QWindowSystemInterface::handleEnterEvent(window, window->mapFromGlobal(pos), pos); - } - return; - } - - QWindow *enter = 0, *leave = 0; - for (int i = windows.count() - 1; i >= 0; --i) { - QWindow *window = windows[i]->sourceWindow(); - const QRect geom = window->geometry(); - if (geom.contains(pos)) { - if (m_pointerWindow != window) { - leave = m_pointerWindow; - m_pointerWindow = window; - enter = window; - } - break; - } - } - - if (enter && leave) - QWindowSystemInterface::handleEnterLeaveEvent(enter, leave, enter->mapFromGlobal(pos), pos); -} - -QPixmap QEglFSScreen::grabWindow(WId wid, int x, int y, int width, int height) const -{ - QOpenGLCompositor *compositor = QOpenGLCompositor::instance(); - const QList<QOpenGLCompositorWindow *> windows = compositor->windows(); - Q_ASSERT(!windows.isEmpty()); - - QImage img; - - if (static_cast<QEglFSWindow *>(windows.first()->sourceWindow()->handle())->isRaster()) { - // Request the compositor to render everything into an FBO and read it back. This - // is of course slow, but it's safe and reliable. It will not include the mouse - // cursor, which is a plus. - img = compositor->grab(); - } else { - // Just a single OpenGL window without compositing. Do not support this case for now. Doing - // glReadPixels is not an option since it would read from the back buffer which may have - // undefined content when calling right after a swapBuffers (unless preserved swap is - // available and enabled, but we have no support for that). - qWarning("grabWindow: Not supported for non-composited OpenGL content. Use QQuickWindow::grabWindow() instead."); - return QPixmap(); - } - - if (!wid) { - const QSize screenSize = geometry().size(); - if (width < 0) - width = screenSize.width() - x; - if (height < 0) - height = screenSize.height() - y; - return QPixmap::fromImage(img).copy(x, y, width, height); - } - - foreach (QOpenGLCompositorWindow *w, windows) { - const QWindow *window = w->sourceWindow(); - if (window->winId() == wid) { - const QRect geom = window->geometry(); - if (width < 0) - width = geom.width() - x; - if (height < 0) - height = geom.height() - y; - QRect rect(geom.topLeft() + QPoint(x, y), QSize(width, height)); - rect &= window->geometry(); - return QPixmap::fromImage(img).copy(rect); - } - } - - return QPixmap(); -} - -QT_END_NAMESPACE |