MCPcopy Create free account
hub / github.com/YACReader/yacreader / getCurrentDoubleMangaPage

Method getCurrentDoubleMangaPage

YACReader/render.cpp:499–547  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

497}
498
499QPixmap *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
549const QImage *Render::bufferedImage(int absolutePageIndex) const
550{

Callers 1

updatePageMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected