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 }