@ -8,7 +8,6 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <qpainter.h>
# include <qimage.h>
# include <kprinter.h>
# include <okular/core/page.h>
@ -27,11 +26,25 @@ KIMGIOGenerator::~KIMGIOGenerator()
bool KIMGIOGenerator : : loadDocument ( const QString & fileName , QVector < Okular : : Page * > & pagesVector )
{
m_pix = new QPixmap ( fileName ) ;
if ( ! m_img . load ( fileName ) )
return false ;
pagesVector . resize ( 1 ) ;
Okular : : Page * page = new Okular : : Page ( 0 , m_pix - > width ( ) , m_pix - > height ( ) , Okular : : Rotation0 ) ;
Okular : : Page * page = new Okular : : Page ( 0 , m_img . width ( ) , m_img . height ( ) , Okular : : Rotation0 ) ;
pagesVector [ 0 ] = page ;
return true ;
}
bool KIMGIOGenerator : : loadDocumentFromData ( const QByteArray & fileData , QVector < Okular : : Page * > & pagesVector )
{
if ( ! m_img . loadFromData ( fileData ) )
return false ;
pagesVector . resize ( 1 ) ;
Okular : : Page * page = new Okular : : Page ( 0 , m_img . width ( ) , m_img . height ( ) , Okular : : Rotation0 ) ;
pagesVector [ 0 ] = page ;
return true ;
@ -39,8 +52,7 @@ bool KIMGIOGenerator::loadDocument( const QString & fileName, QVector<Okular::Pa
bool KIMGIOGenerator : : closeDocument ( )
{
delete m_pix ;
m_pix = 0 ;
m_img = QImage ( ) ;
return true ;
}
@ -57,7 +69,7 @@ void KIMGIOGenerator::generatePixmap( Okular::PixmapRequest * request )
int height = request - > height ( ) ;
if ( request - > page ( ) - > rotation ( ) % 2 = = 1 )
qSwap ( width , height ) ;
QImage image = m_p ix - > toI ma ge ( ) . scaled ( width , height , Qt : : IgnoreAspectRatio , Qt : : SmoothTransformation ) ;
QImage image = m_img . scaled ( width , height , Qt : : IgnoreAspectRatio , Qt : : SmoothTransformation ) ;
request - > page ( ) - > setPixmap ( request - > id ( ) , new QPixmap ( QPixmap : : fromImage ( image ) ) ) ;
// signal that the request has been accomplished
@ -67,9 +79,14 @@ void KIMGIOGenerator::generatePixmap( Okular::PixmapRequest * request )
bool KIMGIOGenerator : : print ( KPrinter & printer )
{
QPainter p ( & printer ) ;
p . drawPixmap ( 0 , 0 , * m_pix ) ;
p . drawImage ( 0 , 0 , m_img ) ;
return true ;
}
bool KIMGIOGenerator : : hasFeature ( GeneratorFeature feature ) const
{
return feature = = Okular : : Generator : : ReadRawData ;
}
# include "generator_kimgio.moc"