diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-29 17:19:36 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-10-03 21:18:41 +0200 |
commit | 7b26f6a1746419161a8f875e341b3e31220f4141 (patch) | |
tree | f784e568015e1f7f199abb388b97fefdb158c84e /src/render/frontend/qrenderattachment.cpp | |
parent | c16689bb1ccf31416df7b8c69fe032898cf87dec (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.cpp | 43 |
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; } |