static BlitList calcBlitsInt(ColumnList &srcCols, ColumnList &dstCols) { BlitList blits; while (!srcCols.empty()) { Column srcCol = srcCols.takeFirst(); Q_ASSERT(srcCol.h > 0); while (!dstCols.empty() && srcCol.h > 0) { Column dstCol = dstCols.takeFirst(); if (srcCol.h > dstCol.h) { /* srcCol doesn't fully fit into dstCol */ blits << Blit(srcCol.x, srcCol.y, dstCol.x, dstCol.y, dstCol.h); srcCol.y += dstCol.h; srcCol.h -= dstCol.h; } else if (srcCol.h < dstCol.h) { /* srcCol fits into dstCol with space remaining */ blits << Blit(srcCol.x, srcCol.y, dstCol.x, dstCol.y, srcCol.h); dstCol.y += srcCol.h; dstCol.h -= srcCol.h; dstCols.prepend(dstCol); srcCol.h = 0; } else { /* srcCol fits perfectly into dstCol */ blits << Blit(srcCol.x, srcCol.y, dstCol.x, dstCol.y, dstCol.h); } } } return blits; }