void PluckerGenerator::generatePixmap( Okular::PixmapRequest * request ) { const QSizeF size = mPages[ request->pageNumber() ]->size(); QPixmap *pixmap = new QPixmap( request->width(), request->height() ); pixmap->fill( Qt::white ); QPainter p; p.begin( pixmap ); qreal width = request->width(); qreal height = request->height(); p.scale( width / (qreal)size.width(), height / (qreal)size.height() ); mPages[ request->pageNumber() ]->drawContents( &p ); p.end(); request->page()->setPixmap( request->id(), pixmap ); if ( !mLinkAdded.contains( request->pageNumber() ) ) { QLinkedList<Okular::ObjectRect*> objects; for ( int i = 0; i < mLinks.count(); ++i ) { if ( mLinks[ i ].page == request->pageNumber() ) { QTextDocument *document = mPages[ request->pageNumber() ]; QRectF rect; calculateBoundingRect( document, mLinks[ i ].start, mLinks[ i ].end, rect ); objects.append( new Okular::ObjectRect( rect.left(), rect.top(), rect.right(), rect.bottom(), false, Okular::ObjectRect::Action, mLinks[ i ].link ) ); } } if ( !objects.isEmpty() ) request->page()->setObjectRects( objects ); mLinkAdded.insert( request->pageNumber() ); } signalPixmapRequestDone( request ); }
void OkularOdpGenerator::generatePixmap( Okular::PixmapRequest *request ) { QPixmap* pix; if (!m_doc) { pix = new QPixmap(request->width(), request->height()); QPainter painter(pix); painter.fillRect(0 ,0 , request->width(), request->height(), Qt::white); } else { KoPAPageBase* page = m_doc->pages().value(request->pageNumber()); pix = new QPixmap(page->thumbnail(QSize(request->width(), request->height()))); } // API change #if OKULAR_IS_VERSION(0, 16, 60) request->page()->setPixmap( request->observer(), pix ); #else request->page()->setPixmap( request->id(), pix ); #endif signalPixmapRequestDone( request ); }