/* KWin - the KDE window manager This file is part of the KDE project. SPDX-FileCopyrightText: 2015 Martin Gräßlin SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include "core/outputbackend.h" #include #include #include class QTemporaryDir; namespace KWin { class VirtualBackend; class VirtualOutput; class KWIN_EXPORT VirtualBackend : public OutputBackend { Q_OBJECT public: VirtualBackend(QObject *parent = nullptr); ~VirtualBackend() override; bool initialize() override; bool saveFrames() const { return m_screenshotDir != nullptr; } QString screenshotDirPath() const; std::unique_ptr createQPainterBackend() override; std::unique_ptr createOpenGLBackend() override; Q_INVOKABLE void setVirtualOutputs(const QVector &geometries, QVector scales = QVector()); Outputs outputs() const override; QVector supportedCompositors() const override { return QVector{OpenGLCompositing, QPainterCompositing}; } Q_SIGNALS: void virtualOutputsSet(bool countChanged); private: QVector m_outputs; std::unique_ptr m_screenshotDir; }; } // namespace KWin