File indexing completed on 2025-02-09 05:18:01
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 <QList> 0010 #include <QObject> 0011 #include <QSharedPointer> 0012 #include <optional> 0013 0014 class QScreen; 0015 struct zkde_screencast_unstable_v1; 0016 0017 class ScreencastingPrivate; 0018 class ScreencastingSourcePrivate; 0019 class ScreencastingStreamPrivate; 0020 class ScreencastingStream : public QObject 0021 { 0022 Q_OBJECT 0023 public: 0024 ScreencastingStream(QObject *parent); 0025 ~ScreencastingStream() override; 0026 0027 quint32 nodeId() const; 0028 0029 Q_SIGNALS: 0030 void created(quint32 nodeid); 0031 void failed(const QString &error); 0032 void closed(); 0033 0034 private: 0035 friend class Screencasting; 0036 QScopedPointer<ScreencastingStreamPrivate> d; 0037 }; 0038 0039 class Screencasting : public QObject 0040 { 0041 Q_OBJECT 0042 public: 0043 explicit Screencasting(QObject *parent = nullptr); 0044 ~Screencasting() override; 0045 0046 enum CursorMode { 0047 Hidden = 1, 0048 Embedded = 2, 0049 Metadata = 4, 0050 }; 0051 Q_ENUM(CursorMode) 0052 bool isAvailable() const; 0053 0054 ScreencastingStream *createOutputStream(QScreen *screen, CursorMode mode); 0055 ScreencastingStream *createRegionStream(const QRect ®ion, qreal scaling, CursorMode mode); 0056 ScreencastingStream *createWindowStream(const QString &uuid, CursorMode mode); 0057 ScreencastingStream *createVirtualMonitorStream(const QString &name, const QSize &size, qreal scale, CursorMode mode); 0058 0059 void destroy(); 0060 0061 Q_SIGNALS: 0062 void initialized(); 0063 void removed(); 0064 void sourcesChanged(); 0065 0066 private: 0067 QScopedPointer<ScreencastingPrivate> d; 0068 };