serviceWindowGenerationFromText.h 2.92 KB
/**
 * \file serviceWindowGenerationFromTXT.h
 */

#ifndef SERVICEWINDOWGENERATIONFROMTEXT_H
#define SERVICEWINDOWGENERATIONFROMTEXT_H

#include "listenerTXT.h"
#include "extratorFactory.h"
#include "serviceWindowGeneration.h"

#define MAX_TEXT_SIZE 2048 //FIXME: está restrito a 2K bytes de texto

/** \brief Classe que implementa o serviço de extração de texto.
 *
 * \headerfile servico/src/include/serviceWindowGenerationFromTXT.h
 */
class ServiceWindowGenerationFromText : public ServiceWindowGeneration, public ListenerTXT, public ListenerTradutor, public ListenerRenderer, public Thread {

private:
	ExtratorFactory* extrator_factory;
	ExtratorTXT* extratorTXT;

	/** Seta o número de linhas. 
     *
     * \param A quantidade de linhas.
     * \exception ServiceException Se houver algum erro durante a execução.
     */
	void setSizeOfSubtitles(int sub_size);

	/** Define o path do vídeo de LIBRAS. */
	void setPathLibras();

	/** Define o path dos arquivos de saída.
     *
     * \exception RuntimeException Se houver algum erro durante a execução.
     */
	void setPathContents();

	/** Indica se o serviço está sendo executado.
     *
     * \return O status do serviço.
     */
    bool isRunning();
public:
	/** Construtor.
     *
     * \param pathFile Path do arquivo de texto de entrada.
     * \param sublanguage Linguagem das legendas do arquivo.
     * \param transparency Transparência do plano de fundo do vídeo.
     * \param id Identificação do cliente.
     * \param mode Modo de execução.
     */
	ServiceWindowGenerationFromText(char* pathFile, int sublanguage, int transparency, char* id, int mode);

	/** Destrutor */
	~ServiceWindowGenerationFromText();

	/** Notifica novas linhas extraídas.
     *
     * \param line A linha extraída.
     */
	void notifyLine(unsigned char* line);

	/** Recebe a notificação do fim da renderização do vídeo */
	void notifyEndOfRenderization();

	/** Recebe a notificação do fim da tradução do texto.
     *
     * \param glosa O texto traduzido.
     */
	void notifyTranslation(char* glosa);

	/** Envia para a tradução a linha obtida.
     *
     * \param text A linha obtida.
     */
	void notifyTranslator(unsigned char* text);

	/** Envia a glosa para o renderizador.
     *
     * \param glosa A glosa obtida.
     * \exception ServiceException Se houver algum erro durante a execução.
     */
	void notifyRenderer(string glosa);

	/** Notifica o fim da extração do texto.
     *
     * \param line_size O número de linhas extraídas.
     */
	void notifyEnd(int line_size);

	/** Inicia o serviço de extração de texto.
     *
     * \exception ServiceException Se houver algum erro durante a execução.
     */
	void initialize();

	/** Indica o fim do processo do serviço.
    *
    * \return O status do processo.
    */
	bool isFinished();

	/** Este método é chamado quando a Thread for iniciada. */
	void Run();	
};

#endif /* SERVICEWINDOWGENERATIONFROMTEXT_H */