void zoomhandler_test::testApi() { KoZoomHandler zoomHandler; qreal x, y; zoomHandler.setResolution( 128, 129 ); QCOMPARE( zoomHandler.resolutionX(), 128. ); QCOMPARE( zoomHandler.resolutionY(), 129. ); zoomHandler.setZoomedResolution( 50, 60 ); QCOMPARE( zoomHandler.zoomedResolutionX(), 50.); QCOMPARE( zoomHandler.zoomedResolutionY(), 60.); zoomHandler.setZoom( 0.2 ); // is 20% QCOMPARE( zoomHandler.zoomInPercent(), 20); QCOMPARE( zoomHandler.resolutionX(), 128. ); QCOMPARE( zoomHandler.resolutionY(), 129. ); QCOMPARE( zoomHandler.zoomedResolutionX(), 25.6 ); QCOMPARE( zoomHandler.zoomedResolutionY(), 25.8 ); zoomHandler.zoom( &x, &y ); QVERIFY( x == 25.6 && y == 25.8 ); zoomHandler.setZoom( 1. ); zoomHandler.setZoom( 0.2 ); QCOMPARE( zoomHandler.zoomInPercent(), 20 ); QCOMPARE( zoomHandler.resolutionX(), 128. ); QCOMPARE( zoomHandler.resolutionY(), 129. ); QCOMPARE( zoomHandler.zoomedResolutionX(), 25.6 ); QCOMPARE( zoomHandler.zoomedResolutionY(), 25.8 ); zoomHandler.zoom( &x, &y ); QVERIFY( x == 25.6 && y == 25.8 ); zoomHandler.setZoomMode( KoZoomMode::ZOOM_CONSTANT ); QCOMPARE( zoomHandler.zoomMode(), KoZoomMode::ZOOM_CONSTANT ); zoomHandler.setZoomMode( KoZoomMode::ZOOM_WIDTH ); QCOMPARE( zoomHandler.zoomMode(), KoZoomMode::ZOOM_WIDTH ); zoomHandler.setZoomMode( KoZoomMode::ZOOM_PAGE ); QCOMPARE( zoomHandler.zoomMode(), KoZoomMode::ZOOM_PAGE ); }
void KPrPdfPrintJob::startPrinting(RemovePolicy removePolicy) { int fromPage = m_printer.fromPage() > 0 ? m_printer.fromPage() - 1: 0; int toPage = m_printer.toPage() > 0 ? m_printer.toPage() - 1: m_pages.size() - 1; Q_ASSERT( fromPage >= 0 && fromPage < m_pages.size() ); Q_ASSERT( toPage >= 0 && toPage < m_pages.size() ); KoZoomHandler zoomHandler; zoomHandler.setResolution( m_printer.resolution(), m_printer.resolution() ); m_printer.setFullPage(true); const KoPageLayout & firstLayout = m_pages.at(fromPage)->pageLayout(); m_printer.setPaperSize(QSizeF(firstLayout.width,firstLayout.height),QPrinter::Millimeter); QPainter painter( &m_printer ); for ( int i = fromPage; i <= toPage; ++i ) { KoPAPageBase *page = m_pages.at(i); const KoPageLayout & layout = page->pageLayout(); m_printer.setPaperSize(QSizeF(layout.width,layout.height),QPrinter::Millimeter); QSize size = m_printer.pageRect().size(); painter.save(); if (i != fromPage) { m_printer.newPage(); } KoPAUtil::setZoom(layout, size, zoomHandler); QRect pageRect(KoPAUtil::pageRect( layout, size, zoomHandler)); painter.setClipRect( pageRect ); painter.setRenderHint( QPainter::Antialiasing ); painter.translate( pageRect.topLeft() ); m_pageProvider->setPageData(i + 1, page); page->paintPage( painter, zoomHandler ); painter.restore(); } if ( removePolicy == DeleteWhenDone ) { deleteLater(); } }
// TODO create a lot of fancy options for printing // e.g. print also notes // For now we print to the center of the page honoring the margins // The page is zoomed to be as big as possible void KoPAPrintJob::startPrinting(RemovePolicy removePolicy) { int fromPage = m_printer.fromPage() ? m_printer.fromPage() - 1: 0; int toPage = m_printer.toPage() ? m_printer.toPage() - 1: m_pages.size() - 1; Q_ASSERT( fromPage >= 0 && fromPage < m_pages.size() ); Q_ASSERT( toPage >= 0 && toPage < m_pages.size() ); KoZoomHandler zoomHandler; zoomHandler.setResolution( m_printer.resolution(), m_printer.resolution() ); QSize size = m_printer.pageRect().size(); QPainter painter( &m_printer ); for ( int i = fromPage; i <= toPage; ++i ) { painter.save(); if (i != fromPage) { m_printer.newPage(); } KoPAPageBase * page = m_pages.at(i); const KoPageLayout & layout = page->pageLayout(); KoPAUtil::setZoom( layout, size, zoomHandler ); QRect pageRect( KoPAUtil::pageRect( layout, size, zoomHandler ) ); painter.setClipRect( pageRect ); painter.setRenderHint( QPainter::Antialiasing ); painter.translate( pageRect.topLeft() ); page->paintPage( painter, zoomHandler ); painter.restore(); } if ( removePolicy == DeleteWhenDone ) { deleteLater(); } }