You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

123 lines
3.1 KiB

/***************************************************************************
* Copyright (C) 2005 by Piotr Szymanski <niedakh@gmail.com> *
* Copyright (C) 2007 by Albert Astals Cid <aacid@kde.org> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "interpreter_cmd.h"
#include <qimage.h>
#include <kdebug.h>
#include "gshandler.h"
#include "core/generator.h"
GSInterpreterCMD *GSInterpreterCMD::theInterpreter = 0;
GSInterpreterCMD *GSInterpreterCMD::getCreateInterpreter()
{
if (!theInterpreter)
{
theInterpreter = new GSInterpreterCMD();
}
return theInterpreter;
}
GSInterpreterCMD::GSInterpreterCMD() :
m_sendStructure ( false ),
m_magnify ( 1 ),
m_aaText ( 1 ),
m_aaGfx ( 1 ),
m_pfonts ( false ),
m_handler ( 0 )
{
}
GSInterpreterCMD::~GSInterpreterCMD()
{
}
void GSInterpreterCMD::setFileName(const QString &filename)
{
m_filename = filename;
}
void GSInterpreterCMD::setStructure(const PsPosition &prolog, const PsPosition &setup)
{
m_sendStructure = true;
m_structureData[0] = prolog;
m_structureData[1] = setup;
}
void GSInterpreterCMD::setMagnify( double magnify )
{
m_magnify = magnify;
}
void GSInterpreterCMD::setMedia( const QString &media )
{
m_media = media;
}
void GSInterpreterCMD::setPlatformFonts(bool pfonts)
{
m_pfonts = pfonts;
}
void GSInterpreterCMD::setAABits(int text, int graphics)
{
m_aaText = text;
m_aaGfx = graphics;
}
void GSInterpreterCMD::setPosition(const PsPosition &pos)
{
m_position = pos;
}
void GSInterpreterCMD::fordwardImage(QImage *image)
{
if (image->width() != m_request->width() || image->height() != m_request->height())
{
kWarning(4656) << "Generated image does not match wanted size " << image->width() << " " << m_request->width() << " " << image->height() << " " << m_request->height() << endl;
QImage aux = image->scaled(m_request->width(), m_request->height());
delete image;
image = new QImage(aux);
}
emit imageDone(image, m_request);
}
void GSInterpreterCMD::startRequest(Okular::PixmapRequest *request)
{
m_request = request;
m_semaphore.release();
}
void GSInterpreterCMD::run()
{
m_handler = new GSHandler();
while(1)
{
m_semaphore.acquire();
m_handler->init(m_media, m_magnify, m_request->width(), m_request->height(), m_pfonts, m_aaText, m_aaGfx, this);
// send structural information
if (m_sendStructure)
{
m_handler->process(m_filename, m_structureData[0]);
m_handler->process(m_filename, m_structureData[1]);
}
m_handler->process(m_filename, m_position);
}
}
#include "interpreter_cmd.moc"