Fix Sprite Assembly
authorAlan Alpert <alan.alpert@nokia.com>
Thu, 22 Mar 2012 08:12:58 +0000 (18:12 +1000)
committerQt by Nokia <qt-info@nokia.com>
Fri, 23 Mar 2012 02:45:21 +0000 (03:45 +0100)
This optimization doesn't account for the width of the assembled image
possibly being too small to fit the whole source image width. Since it
meant copying more image data than we needed, I'm no longer convinced
that it actually is an optimization over a simple cut (as this patch
implements).

Change-Id: I3fe502a75979e972f62d9dbf26f1ffec9069a102
Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
src/quick/items/qquickspriteengine.cpp

index 1c35688..d4ddbc4 100644 (file)
@@ -411,9 +411,9 @@ QImage QQuickSpriteEngine::assembledImage()
         int frameWidth = state->m_frameWidth;
         int frameHeight = state->m_frameHeight;
         if (img.height() == frameHeight && img.width() <  maxSize){//Simple case
-            p.drawImage(0,y,img);
+            p.drawImage(0,y,img.copy(state->m_frameX,0,state->m_frames * frameWidth, frameHeight));
+            state->m_rowStartX = 0;
             state->m_rowY = y;
-            state->m_rowStartX = state->m_frameX;//In case it was offset, but we took the simple route of not chopping out the other bits
             y += frameHeight;
         }else{//Chopping up image case
             state->m_framesPerRow = image.width()/frameWidth;