diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-19 08:37:03 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-09-30 12:16:39 +0200 |
commit | 94bb50fba66435a078f30b1da9cf5507522ab136 (patch) | |
tree | 1c48f4e4463dd0f28fcd38efb259017987bbc8d6 /src/core/transforms | |
parent | 616e8083872c953a31acc871749e05c621c18bd1 (diff) |
Improved/Refactored cloning and doClone off all subclasses
Note: As we are using QScene during cloning, it is important that node hierarchy
be created and added in the proper order (parent then child).
Change-Id: I8fd53f7ca696ec9aca19cc70dc116ccba4154911
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/transforms')
-rw-r--r-- | src/core/transforms/qlookattransform.cpp | 7 | ||||
-rw-r--r-- | src/core/transforms/qlookattransform.h | 2 | ||||
-rw-r--r-- | src/core/transforms/qmatrixtransform.cpp | 7 | ||||
-rw-r--r-- | src/core/transforms/qmatrixtransform.h | 2 | ||||
-rw-r--r-- | src/core/transforms/qrotatetransform.cpp | 7 | ||||
-rw-r--r-- | src/core/transforms/qrotatetransform.h | 2 | ||||
-rw-r--r-- | src/core/transforms/qscaletransform.cpp | 7 | ||||
-rw-r--r-- | src/core/transforms/qscaletransform.h | 2 | ||||
-rw-r--r-- | src/core/transforms/qtransform.cpp | 6 | ||||
-rw-r--r-- | src/core/transforms/qtransform.h | 2 | ||||
-rw-r--r-- | src/core/transforms/qtranslatetransform.cpp | 7 | ||||
-rw-r--r-- | src/core/transforms/qtranslatetransform.h | 2 |
12 files changed, 34 insertions, 19 deletions
diff --git a/src/core/transforms/qlookattransform.cpp b/src/core/transforms/qlookattransform.cpp index f4303a5db..b4ec652fc 100644 --- a/src/core/transforms/qlookattransform.cpp +++ b/src/core/transforms/qlookattransform.cpp @@ -76,9 +76,12 @@ QLookAtTransform::QLookAtTransform(QLookAtTransformPrivate &dd, QNode *parent) { } -QLookAtTransform *QLookAtTransform::doClone(QNode *clonedParent) const +QLookAtTransform *QLookAtTransform::doClone(bool isClone) const { - return new QLookAtTransform(clonedParent); + QLookAtTransform *clone = new QLookAtTransform(); + clone->copy(this); + clone->d_func()->m_isClone = isClone; + return clone; } QMatrix4x4 QLookAtTransform::transformMatrix() const diff --git a/src/core/transforms/qlookattransform.h b/src/core/transforms/qlookattransform.h index 79c494c5e..2707a1498 100644 --- a/src/core/transforms/qlookattransform.h +++ b/src/core/transforms/qlookattransform.h @@ -88,7 +88,7 @@ Q_SIGNALS: protected: Q_DECLARE_PRIVATE(QLookAtTransform) QLookAtTransform(QLookAtTransformPrivate &dd, QNode *parent = 0); - QLookAtTransform *doClone(QNode *clonedParent) const Q_DECL_OVERRIDE; + QLookAtTransform *doClone(bool isClone = true) const Q_DECL_OVERRIDE; }; } // namespace Qt3D diff --git a/src/core/transforms/qmatrixtransform.cpp b/src/core/transforms/qmatrixtransform.cpp index 505e59734..024f03ee9 100644 --- a/src/core/transforms/qmatrixtransform.cpp +++ b/src/core/transforms/qmatrixtransform.cpp @@ -56,9 +56,12 @@ QMatrixTransform::QMatrixTransform(QMatrixTransformPrivate &dd, QNode *parent) { } -QMatrixTransform *QMatrixTransform::doClone(QNode *clonedParent) const +QMatrixTransform *QMatrixTransform::doClone(bool isClone) const { - return new QMatrixTransform(clonedParent); + QMatrixTransform *clone = new QMatrixTransform(); + clone->copy(this); + clone->d_func()->m_isClone = isClone; + return clone; } QMatrixTransform::QMatrixTransform(QNode *parent) diff --git a/src/core/transforms/qmatrixtransform.h b/src/core/transforms/qmatrixtransform.h index 6d6c6dcdf..e8fba4aef 100644 --- a/src/core/transforms/qmatrixtransform.h +++ b/src/core/transforms/qmatrixtransform.h @@ -74,7 +74,7 @@ Q_SIGNALS: protected: Q_DECLARE_PRIVATE(QMatrixTransform) QMatrixTransform(QMatrixTransformPrivate &dd, QNode *parent = 0); - QMatrixTransform *doClone(QNode *clonedParent) const Q_DECL_OVERRIDE; + QMatrixTransform *doClone(bool isClone = true) const Q_DECL_OVERRIDE; }; } // namespace Qt3D diff --git a/src/core/transforms/qrotatetransform.cpp b/src/core/transforms/qrotatetransform.cpp index 72c521d6e..8adb620fb 100644 --- a/src/core/transforms/qrotatetransform.cpp +++ b/src/core/transforms/qrotatetransform.cpp @@ -81,9 +81,12 @@ QRotateTransform::QRotateTransform(QRotateTransformPrivate &dd, QNode *parent) { } -QRotateTransform *QRotateTransform::doClone(QNode *clonedParent) const +QRotateTransform *QRotateTransform::doClone(bool isClone) const { - return new QRotateTransform(clonedParent); + QRotateTransform *clone = new QRotateTransform(); + clone->copy(this); + clone->d_func()->m_isClone = isClone; + return clone; } float QRotateTransform::angleDeg() const diff --git a/src/core/transforms/qrotatetransform.h b/src/core/transforms/qrotatetransform.h index f0dd93d6f..1c6bea033 100644 --- a/src/core/transforms/qrotatetransform.h +++ b/src/core/transforms/qrotatetransform.h @@ -82,7 +82,7 @@ Q_SIGNALS: protected: Q_DECLARE_PRIVATE(QRotateTransform) QRotateTransform(QRotateTransformPrivate &dd, QNode *parent = 0); - QRotateTransform *doClone(QNode *clonedParent) const Q_DECL_OVERRIDE; + QRotateTransform *doClone(bool isClone = true) const Q_DECL_OVERRIDE; }; } // namespace Qt3D diff --git a/src/core/transforms/qscaletransform.cpp b/src/core/transforms/qscaletransform.cpp index 8152eb8f6..60d711db6 100644 --- a/src/core/transforms/qscaletransform.cpp +++ b/src/core/transforms/qscaletransform.cpp @@ -73,9 +73,12 @@ QScaleTransform::QScaleTransform(QScaleTransformPrivate &dd, QNode *parent) { } -QScaleTransform *QScaleTransform::doClone(QNode *clonedParent) const +QScaleTransform *QScaleTransform::doClone(bool isClone) const { - return new QScaleTransform(clonedParent); + QScaleTransform *clone = new QScaleTransform(); + clone->copy(this); + clone->d_func()->m_isClone = isClone; + return clone; } QVector3D QScaleTransform::scale3D() const diff --git a/src/core/transforms/qscaletransform.h b/src/core/transforms/qscaletransform.h index 05051129f..2b6cfd96e 100644 --- a/src/core/transforms/qscaletransform.h +++ b/src/core/transforms/qscaletransform.h @@ -76,7 +76,7 @@ Q_SIGNALS: protected: Q_DECLARE_PRIVATE(QScaleTransform) QScaleTransform(QScaleTransformPrivate &dd, QNode *parent = 0); - QScaleTransform *doClone(QNode *clonedParent) const Q_DECL_OVERRIDE; + QScaleTransform *doClone(bool isClone = true) const Q_DECL_OVERRIDE; }; } // Qt3D diff --git a/src/core/transforms/qtransform.cpp b/src/core/transforms/qtransform.cpp index 8a7bcf559..be83559e0 100644 --- a/src/core/transforms/qtransform.cpp +++ b/src/core/transforms/qtransform.cpp @@ -97,12 +97,12 @@ QTransform::QTransform(QTransformPrivate &dd, QNode *parent) { } -QTransform *QTransform::doClone(QNode *clonedParent) const +QTransform *QTransform::doClone(bool isClone) const { Q_D(const QTransform); - QTransform *clone = new QTransform(clonedParent); + QTransform *clone = new QTransform(); Q_FOREACH (QAbstractTransform *t, d->m_transforms) - clone->appendTransform(qobject_cast<QAbstractTransform *>(t->clone(clone))); + clone->appendTransform(qobject_cast<QAbstractTransform *>(t->clone())); return clone; } diff --git a/src/core/transforms/qtransform.h b/src/core/transforms/qtransform.h index 36dc9bb2f..8cf18a4da 100644 --- a/src/core/transforms/qtransform.h +++ b/src/core/transforms/qtransform.h @@ -99,7 +99,7 @@ protected: Q_DECLARE_PRIVATE(QTransform) QTransform(QTransformPrivate &dd, QNode *parent = 0); - QTransform *doClone(QNode *clonedParent) const Q_DECL_OVERRIDE; + QTransform *doClone(bool isClone = true) const Q_DECL_OVERRIDE; }; } // namespace Qt3D diff --git a/src/core/transforms/qtranslatetransform.cpp b/src/core/transforms/qtranslatetransform.cpp index 4c187c30b..0440fa690 100644 --- a/src/core/transforms/qtranslatetransform.cpp +++ b/src/core/transforms/qtranslatetransform.cpp @@ -73,9 +73,12 @@ QTranslateTransform::QTranslateTransform(QTranslateTransformPrivate &dd, QNode * { } -QTranslateTransform *QTranslateTransform::doClone(QNode *clonedParent) const +QTranslateTransform *QTranslateTransform::doClone(bool isClone) const { - return new QTranslateTransform(clonedParent); + QTranslateTransform *clone = new QTranslateTransform(); + clone->copy(this); + clone->d_func()->m_isClone = isClone; + return clone; } diff --git a/src/core/transforms/qtranslatetransform.h b/src/core/transforms/qtranslatetransform.h index bbf8ac2b1..6994a05b1 100644 --- a/src/core/transforms/qtranslatetransform.h +++ b/src/core/transforms/qtranslatetransform.h @@ -88,7 +88,7 @@ Q_SIGNALS: protected: Q_DECLARE_PRIVATE(QTranslateTransform) QTranslateTransform(QTranslateTransformPrivate &dd, QNode *parent = 0); - QTranslateTransform *doClone(QNode *clonedParent) const; + QTranslateTransform *doClone(bool isClone) const Q_DECL_OVERRIDE; }; } // namespace Qt3D |