// Copyright (C) 2016 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 #ifndef QGRAPHICSVIDEOITEM_H #define QGRAPHICSVIDEOITEM_H #include #include #if QT_CONFIG(graphicsview) QT_BEGIN_NAMESPACE class QVideoFrameFormat; class QGraphicsVideoItemPrivate; class Q_MULTIMEDIAWIDGETS_EXPORT QGraphicsVideoItem : public QGraphicsObject { Q_OBJECT Q_PROPERTY(Qt::AspectRatioMode aspectRatioMode READ aspectRatioMode WRITE setAspectRatioMode) Q_PROPERTY(QPointF offset READ offset WRITE setOffset) Q_PROPERTY(QSizeF size READ size WRITE setSize) Q_PROPERTY(QSizeF nativeSize READ nativeSize NOTIFY nativeSizeChanged) Q_PROPERTY(QVideoSink* videoSink READ videoSink CONSTANT) public: explicit QGraphicsVideoItem(QGraphicsItem *parent = nullptr); ~QGraphicsVideoItem(); Q_INVOKABLE QVideoSink *videoSink() const; Qt::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Qt::AspectRatioMode mode); QPointF offset() const; void setOffset(const QPointF &offset); QSizeF size() const; void setSize(const QSizeF &size); QSizeF nativeSize() const; QRectF boundingRect() const override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; enum { Type = 14 }; int type() const override { // Enable the use of qgraphicsitem_cast with this item. return Type; } Q_SIGNALS: void nativeSizeChanged(const QSizeF &size); protected: void timerEvent(QTimerEvent *event) override; QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; QGraphicsVideoItemPrivate *d_ptr; private: Q_DECLARE_PRIVATE(QGraphicsVideoItem) Q_PRIVATE_SLOT(d_func(), void _q_present(const QVideoFrame &)) }; QT_END_NAMESPACE #endif // QT_CONFIG(graphicsview) #endif // QGRAPHICSVIDEOITEM_H