Fix double page mode composing regression

This commit is contained in:
Felix Kauselmann 2014-11-02 20:41:06 +01:00
parent 810920c471
commit d1c3969dde

View File

@ -552,36 +552,54 @@ QPixmap * Render::getCurrentDoubleMangaPage()
{
QPoint leftpage(0,0);
QPoint rightpage(0,0);
QSize leftsize;
QSize rightsize;
int totalWidth,totalHeight;
switch (imageRotation)
{
case 0:
totalHeight = qMax(buffer[currentPageBufferedIndex]->height(), buffer[currentPageBufferedIndex+1]->height());
totalWidth = buffer[currentPageBufferedIndex]->width() + buffer[currentPageBufferedIndex+1]->width();
rightpage.setX(buffer[currentPageBufferedIndex+1]->width());
leftsize.setHeight(totalHeight);
rightsize.setHeight(totalHeight);
leftsize.setWidth(buffer[currentPageBufferedIndex+1]->width() + (totalHeight - buffer[currentPageBufferedIndex+1]->height()));
rightsize.setWidth(buffer[currentPageBufferedIndex]->width() + (totalHeight - buffer[currentPageBufferedIndex]->height()));
totalWidth = leftsize.rwidth() + rightsize.rwidth();
rightpage.setX(leftsize.rwidth());
break;
case 90:
totalWidth = qMax(buffer[currentPageBufferedIndex]->width(), buffer[currentPageBufferedIndex+1]->width());
totalHeight = buffer[currentPageBufferedIndex]->height() + buffer[currentPageBufferedIndex+1]->height();
rightpage.setY(buffer[currentPageBufferedIndex+1]->height());
leftsize.setWidth(totalWidth);
rightsize.setWidth(totalWidth);
leftsize.setHeight(buffer[currentPageBufferedIndex+1]->height() + (totalWidth - buffer[currentPageBufferedIndex+1]->width()));
rightsize.setHeight(buffer[currentPageBufferedIndex]->height() + (totalWidth - buffer[currentPageBufferedIndex]->width()));
totalHeight = leftsize.rheight() + rightsize.rheight();
rightpage.setY(leftsize.rheight());
break;
case 180:
totalHeight = qMax(buffer[currentPageBufferedIndex]->height(), buffer[currentPageBufferedIndex+1]->height());
totalWidth = buffer[currentPageBufferedIndex]->width() + buffer[currentPageBufferedIndex+1]->width();
leftpage.setX(buffer[currentPageBufferedIndex]->width());
leftsize.setHeight(totalHeight);
rightsize.setHeight(totalHeight);
leftsize.setWidth(buffer[currentPageBufferedIndex+1]->width() + (totalHeight - buffer[currentPageBufferedIndex+1]->height()));
rightsize.setWidth(buffer[currentPageBufferedIndex]->width() + (totalHeight - buffer[currentPageBufferedIndex]->height()));
totalWidth = leftsize.rwidth() + rightsize.rwidth();
leftpage.setX(rightsize.rwidth());
break;
case 270:
totalWidth = qMax(buffer[currentPageBufferedIndex]->width(), buffer[currentPageBufferedIndex+1]->width());
totalHeight = buffer[currentPageBufferedIndex]->height() + buffer[currentPageBufferedIndex+1]->height();
leftpage.setY(buffer[currentPageBufferedIndex]->height());
leftsize.setWidth(totalWidth);
rightsize.setWidth(totalWidth);
leftsize.setHeight(buffer[currentPageBufferedIndex+1]->height() + (totalWidth - buffer[currentPageBufferedIndex+1]->width()));
rightsize.setHeight(buffer[currentPageBufferedIndex]->height() + (totalWidth - buffer[currentPageBufferedIndex]->width()));
totalHeight = leftsize.rheight() + rightsize.rheight();
leftpage.setY(rightsize.rheight());
break;
default:
return NULL;
}
QPixmap * page = new QPixmap(totalWidth, totalHeight);
QPainter painter(page);
painter.drawImage(rightpage, *buffer[currentPageBufferedIndex]);
painter.drawImage(leftpage, *buffer[currentPageBufferedIndex+1]);
painter.drawImage(QRect(rightpage, rightsize), *buffer[currentPageBufferedIndex]);
painter.drawImage(QRect(leftpage, leftsize), *buffer[currentPageBufferedIndex+1]);
return page;
}
else