Fix scaling error. Use QSizes builtin scaling capabilities.

This commit is contained in:
Felix Kauselmann 2014-11-02 21:34:06 +01:00
parent d1c3969dde
commit bf5c0e9326

View File

@ -490,44 +490,36 @@ QPixmap * Render::getCurrentDoublePage()
{ {
QPoint leftpage(0,0); QPoint leftpage(0,0);
QPoint rightpage(0,0); QPoint rightpage(0,0);
QSize leftsize; QSize leftsize = buffer[currentPageBufferedIndex]->size();
QSize rightsize; QSize rightsize = buffer[currentPageBufferedIndex+1]->size();
int totalWidth,totalHeight; int totalWidth,totalHeight;
switch (imageRotation) switch (imageRotation)
{ {
case 0: case 0:
totalHeight = qMax(buffer[currentPageBufferedIndex]->height(), buffer[currentPageBufferedIndex+1]->height()); totalHeight = qMax(leftsize.rheight(),rightsize.rheight());
leftsize.setHeight(totalHeight); leftsize.scale(leftsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
rightsize.setHeight(totalHeight); rightsize.scale(rightsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
leftsize.setWidth(buffer[currentPageBufferedIndex]->width() + (totalHeight - buffer[currentPageBufferedIndex]->height()));
rightsize.setWidth(buffer[currentPageBufferedIndex+1]->width() + (totalHeight - buffer[currentPageBufferedIndex+1]->height()));
totalWidth = leftsize.rwidth() + rightsize.rwidth(); totalWidth = leftsize.rwidth() + rightsize.rwidth();
rightpage.setX(leftsize.rwidth()); rightpage.setX(leftsize.rwidth());
break; break;
case 90: case 90:
totalWidth = qMax(buffer[currentPageBufferedIndex]->width(), buffer[currentPageBufferedIndex+1]->width()); totalWidth = qMax(leftsize.rwidth(), rightsize.rwidth());
leftsize.setWidth(totalWidth); leftsize.scale(totalWidth, leftsize.rheight(), Qt::KeepAspectRatioByExpanding);
rightsize.setWidth(totalWidth); rightsize.scale(totalWidth, rightsize.rheight(), Qt::KeepAspectRatioByExpanding);
leftsize.setHeight(buffer[currentPageBufferedIndex]->height() + (totalWidth - buffer[currentPageBufferedIndex]->width()));
rightsize.setHeight(buffer[currentPageBufferedIndex+1]->height() + (totalWidth - buffer[currentPageBufferedIndex+1]->width()));
totalHeight = leftsize.rheight() + rightsize.rheight(); totalHeight = leftsize.rheight() + rightsize.rheight();
rightpage.setY(leftsize.rheight()); rightpage.setY(leftsize.rheight());
break; break;
case 180: case 180:
totalHeight = qMax(buffer[currentPageBufferedIndex]->height(), buffer[currentPageBufferedIndex+1]->height()); totalHeight = qMax(leftsize.rheight(),rightsize.rheight());
leftsize.setHeight(totalHeight); leftsize.scale(leftsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
rightsize.setHeight(totalHeight); rightsize.scale(rightsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
leftsize.setWidth(buffer[currentPageBufferedIndex]->width() + (totalHeight - buffer[currentPageBufferedIndex]->height()));
rightsize.setWidth(buffer[currentPageBufferedIndex+1]->width() + (totalHeight - buffer[currentPageBufferedIndex+1]->height()));
totalWidth = leftsize.rwidth() + rightsize.rwidth(); totalWidth = leftsize.rwidth() + rightsize.rwidth();
leftpage.setX(rightsize.rwidth()); leftpage.setX(rightsize.rwidth());
break; break;
case 270: case 270:
totalWidth = qMax(buffer[currentPageBufferedIndex]->width(), buffer[currentPageBufferedIndex+1]->width()); totalWidth = qMax(leftsize.rwidth(), rightsize.rwidth());
leftsize.setWidth(totalWidth); leftsize.scale(totalWidth, leftsize.rheight(), Qt::KeepAspectRatioByExpanding);
rightsize.setWidth(totalWidth); rightsize.scale(totalWidth, rightsize.rheight(), Qt::KeepAspectRatioByExpanding);
leftsize.setHeight(buffer[currentPageBufferedIndex]->height() + (totalWidth - buffer[currentPageBufferedIndex]->width()));
rightsize.setHeight(buffer[currentPageBufferedIndex+1]->height() + (totalWidth - buffer[currentPageBufferedIndex+1]->width()));
totalHeight = leftsize.rheight() + rightsize.rheight(); totalHeight = leftsize.rheight() + rightsize.rheight();
leftpage.setY(rightsize.rheight()); leftpage.setY(rightsize.rheight());
break; break;
@ -552,44 +544,36 @@ QPixmap * Render::getCurrentDoubleMangaPage()
{ {
QPoint leftpage(0,0); QPoint leftpage(0,0);
QPoint rightpage(0,0); QPoint rightpage(0,0);
QSize leftsize; QSize leftsize = buffer[currentPageBufferedIndex+1]->size();
QSize rightsize; QSize rightsize = buffer[currentPageBufferedIndex]->size();
int totalWidth,totalHeight; int totalWidth,totalHeight;
switch (imageRotation) switch (imageRotation)
{ {
case 0: case 0:
totalHeight = qMax(buffer[currentPageBufferedIndex]->height(), buffer[currentPageBufferedIndex+1]->height()); totalHeight = qMax(leftsize.rheight(),rightsize.rheight());
leftsize.setHeight(totalHeight); leftsize.scale(leftsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
rightsize.setHeight(totalHeight); rightsize.scale(rightsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
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(); totalWidth = leftsize.rwidth() + rightsize.rwidth();
rightpage.setX(leftsize.rwidth()); rightpage.setX(leftsize.rwidth());
break; break;
case 90: case 90:
totalWidth = qMax(buffer[currentPageBufferedIndex]->width(), buffer[currentPageBufferedIndex+1]->width()); totalWidth = qMax(leftsize.rwidth(), rightsize.rwidth());
leftsize.setWidth(totalWidth); leftsize.scale(totalWidth, leftsize.rheight(), Qt::KeepAspectRatioByExpanding);
rightsize.setWidth(totalWidth); rightsize.scale(totalWidth, rightsize.rheight(), Qt::KeepAspectRatioByExpanding);
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(); totalHeight = leftsize.rheight() + rightsize.rheight();
rightpage.setY(leftsize.rheight()); rightpage.setY(leftsize.rheight());
break; break;
case 180: case 180:
totalHeight = qMax(buffer[currentPageBufferedIndex]->height(), buffer[currentPageBufferedIndex+1]->height()); totalHeight = qMax(leftsize.rheight(),rightsize.rheight());
leftsize.setHeight(totalHeight); leftsize.scale(leftsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
rightsize.setHeight(totalHeight); rightsize.scale(rightsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding);
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(); totalWidth = leftsize.rwidth() + rightsize.rwidth();
leftpage.setX(rightsize.rwidth()); leftpage.setX(rightsize.rwidth());
break; break;
case 270: case 270:
totalWidth = qMax(buffer[currentPageBufferedIndex]->width(), buffer[currentPageBufferedIndex+1]->width()); totalWidth = qMax(leftsize.rwidth(), rightsize.rwidth());
leftsize.setWidth(totalWidth); leftsize.scale(totalWidth, leftsize.rheight(), Qt::KeepAspectRatioByExpanding);
rightsize.setWidth(totalWidth); rightsize.scale(totalWidth, rightsize.rheight(), Qt::KeepAspectRatioByExpanding);
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(); totalHeight = leftsize.rheight() + rightsize.rheight();
leftpage.setY(rightsize.rheight()); leftpage.setY(rightsize.rheight());
break; break;