diff options
Diffstat (limited to 'src/compositor/compositor_api/qwaylandoutput.h')
-rw-r--r-- | src/compositor/compositor_api/qwaylandoutput.h | 127 |
1 files changed, 78 insertions, 49 deletions
diff --git a/src/compositor/compositor_api/qwaylandoutput.h b/src/compositor/compositor_api/qwaylandoutput.h index 9c9dc3767..31e5fa566 100644 --- a/src/compositor/compositor_api/qwaylandoutput.h +++ b/src/compositor/compositor_api/qwaylandoutput.h @@ -4,36 +4,32 @@ ** Copyright (C) 2013 Klarälvdalens Datakonsult AB (KDAB). ** Contact: http://www.qt.io/licensing/ ** -** This file is part of the Qt Compositor. +** This file is part of the QtWaylandCompositor module of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. ** -** "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. +** 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.LGPLv3 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.html. ** -** -** 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." +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. ** ** $QT_END_LICENSE$ ** @@ -42,30 +38,33 @@ #ifndef QWAYLANDOUTPUT_H #define QWAYLANDOUTPUT_H -#include <QtCompositor/qwaylandexport.h> +#include <QtWaylandCompositor/qwaylandextension.h> +#include <QtCore/QObject> #include <QObject> #include <QRect> #include <QSize> -QT_BEGIN_NAMESPACE - struct wl_resource; +QT_BEGIN_NAMESPACE + +class QWaylandOutputPrivate; class QWaylandCompositor; class QWindow; class QWaylandSurface; +class QWaylandView; class QWaylandClient; +class QWaylandOutputSpace; -namespace QtWayland { - class Output; -} - -class Q_COMPOSITOR_EXPORT QWaylandOutput : public QObject +class Q_COMPOSITOR_EXPORT QWaylandOutput : public QWaylandObject { Q_OBJECT - Q_PROPERTY(QString manufacturer READ manufacturer CONSTANT) - Q_PROPERTY(QString model READ model CONSTANT) + Q_DECLARE_PRIVATE(QWaylandOutput) + Q_PROPERTY(QWaylandCompositor *compositor READ compositor WRITE setCompositor NOTIFY compositorChanged) + Q_PROPERTY(QWindow *window READ window WRITE setWindow NOTIFY windowChanged) + Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged) + Q_PROPERTY(QString model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(QPoint position READ position WRITE setPosition NOTIFY positionChanged) Q_PROPERTY(QWaylandOutput::Mode mode READ mode WRITE setMode NOTIFY modeChanged) Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged) @@ -74,8 +73,9 @@ class Q_COMPOSITOR_EXPORT QWaylandOutput : public QObject Q_PROPERTY(QWaylandOutput::Subpixel subpixel READ subpixel WRITE setSubpixel NOTIFY subpixelChanged) Q_PROPERTY(QWaylandOutput::Transform transform READ transform WRITE setTransform NOTIFY transformChanged) Q_PROPERTY(int scaleFactor READ scaleFactor WRITE setScaleFactor NOTIFY scaleFactorChanged) - Q_PROPERTY(QWindow *window READ window CONSTANT) + Q_PROPERTY(bool sizeFollowsWindow READ sizeFollowsWindow WRITE setSizeFollowsWindow NOTIFY sizeFollowsWindowChanged) Q_ENUMS(Subpixel Transform) + public: enum Subpixel { SubpixelUnknown = 0, @@ -85,6 +85,7 @@ public: SubpixelVerticalRgb, SubpixelVerticalBgr }; + Q_ENUM(Subpixel) enum Transform { TransformNormal = 0, @@ -96,6 +97,7 @@ public: TransformFlipped180, TransformFlipped270 }; + Q_ENUM(Transform) struct Mode { @@ -103,19 +105,24 @@ public: int refreshRate; }; - QWaylandOutput(QWaylandCompositor *compositor, QWindow *window, - const QString &manufacturer, const QString &model); + QWaylandOutput(); + QWaylandOutput(QWaylandCompositor *compositor, QWindow *window); ~QWaylandOutput(); static QWaylandOutput *fromResource(wl_resource *resource); - - virtual void update(); + struct ::wl_resource *resourceForClient(QWaylandClient *client) const; QWaylandCompositor *compositor() const; + void setCompositor(QWaylandCompositor *compositor); + + QWindow *window() const; + void setWindow(QWindow *window); QString manufacturer() const; + void setManufacturer(const QString &manufacturer); QString model() const; + void setModel(const QString &model); QPoint position() const; void setPosition(const QPoint &pt); @@ -125,6 +132,8 @@ public: QRect geometry() const; void setGeometry(const QRect &geometry); + void setWidth(int newWidth); + void setHeight(int newHeight); QRect availableGeometry() const; void setAvailableGeometry(const QRect &availableGeometry); @@ -141,13 +150,23 @@ public: int scaleFactor() const; void setScaleFactor(int scale); - QWindow *window() const; + bool sizeFollowsWindow() const; + void setSizeFollowsWindow(bool follow); + + bool physicalSizeFollowsSize() const; + void setPhysicalSizeFollowsSize(bool follow); - QtWayland::Output *handle(); + void frameStarted(); + void sendFrameCallbacks(); - QList<QWaylandSurface *> surfaces() const; + void surfaceEnter(QWaylandSurface *surface); + void surfaceLeave(QWaylandSurface *surface); + + virtual void update(); Q_SIGNALS: + void compositorChanged(); + void windowChanged(); void positionChanged(); void geometryChanged(); void modeChanged(); @@ -156,13 +175,23 @@ Q_SIGNALS: void scaleFactorChanged(); void subpixelChanged(); void transformChanged(); + void sizeFollowsWindowChanged(); + void physicalSizeFollowsSizeChanged(); + void manufacturerChanged(); + void modelChanged(); + void windowDestroyed(); -private: - QtWayland::Output *const d_ptr; -}; +private Q_SLOTS: + void handleWindowDestroyed(); -Q_DECLARE_METATYPE(QWaylandOutput::Mode) +protected: + bool event(QEvent *event) Q_DECL_OVERRIDE; + + virtual void initialize(); +}; QT_END_NAMESPACE +Q_DECLARE_METATYPE(QWaylandOutput::Mode) + #endif // QWAYLANDOUTPUT_H |