123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- /****************************************************************************
- **
- ** Copyright (C) 2014-2015 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
- ** Copyright (C) 2013 Klarälvdalens Datakonsult AB (KDAB).
- ** Contact: http://www.qt.io/licensing/
- **
- ** This file is part of the QtWaylandCompositor module of the Qt Toolkit.
- **
- ** $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.
- **
- ** 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.
- **
- ** 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$
- **
- ****************************************************************************/
- #ifndef QWAYLANDOUTPUT_H
- #define QWAYLANDOUTPUT_H
- #include <QtWaylandCompositor/qwaylandcompositorextension.h>
- #include <QtCore/QObject>
- #include <QObject>
- #include <QRect>
- #include <QSize>
- struct wl_resource;
- QT_BEGIN_NAMESPACE
- class QWaylandOutputPrivate;
- class QWaylandCompositor;
- class QWindow;
- class QWaylandSurface;
- class QWaylandView;
- class QWaylandClient;
- class QWaylandOutputSpace;
- class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandOutput : public QWaylandObject
- {
- Q_OBJECT
- 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)
- Q_PROPERTY(QRect availableGeometry READ availableGeometry WRITE setAvailableGeometry NOTIFY availableGeometryChanged)
- Q_PROPERTY(QSize physicalSize READ physicalSize WRITE setPhysicalSize NOTIFY physicalSizeChanged)
- 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(bool sizeFollowsWindow READ sizeFollowsWindow WRITE setSizeFollowsWindow NOTIFY sizeFollowsWindowChanged)
- Q_ENUMS(Subpixel Transform)
- public:
- enum Subpixel {
- SubpixelUnknown = 0,
- SubpixelNone,
- SubpixelHorizontalRgb,
- SubpixelHorizontalBgr,
- SubpixelVerticalRgb,
- SubpixelVerticalBgr
- };
- Q_ENUM(Subpixel)
- enum Transform {
- TransformNormal = 0,
- Transform90,
- Transform180,
- Transform270,
- TransformFlipped,
- TransformFlipped90,
- TransformFlipped180,
- TransformFlipped270
- };
- Q_ENUM(Transform)
- struct Mode
- {
- QSize size;
- qreal refreshRate;
- };
- QWaylandOutput();
- QWaylandOutput(QWaylandCompositor *compositor, QWindow *window);
- ~QWaylandOutput();
- static QWaylandOutput *fromResource(wl_resource *resource);
- 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);
- Mode mode() const;
- void setMode(const Mode &mode);
- QRect geometry() const;
- void setGeometry(const QRect &geometry);
- void setWidth(int newWidth);
- void setHeight(int newHeight);
- QRect availableGeometry() const;
- void setAvailableGeometry(const QRect &availableGeometry);
- QSize physicalSize() const;
- void setPhysicalSize(const QSize &size);
- Subpixel subpixel() const;
- void setSubpixel(const Subpixel &subpixel);
- Transform transform() const;
- void setTransform(const Transform &transform);
- int scaleFactor() const;
- void setScaleFactor(int scale);
- bool sizeFollowsWindow() const;
- void setSizeFollowsWindow(bool follow);
- bool physicalSizeFollowsSize() const;
- void setPhysicalSizeFollowsSize(bool follow);
- void frameStarted();
- void sendFrameCallbacks();
- void surfaceEnter(QWaylandSurface *surface);
- void surfaceLeave(QWaylandSurface *surface);
- virtual void update();
- Q_SIGNALS:
- void compositorChanged();
- void windowChanged();
- void positionChanged();
- void geometryChanged();
- void modeChanged();
- void availableGeometryChanged();
- void physicalSizeChanged();
- void scaleFactorChanged();
- void subpixelChanged();
- void transformChanged();
- void sizeFollowsWindowChanged();
- void physicalSizeFollowsSizeChanged();
- void manufacturerChanged();
- void modelChanged();
- void windowDestroyed();
- private Q_SLOTS:
- void handleWindowDestroyed();
- protected:
- bool event(QEvent *event) Q_DECL_OVERRIDE;
- virtual void initialize();
- };
- QT_END_NAMESPACE
- Q_DECLARE_METATYPE(QWaylandOutput::Mode)
- #endif // QWAYLANDOUTPUT_H
|