File indexing completed on 2024-05-12 05:32:26

0001 /*
0002     SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #pragma once
0008 
0009 #include "kwin_export.h"
0010 
0011 #include <QObject>
0012 #include <memory>
0013 
0014 struct wl_resource;
0015 
0016 namespace KWin
0017 {
0018 class Display;
0019 class OutputInterface;
0020 class ScreencastV1InterfacePrivate;
0021 class ScreencastStreamV1InterfacePrivate;
0022 class ScreencastStreamV1Interface;
0023 
0024 class KWIN_EXPORT ScreencastStreamV1Interface : public QObject
0025 {
0026     Q_OBJECT
0027 public:
0028     ~ScreencastStreamV1Interface() override;
0029 
0030     void sendCreated(quint32 nodeid);
0031     void sendFailed(const QString &error);
0032     void sendClosed();
0033 
0034 Q_SIGNALS:
0035     void finished();
0036 
0037 private:
0038     friend class ScreencastV1InterfacePrivate;
0039     explicit ScreencastStreamV1Interface(QObject *parent);
0040     std::unique_ptr<ScreencastStreamV1InterfacePrivate> d;
0041 };
0042 
0043 class KWIN_EXPORT ScreencastV1Interface : public QObject
0044 {
0045     Q_OBJECT
0046 
0047 public:
0048     explicit ScreencastV1Interface(Display *display, QObject *parent = nullptr);
0049     virtual ~ScreencastV1Interface();
0050 
0051     enum CursorMode {
0052         Hidden = 1,
0053         Embedded = 2,
0054         Metadata = 4,
0055     };
0056     Q_ENUM(CursorMode)
0057 
0058 Q_SIGNALS:
0059     void outputScreencastRequested(ScreencastStreamV1Interface *stream, OutputInterface *output, CursorMode mode);
0060     void virtualOutputScreencastRequested(ScreencastStreamV1Interface *stream, const QString &name, const QSize &size, double scaling, CursorMode mode);
0061     void windowScreencastRequested(ScreencastStreamV1Interface *stream, const QString &winid, CursorMode mode);
0062     void regionScreencastRequested(ScreencastStreamV1Interface *stream, const QRect &geometry, qreal scaling, CursorMode mode);
0063 
0064 private:
0065     std::unique_ptr<ScreencastV1InterfacePrivate> d;
0066 };
0067 
0068 }