Add bounding rectangle for rendering images in designer support
authorMarco Bubke <marco.bubke@nokia.com>
Wed, 31 Aug 2011 16:29:13 +0000 (18:29 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 31 Aug 2011 16:34:27 +0000 (18:34 +0200)
Elements can be outside the root items bounding rectange. So we compute
the bounding rectangle of an item and its children on the designer side. We
exclude all children which are the designer created.

Change-Id: I3c4f9ca5291c8f65e3670be1fd0900edf449b46f
Reviewed-on: http://codereview.qt.nokia.com/3963
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>

src/declarative/designer/designersupport.cpp
src/declarative/designer/designersupport.h

index 824642a..91186a4 100644 (file)
@@ -101,7 +101,7 @@ void DesignerSupport::derefFromEffectItem(QSGItem *referencedItem, bool unhide)
     QSGItemPrivate::get(referencedItem)->derefFromEffectItem(unhide);
 }
 
-QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem)
+QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize)
 {
     if (referencedItem == 0 || referencedItem->parentItem() == 0) {
         qDebug() << __FILE__ << __LINE__ << "Warning: Item can be rendered.";
@@ -113,8 +113,8 @@ QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem)
     Q_ASSERT(renderTexture);
     if (renderTexture == 0)
          return QImage();
-    renderTexture->setRect(referencedItem->boundingRect());
-    renderTexture->setSize(referencedItem->boundingRect().size().toSize());
+    renderTexture->setRect(boundingRect);
+    renderTexture->setSize(imageSize);
     renderTexture->updateTexture();
 
     QImage renderImage = renderTexture->toImage();
@@ -123,8 +123,6 @@ QImage DesignerSupport::renderImageForItem(QSGItem *referencedItem)
     if (renderImage.size().isEmpty())
         qDebug() << __FILE__ << __LINE__ << "Warning: Image is empty.";
 
-    qDebug() << __FUNCTION__ << renderImage.size();
-
     return renderImage;
 }
 
index 0165769..5e5b38b 100644 (file)
@@ -57,6 +57,7 @@
 
 #include <QtCore/QtGlobal>
 #include <QtCore/QHash>
+#include <QtCore/QRectF>
 
 QT_BEGIN_NAMESPACE
 
@@ -108,7 +109,7 @@ public:
     void refFromEffectItem(QSGItem *referencedItem, bool hide = true);
     void derefFromEffectItem(QSGItem *referencedItem, bool unhide = true);
 
-    QImage renderImageForItem(QSGItem *referencedItem);
+    QImage renderImageForItem(QSGItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize);
 
     static bool isDirty(QSGItem *referencedItem, DirtyType dirtyType);
     static void resetDirty(QSGItem *referencedItem);