summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qrenderattachment.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-29 17:19:36 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-10-03 21:18:41 +0200
commit7b26f6a1746419161a8f875e341b3e31220f4141 (patch)
treef784e568015e1f7f199abb388b97fefdb158c84e /src/render/frontend/qrenderattachment.cpp
parentc16689bb1ccf31416df7b8c69fe032898cf87dec (diff)
QNode refactoring
Move almost everything to private classes. Assimp loading restored. All examples working. QNode hierachy is now handled through QObject::setParent, addChild, removeChild are part of the private api. Note: commented QChangeArbiter unit tests as they can no longer work with this patch and will restore them when QChangeArbiter will have been made private. Task-number: QTBUG-41470 Task-number: QTBUG-41523 Change-Id: I4430974b3aa7f3744c38714b451b122e0cb4d0c9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qrenderattachment.cpp')
-rw-r--r--src/render/frontend/qrenderattachment.cpp43
1 files changed, 20 insertions, 23 deletions
diff --git a/src/render/frontend/qrenderattachment.cpp b/src/render/frontend/qrenderattachment.cpp
index 44828ca2d..f75bbc321 100644
--- a/src/render/frontend/qrenderattachment.cpp
+++ b/src/render/frontend/qrenderattachment.cpp
@@ -57,6 +57,13 @@ QRenderAttachmentPrivate::QRenderAttachmentPrivate(QRenderAttachment *qq)
{
}
+void QRenderAttachmentPrivate::copy(const QNodePrivate *ref)
+{
+ QNodePrivate::copy(ref);
+ const QRenderAttachmentPrivate *rA = static_cast<const QRenderAttachmentPrivate *>(ref);
+ m_type = rA->m_type;
+}
+
QRenderAttachment::QRenderAttachment(QNode *parent)
: QNode(*new QRenderAttachmentPrivate(this), parent)
{
@@ -67,17 +74,6 @@ QRenderAttachment::QRenderAttachment(QRenderAttachmentPrivate &dd, QNode *parent
{
}
-void QRenderAttachment::copy(const QNode *ref)
-{
- QNode::copy(ref);
- const QRenderAttachment *rA = qobject_cast<const QRenderAttachment *>(ref);
- if (rA != Q_NULLPTR) {
- setType(rA->type());
- // TO DO: Send a clone once Texture is a QNode subclass
- setTexture(rA->texture());
- }
-}
-
void QRenderAttachment::setType(QRenderAttachment::RenderAttachmentType type)
{
Q_D(QRenderAttachment);
@@ -88,7 +84,7 @@ void QRenderAttachment::setType(QRenderAttachment::RenderAttachmentType type)
QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
change->setPropertyName(QByteArrayLiteral("type"));
change->setValue(type);
- notifyObservers(change);
+ d->notifyObservers(change);
}
}
}
@@ -107,15 +103,15 @@ void QRenderAttachment::setTexture(QTexture *texture)
emit textureChanged();
// Handle inline declaration
- if (!texture->parent() || texture->parent() == this)
- QNode::addChild(texture);
+ if (!texture->parent())
+ texture->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
change->setPropertyName(QByteArrayLiteral("texture"));
// TO DO: Send a clone once Texture is a QNode subclass
change->setValue(QVariant::fromValue(texture));
- notifyObservers(change);
+ d->notifyObservers(change);
}
}
}
@@ -136,7 +132,7 @@ void QRenderAttachment::setMipLevel(int level)
QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
change->setPropertyName(QByteArrayLiteral("mipLevel"));
change->setValue(level);
- notifyObservers(change);
+ d->notifyObservers(change);
}
}
}
@@ -157,7 +153,7 @@ void QRenderAttachment::setLayer(int layer)
QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
change->setPropertyName(QByteArrayLiteral("layer"));
change->setValue(layer);
- notifyObservers(change);
+ d->notifyObservers(change);
}
}
}
@@ -178,7 +174,7 @@ void QRenderAttachment::setFace(QRenderAttachment::CubeMapFace face)
QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
change->setPropertyName(QByteArrayLiteral("face"));
change->setValue(face);
- notifyObservers(change);
+ d->notifyObservers(change);
}
}
}
@@ -199,7 +195,7 @@ void QRenderAttachment::setName(const QString &name)
QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
change->setPropertyName(QByteArrayLiteral("name"));
change->setValue(name);
- notifyObservers(change);
+ d->notifyObservers(change);
}
}
}
@@ -210,11 +206,12 @@ QString QRenderAttachment::name() const
return d->m_name;
}
-QNode *QRenderAttachment::doClone(bool isClone) const
+QNode *QRenderAttachment::doClone() const
{
- QRenderAttachment *clone = new QRenderAttachment();
- clone->copy(this);
- clone->d_func()->m_isClone = isClone;
+ Q_D(const QRenderAttachment);
+ QRenderAttachment *clone = new QRenderAttachment();;
+ clone->d_func()->copy(d_func());
+ clone->setTexture(qobject_cast<QTexture *>(QNodePrivate::get(d->m_texture)->clone()));
return clone;
}