forked from qt-creator/qt-creator
QmlDesigner: Move implementation code in the node instances
updateDirtyNodeRecursive and renderPreviewImage belongs to quick image and not in the node instance server. Change-Id: I629b89c748036c0614e78bcfa0c837cb16ca6374 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
committed by
Thomas Hartmann
parent
f021ec50cd
commit
359ef53280
@@ -433,6 +433,10 @@ QVariant ObjectNodeInstance::fixResourcePaths(const QVariant &value)
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjectNodeInstance::updateDirtyNodeRecursive()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void ObjectNodeInstance::setPropertyVariant(const PropertyName &name, const QVariant &value)
|
void ObjectNodeInstance::setPropertyVariant(const PropertyName &name, const QVariant &value)
|
||||||
{
|
{
|
||||||
QQmlProperty property(object(), name, context());
|
QQmlProperty property(object(), name, context());
|
||||||
@@ -1108,6 +1112,11 @@ QImage ObjectNodeInstance::renderImage() const
|
|||||||
return QImage();
|
return QImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QImage ObjectNodeInstance::renderPreviewImage(const QSize & /*previewImageSize*/) const
|
||||||
|
{
|
||||||
|
return QImage();
|
||||||
|
}
|
||||||
|
|
||||||
QObject *ObjectNodeInstance::parent() const
|
QObject *ObjectNodeInstance::parent() const
|
||||||
{
|
{
|
||||||
if (!object())
|
if (!object())
|
||||||
|
@@ -85,6 +85,7 @@ public:
|
|||||||
virtual void initialize(const Pointer &objectNodeInstance);
|
virtual void initialize(const Pointer &objectNodeInstance);
|
||||||
virtual void paint(QPainter *painter);
|
virtual void paint(QPainter *painter);
|
||||||
virtual QImage renderImage() const;
|
virtual QImage renderImage() const;
|
||||||
|
virtual QImage renderPreviewImage(const QSize &previewImageSize) const;
|
||||||
|
|
||||||
virtual QObject *parent() const;
|
virtual QObject *parent() const;
|
||||||
|
|
||||||
@@ -179,6 +180,8 @@ public:
|
|||||||
|
|
||||||
static QVariant fixResourcePaths(const QVariant &value);
|
static QVariant fixResourcePaths(const QVariant &value);
|
||||||
|
|
||||||
|
virtual void updateDirtyNodeRecursive();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void doResetProperty(const PropertyName &propertyName);
|
void doResetProperty(const PropertyName &propertyName);
|
||||||
void removeFromOldProperty(QObject *object, QObject *oldParent, const PropertyName &oldParentProperty);
|
void removeFromOldProperty(QObject *object, QObject *oldParent, const PropertyName &oldParentProperty);
|
||||||
|
@@ -65,7 +65,7 @@ void Qt5PreviewNodeInstanceServer::collectItemChangesAndSendChangeCommands()
|
|||||||
{
|
{
|
||||||
static bool inFunction = false;
|
static bool inFunction = false;
|
||||||
|
|
||||||
if (rootNodeInstance().internalSGItem() == 0)
|
if (!rootNodeInstance().holdsQuickItem())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!inFunction && nodeInstanceClient()->bytesToWrite() < 10000) {
|
if (!inFunction && nodeInstanceClient()->bytesToWrite() < 10000) {
|
||||||
@@ -106,17 +106,14 @@ static void updateDirtyNodeRecursive(QQuickItem *parentItem)
|
|||||||
|
|
||||||
QImage Qt5PreviewNodeInstanceServer::renderPreviewImage()
|
QImage Qt5PreviewNodeInstanceServer::renderPreviewImage()
|
||||||
{
|
{
|
||||||
updateDirtyNodeRecursive(rootNodeInstance().internalSGItem());
|
rootNodeInstance().updateDirtyNodeRecursive();
|
||||||
|
|
||||||
QRectF boundingRect = rootNodeInstance().boundingRect();
|
QRectF boundingRect = rootNodeInstance().boundingRect();
|
||||||
|
|
||||||
QSize previewImageSize = boundingRect.size().toSize();
|
QSize previewImageSize = boundingRect.size().toSize();
|
||||||
previewImageSize.scale(QSize(100, 100), Qt::KeepAspectRatio);
|
previewImageSize.scale(QSize(100, 100), Qt::KeepAspectRatio);
|
||||||
|
|
||||||
QImage previewImage;
|
QImage previewImage = rootNodeInstance().renderPreviewImage(previewImageSize);
|
||||||
|
|
||||||
if (boundingRect.isValid() && rootNodeInstance().internalSGItem())
|
|
||||||
previewImage = designerSupport()->renderImageForItem(rootNodeInstance().internalSGItem(), boundingRect, previewImageSize);
|
|
||||||
|
|
||||||
previewImage = previewImage.convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
previewImage = previewImage.convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
||||||
|
|
||||||
|
@@ -218,6 +218,14 @@ void QuickItemNodeInstance::updateDirtyNodeRecursive(QQuickItem *parentItem) con
|
|||||||
DesignerSupport::updateDirtyNode(parentItem);
|
DesignerSupport::updateDirtyNode(parentItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickItemNodeInstance::updateAllDirtyNodeRecursive(QQuickItem *parentItem) const
|
||||||
|
{
|
||||||
|
foreach (QQuickItem *childItem, parentItem->childItems())
|
||||||
|
updateDirtyNodeRecursive(childItem);
|
||||||
|
|
||||||
|
DesignerSupport::updateDirtyNode(parentItem);
|
||||||
|
}
|
||||||
|
|
||||||
QImage QuickItemNodeInstance::renderImage() const
|
QImage QuickItemNodeInstance::renderImage() const
|
||||||
{
|
{
|
||||||
updateDirtyNodeRecursive(quickItem());
|
updateDirtyNodeRecursive(quickItem());
|
||||||
@@ -231,6 +239,16 @@ QImage QuickItemNodeInstance::renderImage() const
|
|||||||
return renderImage;
|
return renderImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QImage QuickItemNodeInstance::renderPreviewImage(const QSize &previewImageSize) const
|
||||||
|
{
|
||||||
|
QRectF previewItemBoundingRect = boundingRect();
|
||||||
|
|
||||||
|
if (previewItemBoundingRect.isValid() && quickItem())
|
||||||
|
return designerSupport()->renderImageForItem(quickItem(), previewItemBoundingRect, previewImageSize);
|
||||||
|
|
||||||
|
return QImage();
|
||||||
|
}
|
||||||
|
|
||||||
bool QuickItemNodeInstance::isMovable() const
|
bool QuickItemNodeInstance::isMovable() const
|
||||||
{
|
{
|
||||||
if (isRootNodeInstance())
|
if (isRootNodeInstance())
|
||||||
@@ -661,6 +679,11 @@ void QuickItemNodeInstance::createEffectItem(bool createEffectItem)
|
|||||||
s_createEffectItem = createEffectItem;
|
s_createEffectItem = createEffectItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickItemNodeInstance::updateDirtyNodeRecursive() const
|
||||||
|
{
|
||||||
|
updateAllDirtyNodeRecursive(quickItem());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|
||||||
|
@@ -102,12 +102,15 @@ public:
|
|||||||
QList<ServerNodeInstance> stateInstances() const;
|
QList<ServerNodeInstance> stateInstances() const;
|
||||||
|
|
||||||
QImage renderImage() const;
|
QImage renderImage() const;
|
||||||
|
QImage renderPreviewImage(const QSize &previewImageSize) const;
|
||||||
|
|
||||||
DesignerSupport *designerSupport() const;
|
DesignerSupport *designerSupport() const;
|
||||||
Qt5NodeInstanceServer *qt5NodeInstanceServer() const;
|
Qt5NodeInstanceServer *qt5NodeInstanceServer() const;
|
||||||
|
|
||||||
static void createEffectItem(bool createEffectItem);
|
static void createEffectItem(bool createEffectItem);
|
||||||
|
|
||||||
|
void updateDirtyNodeRecursive() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QuickItemNodeInstance(QQuickItem*);
|
QuickItemNodeInstance(QQuickItem*);
|
||||||
QQuickItem *quickItem() const;
|
QQuickItem *quickItem() const;
|
||||||
@@ -116,6 +119,7 @@ protected:
|
|||||||
void refresh();
|
void refresh();
|
||||||
QRectF boundingRectWithStepChilds(QQuickItem *parentItem) const;
|
QRectF boundingRectWithStepChilds(QQuickItem *parentItem) const;
|
||||||
void updateDirtyNodeRecursive(QQuickItem *parentItem) const;
|
void updateDirtyNodeRecursive(QQuickItem *parentItem) const;
|
||||||
|
void updateAllDirtyNodeRecursive(QQuickItem *parentItem) const;
|
||||||
static bool anyItemHasContent(QQuickItem *graphicsItem);
|
static bool anyItemHasContent(QQuickItem *graphicsItem);
|
||||||
static bool childItemsHaveContent(QQuickItem *graphicsItem);
|
static bool childItemsHaveContent(QQuickItem *graphicsItem);
|
||||||
|
|
||||||
|
@@ -122,6 +122,11 @@ QImage ServerNodeInstance::renderImage() const
|
|||||||
return m_nodeInstance->renderImage();
|
return m_nodeInstance->renderImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QImage ServerNodeInstance::renderPreviewImage(const QSize &previewImageSize) const
|
||||||
|
{
|
||||||
|
return m_nodeInstance->renderPreviewImage(previewImageSize);
|
||||||
|
}
|
||||||
|
|
||||||
bool ServerNodeInstance::isRootNodeInstance() const
|
bool ServerNodeInstance::isRootNodeInstance() const
|
||||||
{
|
{
|
||||||
return isValid() && m_nodeInstance->isRootNodeInstance();
|
return isValid() && m_nodeInstance->isRootNodeInstance();
|
||||||
@@ -153,6 +158,16 @@ void ServerNodeInstance::setNodeSource(const QString &source)
|
|||||||
m_nodeInstance->setNodeSource(source);
|
m_nodeInstance->setNodeSource(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ServerNodeInstance::holdsQuickItem() const
|
||||||
|
{
|
||||||
|
return m_nodeInstance->isQuickItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServerNodeInstance::updateDirtyNodeRecursive()
|
||||||
|
{
|
||||||
|
m_nodeInstance->updateDirtyNodeRecursive();
|
||||||
|
}
|
||||||
|
|
||||||
bool ServerNodeInstance::isSubclassOf(const QString &superTypeName) const
|
bool ServerNodeInstance::isSubclassOf(const QString &superTypeName) const
|
||||||
{
|
{
|
||||||
return isSubclassOf(internalObject(), superTypeName.toUtf8());
|
return isSubclassOf(internalObject(), superTypeName.toUtf8());
|
||||||
@@ -552,13 +567,6 @@ QObject *ServerNodeInstance::internalObject() const
|
|||||||
return m_nodeInstance->object();
|
return m_nodeInstance->object();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
|
|
||||||
QQuickItem *ServerNodeInstance::internalSGItem() const
|
|
||||||
{
|
|
||||||
return qobject_cast<QQuickItem*>(internalObject());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void ServerNodeInstance::activateState()
|
void ServerNodeInstance::activateState()
|
||||||
{
|
{
|
||||||
m_nodeInstance->activateState();
|
m_nodeInstance->activateState();
|
||||||
|
@@ -98,6 +98,7 @@ public:
|
|||||||
|
|
||||||
void paint(QPainter *painter);
|
void paint(QPainter *painter);
|
||||||
QImage renderImage() const;
|
QImage renderImage() const;
|
||||||
|
QImage renderPreviewImage(const QSize &previewImageSize) const;
|
||||||
|
|
||||||
ServerNodeInstance parent() const;
|
ServerNodeInstance parent() const;
|
||||||
bool hasParent() const;
|
bool hasParent() const;
|
||||||
@@ -196,11 +197,11 @@ private: // functions
|
|||||||
|
|
||||||
void setNodeSource(const QString &source);
|
void setNodeSource(const QString &source);
|
||||||
|
|
||||||
|
bool holdsQuickItem() const;
|
||||||
|
|
||||||
|
void updateDirtyNodeRecursive();
|
||||||
|
|
||||||
QObject *internalObject() const; // should be not used outside of the nodeinstances!!!!
|
QObject *internalObject() const; // should be not used outside of the nodeinstances!!!!
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
|
|
||||||
QQuickItem *internalSGItem() const;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private: // variables
|
private: // variables
|
||||||
QSharedPointer<Internal::ObjectNodeInstance> m_nodeInstance;
|
QSharedPointer<Internal::ObjectNodeInstance> m_nodeInstance;
|
||||||
|
Reference in New Issue
Block a user