kimgio generator: tiled rendering support

REVIEW: 113250
This commit is contained in:
Fabio D'Urso 2013-10-11 15:56:27 +02:00
parent 5454be6c60
commit bdcc7d3eb1

View file

@ -53,6 +53,7 @@ KIMGIOGenerator::KIMGIOGenerator( QObject *parent, const QVariantList &args )
{
setFeature( ReadRawData );
setFeature( Threaded );
setFeature( TiledRendering );
setFeature( PrintNative );
setFeature( PrintToFile );
@ -139,12 +140,29 @@ bool KIMGIOGenerator::doCloseDocument()
QImage KIMGIOGenerator::image( Okular::PixmapRequest * request )
{
// perform a smooth scaled generation
int width = request->width();
int height = request->height();
if ( request->page()->rotation() % 2 == 1 )
qSwap( width, height );
if ( request->isTile() )
{
const QRect srcRect = request->normalizedRect().geometry( m_img.width(), m_img.height() );
const QRect destRect = request->normalizedRect().geometry( request->width(), request->height() );
return m_img.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
QImage destImg( destRect.size(), QImage::Format_RGB32 );
destImg.fill( Qt::white );
QPainter p( &destImg );
p.setRenderHint( QPainter::SmoothPixmapTransform );
p.drawImage( destImg.rect(), m_img, srcRect );
return destImg;
}
else
{
int width = request->width();
int height = request->height();
if ( request->page()->rotation() % 2 == 1 )
qSwap( width, height );
return m_img.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
}
}
bool KIMGIOGenerator::print( QPrinter& printer )