From: Alan Alpert Date: Thu, 22 Mar 2012 08:12:58 +0000 (+1000) Subject: Fix Sprite Assembly X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=c913351c9d6e3181cdddcc851e9d80cd7689fe93;p=konrad%2Fqtdeclarative.git Fix Sprite Assembly 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 --- diff --git a/src/quick/items/qquickspriteengine.cpp b/src/quick/items/qquickspriteengine.cpp index 1c35688..d4ddbc4 100644 --- a/src/quick/items/qquickspriteengine.cpp +++ b/src/quick/items/qquickspriteengine.cpp @@ -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;