summaryrefslogtreecommitdiffstats
path: root/src/core/transforms
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-19 08:37:03 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-09-30 12:16:39 +0200
commit94bb50fba66435a078f30b1da9cf5507522ab136 (patch)
tree1c48f4e4463dd0f28fcd38efb259017987bbc8d6 /src/core/transforms
parent616e8083872c953a31acc871749e05c621c18bd1 (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.cpp7
-rw-r--r--src/core/transforms/qlookattransform.h2
-rw-r--r--src/core/transforms/qmatrixtransform.cpp7
-rw-r--r--src/core/transforms/qmatrixtransform.h2
-rw-r--r--src/core/transforms/qrotatetransform.cpp7
-rw-r--r--src/core/transforms/qrotatetransform.h2
-rw-r--r--src/core/transforms/qscaletransform.cpp7
-rw-r--r--src/core/transforms/qscaletransform.h2
-rw-r--r--src/core/transforms/qtransform.cpp6
-rw-r--r--src/core/transforms/qtransform.h2
-rw-r--r--src/core/transforms/qtranslatetransform.cpp7
-rw-r--r--src/core/transforms/qtranslatetransform.h2
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