| 497 | } |
| 498 | |
| 499 | QPixmap *Render::getCurrentDoubleMangaPage() |
| 500 | { |
| 501 | if (currentPageIsDoublePage()) { |
| 502 | QPoint leftpage(0, 0); |
| 503 | QPoint rightpage(0, 0); |
| 504 | QSize leftsize = buffer[currentPageBufferedIndex + 1]->size(); |
| 505 | QSize rightsize = buffer[currentPageBufferedIndex]->size(); |
| 506 | int totalWidth, totalHeight; |
| 507 | switch (imageRotation) { |
| 508 | case 0: |
| 509 | totalHeight = qMax(leftsize.rheight(), rightsize.rheight()); |
| 510 | leftsize.scale(leftsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding); |
| 511 | rightsize.scale(rightsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding); |
| 512 | totalWidth = leftsize.rwidth() + rightsize.rwidth(); |
| 513 | rightpage.setX(leftsize.rwidth()); |
| 514 | break; |
| 515 | case 90: |
| 516 | totalWidth = qMax(leftsize.rwidth(), rightsize.rwidth()); |
| 517 | leftsize.scale(totalWidth, leftsize.rheight(), Qt::KeepAspectRatioByExpanding); |
| 518 | rightsize.scale(totalWidth, rightsize.rheight(), Qt::KeepAspectRatioByExpanding); |
| 519 | totalHeight = leftsize.rheight() + rightsize.rheight(); |
| 520 | rightpage.setY(leftsize.rheight()); |
| 521 | break; |
| 522 | case 180: |
| 523 | totalHeight = qMax(leftsize.rheight(), rightsize.rheight()); |
| 524 | leftsize.scale(leftsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding); |
| 525 | rightsize.scale(rightsize.rwidth(), totalHeight, Qt::KeepAspectRatioByExpanding); |
| 526 | totalWidth = leftsize.rwidth() + rightsize.rwidth(); |
| 527 | leftpage.setX(rightsize.rwidth()); |
| 528 | break; |
| 529 | case 270: |
| 530 | totalWidth = qMax(leftsize.rwidth(), rightsize.rwidth()); |
| 531 | leftsize.scale(totalWidth, leftsize.rheight(), Qt::KeepAspectRatioByExpanding); |
| 532 | rightsize.scale(totalWidth, rightsize.rheight(), Qt::KeepAspectRatioByExpanding); |
| 533 | totalHeight = leftsize.rheight() + rightsize.rheight(); |
| 534 | leftpage.setY(rightsize.rheight()); |
| 535 | break; |
| 536 | default: |
| 537 | return nullptr; |
| 538 | } |
| 539 | auto page = new QPixmap(totalWidth, totalHeight); |
| 540 | QPainter painter(page); |
| 541 | painter.drawImage(QRect(rightpage, rightsize), *buffer[currentPageBufferedIndex]); |
| 542 | painter.drawImage(QRect(leftpage, leftsize), *buffer[currentPageBufferedIndex + 1]); |
| 543 | return page; |
| 544 | } else { |
| 545 | return nullptr; |
| 546 | } |
| 547 | } |
| 548 | |
| 549 | const QImage *Render::bufferedImage(int absolutePageIndex) const |
| 550 | { |