// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qcapturablewindow.h" #include "qcapturablewindow_p.h" #include "qplatformmediaintegration_p.h" QT_BEGIN_NAMESPACE QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QCapturableWindowPrivate) /*! \class QCapturableWindow \inmodule QtMultimedia \ingroup multimedia \ingroup multimedia_video \since 6.6 \brief Used for getting the basic information of a capturable window. The class contains a set of window information, except the method QCapturableWindow::isValid which pulls the current state whenever it's called. \sa QWindowCapture */ /*! \qmlvaluetype CapturableWindow \instantiates QCapturableWindow \brief The CapturableWindow type is used getting basic of a window that is available for capturing via WindowCapture. \inqmlmodule QtMultimedia \ingroup multimedia_qml \ingroup multimedia_video_qml \since 6.6 The class contains a dump of window information, except the property 'isValid' which pulls the actual window state every time. \sa WindowCapture */ /*! \fn QCapturableWindow::QCapturableWindow(QCapturableWindow &&other) Constructs a QCapturableWindow by moving from \a other. */ /*! \fn void QCapturableWindow::swap(QCapturableWindow &other) noexcept Swaps the current window information with \a other. */ /*! \fn QCapturableWindow &QCapturableWindow::operator=(QCapturableWindow &&other) Moves \a other into this QCapturableWindow. */ /*! Constructs a null capturable window information that doesn't refer to any window. */ QCapturableWindow::QCapturableWindow() = default; /*! Destroys the window information. */ QCapturableWindow::~QCapturableWindow() = default; /*! Construct a new window information using \a other QCapturableWindow. */ QCapturableWindow::QCapturableWindow(const QCapturableWindow &other) = default; /*! Assigns the \a other window information to this QCapturableWindow. */ QCapturableWindow& QCapturableWindow::operator=(const QCapturableWindow &other) = default; /*! \fn bool QCapturableWindow::operator==(const QCapturableWindow &lhs, const QCapturableWindow &rhs) Returns \c true if window information \a lhs and \a rhs refer to the same window, otherwise returns \c false. */ /*! \fn bool QCapturableWindow::operator!=(const QCapturableWindow &lhs, const QCapturableWindow &rhs) Returns \c true if window information \a lhs and \a rhs refer to different windows, otherwise returns \c false. */ bool operator==(const QCapturableWindow &lhs, const QCapturableWindow &rhs) noexcept { return lhs.d == rhs.d || (lhs.d && rhs.d && lhs.d->id == rhs.d->id); } /*! \qmlproperty string QtMultimedia::CapturableWindow::isValid This property identifies whether a window information is valid. An invalid window information refers to non-existing window or doesn't refer to any one. */ /*! Identifies whether a window information is valid. An invalid window information refers to non-existing window or doesn't refer to any one. Returns true if the window is valid, and false if it is not. */ bool QCapturableWindow::isValid() const { return d && QPlatformMediaIntegration::instance()->isCapturableWindowValid(*d); } /*! \qmlproperty string QtMultimedia::CapturableWindow::description This property holds the description of the reffered window. */ /*! Returns a description of the window. In most cases it represents the window title. */ QString QCapturableWindow::description() const { if (!d) return {}; if (d->description.isEmpty() && d->id) return QLatin1String("Window 0x") + QString::number(d->id, 16); return d->description; } QCapturableWindow::QCapturableWindow(QCapturableWindowPrivate *capturablePrivate) : d(capturablePrivate) { } #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug dbg, const QCapturableWindow &window) { dbg << QStringLiteral("Capturable window '%1'").arg(window.description()); return dbg; } #endif QT_END_NAMESPACE #include "moc_qcapturablewindow.cpp"