From 76636f73d7216f9265cefa35d7ad56a4172693ca Mon Sep 17 00:00:00 2001 From: Craig Watson Date: Fri, 11 Dec 2015 10:13:49 +0100 Subject: [PATCH] Fix video loading from file - Added an overload for setMatrix in UBGraphicsMediaItem, to propagate matrix changes to the child videoItem - Upon loading a video, the child videoItem is now added correctly, and set to the right position --- src/adaptors/UBSvgSubsetAdaptor.cpp | 5 +++++ src/domain/UBGraphicsMediaItem.cpp | 7 +++++++ src/domain/UBGraphicsMediaItem.h | 1 + 3 files changed, 13 insertions(+) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 48fc20b4..ecefa5b8 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include "domain/UBGraphicsSvgItem.h" #include "domain/UBGraphicsPixmapItem.h" @@ -652,6 +653,10 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() videoItem->setFlag(QGraphicsItem::ItemIsSelectable, true); mScene->addItem(videoItem); + mScene->addItem(videoItem->videoItem()); + + // Update the child QGraphicsVideoItem's transformation matrix + videoItem->setMatrix(videoItem->matrix()); videoItem->show(); diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index ad9dcfeb..c3cf8ec6 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -353,6 +353,13 @@ void UBGraphicsMediaItem::setPos(qreal x, qreal y) setPos(QPointF(x, y)); } +void UBGraphicsMediaItem::setMatrix(const QMatrix &matrix, bool combine) +{ + QGraphicsItem::setMatrix(matrix, combine); + + if (mVideoItem) + mVideoItem->setMatrix(matrix, combine); +} void UBGraphicsMediaItem::setTransform(const QTransform &matrix, bool combine) { diff --git a/src/domain/UBGraphicsMediaItem.h b/src/domain/UBGraphicsMediaItem.h index 5846075b..e83facef 100644 --- a/src/domain/UBGraphicsMediaItem.h +++ b/src/domain/UBGraphicsMediaItem.h @@ -110,6 +110,7 @@ public: virtual void setPos(const QPointF &pos); virtual void setPos(qreal x, qreal y); + virtual void setMatrix(const QMatrix &matrix, bool combine = false); virtual void setTransform(const QTransform &matrix, bool combine = false); virtual void resize(qreal w, qreal h); virtual void resize(const QSizeF & pSize);