46 lines
962 B
C++
46 lines
962 B
C++
#include <QtGlobal>
|
|
#include <QtWidgets>
|
|
#include "ThumbGen.h"
|
|
|
|
|
|
#include "PDFPageWidget.h"
|
|
ThumbGen::ThumbGen(void)
|
|
{
|
|
|
|
}
|
|
|
|
double ThumbGen::calcDpi(Poppler::Page *pdfPage, QSize targetSize){
|
|
double dpi;
|
|
QSizeF oriSize = pdfPage->pageSizeF();
|
|
double oriDpi = 72;
|
|
if (targetSize.width() > targetSize.height()){
|
|
dpi = targetSize.height()/(float)oriSize.height()*72;
|
|
}else {
|
|
dpi= targetSize.width()/(float)oriSize.width()*72;
|
|
}
|
|
return dpi;
|
|
|
|
}
|
|
|
|
void ThumbGen::run(){
|
|
while(pWidgets.size()!=0){
|
|
mutex.lock();
|
|
PDFPageWidget *pw = pWidgets.first();
|
|
pWidgets.pop_front();
|
|
Poppler::Page *pp = pPages.first();
|
|
pPages.pop_front();
|
|
mutex.unlock();
|
|
|
|
double dpi=calcDpi(pp,pw->size());
|
|
QImage pageImage = pp->renderToImage(dpi, dpi);
|
|
emit updateThumbnail(pageImage,pw);
|
|
}
|
|
}
|
|
void ThumbGen::render(PDFPageWidget* pw,Poppler::Page* pp){
|
|
mutex.lock();
|
|
pWidgets.append(pw);
|
|
pPages.append(pp);
|
|
mutex.unlock();
|
|
}
|
|
|