mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
merge
This commit is contained in:
commit
ce0a6259f6
@ -353,7 +353,7 @@ void MainWindowViewer::createActions()
|
|||||||
setBookmarkAction->setCheckable(true);
|
setBookmarkAction->setCheckable(true);
|
||||||
setBookmarkAction->setData(SET_BOOKMARK_ACTION_Y);
|
setBookmarkAction->setData(SET_BOOKMARK_ACTION_Y);
|
||||||
setBookmarkAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_BOOKMARK_ACTION_Y));
|
setBookmarkAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SET_BOOKMARK_ACTION_Y));
|
||||||
connect(setBookmarkAction,SIGNAL(triggered (bool)),viewer,SLOT(setBookmarkAction(bool)));
|
connect(setBookmarkAction,SIGNAL(triggered (bool)),viewer,SLOT(setBookmark(bool)));
|
||||||
connect(viewer,SIGNAL(pageAvailable(bool)),setBookmarkAction,SLOT(setEnabled(bool)));
|
connect(viewer,SIGNAL(pageAvailable(bool)),setBookmarkAction,SLOT(setEnabled(bool)));
|
||||||
connect(viewer,SIGNAL(pageIsBookmark(bool)),setBookmarkAction,SLOT(setChecked(bool)));
|
connect(viewer,SIGNAL(pageIsBookmark(bool)),setBookmarkAction,SLOT(setChecked(bool)));
|
||||||
|
|
||||||
|
@ -431,9 +431,9 @@ Render::~Render()
|
|||||||
delete pr;
|
delete pr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Este método se encarga de forzar el renderizado de las páginas.
|
//Este método se encarga de forzar el renderizado de las páginas.
|
||||||
//Actualiza el buffer según es necesario.
|
//Actualiza el buffer según es necesario.
|
||||||
//si la pagina actual no está renderizada, se lanza un hilo que la renderize (double or single page mode) y se emite una señal que indica que se está renderizando.
|
//si la pagina actual no está renderizada, se lanza un hilo que la renderize (double or single page mode) y se emite una señal que indica que se está renderizando.
|
||||||
void Render::render()
|
void Render::render()
|
||||||
{
|
{
|
||||||
updateBuffer();
|
updateBuffer();
|
||||||
@ -446,30 +446,30 @@ void Render::render()
|
|||||||
pageRenders[currentPageBufferedIndex] = new PageRender(this,currentIndex,comic->getRawData()->at(currentIndex),buffer[currentPageBufferedIndex],imageRotation,filters);
|
pageRenders[currentPageBufferedIndex] = new PageRender(this,currentIndex,comic->getRawData()->at(currentIndex),buffer[currentPageBufferedIndex],imageRotation,filters);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
//las páginas no están listas, y se están cargando en el cómic
|
//las páginas no están listas, y se están cargando en el cómic
|
||||||
emit processingPage(); //para evitar confusiones esta señal debería llamarse de otra forma
|
emit processingPage(); //para evitar confusiones esta señal debería llamarse de otra forma
|
||||||
|
|
||||||
//si se ha creado un hilo para renderizar la página actual, se arranca
|
//si se ha creado un hilo para renderizar la página actual, se arranca
|
||||||
if(pageRenders[currentPageBufferedIndex]!=0)
|
if(pageRenders[currentPageBufferedIndex]!=0)
|
||||||
{
|
{
|
||||||
//se conecta la señal pageReady del hilo, con el SLOT prepareAvailablePage
|
//se conecta la señal pageReady del hilo, con el SLOT prepareAvailablePage
|
||||||
connect(pageRenders[currentPageBufferedIndex],SIGNAL(pageReady(int)),this,SLOT(prepareAvailablePage(int)));
|
connect(pageRenders[currentPageBufferedIndex],SIGNAL(pageReady(int)),this,SLOT(prepareAvailablePage(int)));
|
||||||
//se emite la señal de procesando, debido a que los hilos se arrancan aquí
|
//se emite la señal de procesando, debido a que los hilos se arrancan aquí
|
||||||
if(filters.size()>0)
|
if(filters.size()>0)
|
||||||
emit processingPage();
|
emit processingPage();
|
||||||
pageRenders[currentPageBufferedIndex]->start();
|
pageRenders[currentPageBufferedIndex]->start();
|
||||||
pageRenders[currentPageBufferedIndex]->setPriority(QThread::TimeCriticalPriority);
|
pageRenders[currentPageBufferedIndex]->setPriority(QThread::TimeCriticalPriority);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
//en qué caso sería necesario hacer esto??? //TODO: IMPORTANTE, puede que no sea necesario.
|
//en qué caso sería necesario hacer esto??? //TODO: IMPORTANTE, puede que no sea necesario.
|
||||||
emit processingPage();
|
emit processingPage();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
//no hay ninguna página lista para ser renderizada, es necesario esperar.
|
//no hay ninguna página lista para ser renderizada, es necesario esperar.
|
||||||
emit processingPage();
|
emit processingPage();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
// la página actual está lista
|
// la página actual está lista
|
||||||
{
|
{
|
||||||
//emit currentPageReady();
|
//emit currentPageReady();
|
||||||
//make prepareAvailablePage the only function that emits currentPageReady()
|
//make prepareAvailablePage the only function that emits currentPageReady()
|
||||||
@ -768,7 +768,7 @@ void Render::createComic(const QString & path)
|
|||||||
comic = FactoryComic::newComic(path);
|
comic = FactoryComic::newComic(path);
|
||||||
|
|
||||||
|
|
||||||
if(comic == NULL)//archivo no encontrado o no válido
|
if(comic == NULL)//archivo no encontrado o no válido
|
||||||
{
|
{
|
||||||
emit errorOpening();
|
emit errorOpening();
|
||||||
reset();
|
reset();
|
||||||
@ -788,7 +788,6 @@ void Render::createComic(const QString & path)
|
|||||||
connect(comic,SIGNAL(numPages(unsigned int)),this,SLOT(setNumPages(unsigned int)));
|
connect(comic,SIGNAL(numPages(unsigned int)),this,SLOT(setNumPages(unsigned int)));
|
||||||
connect(comic,SIGNAL(imageLoaded(int,QByteArray)),this,SIGNAL(imageLoaded(int,QByteArray)));
|
connect(comic,SIGNAL(imageLoaded(int,QByteArray)),this,SIGNAL(imageLoaded(int,QByteArray)));
|
||||||
connect(comic,SIGNAL(isBookmark(bool)),this,SIGNAL(currentPageIsBookmark(bool)));
|
connect(comic,SIGNAL(isBookmark(bool)),this,SIGNAL(currentPageIsBookmark(bool)));
|
||||||
connect(comic,SIGNAL(isBookmark(bool)),this,SLOT(pageIsBookmark(bool)));
|
|
||||||
|
|
||||||
connect(comic,SIGNAL(bookmarksUpdated()),this,SIGNAL(bookmarksUpdated()));
|
connect(comic,SIGNAL(bookmarksUpdated()),this,SIGNAL(bookmarksUpdated()));
|
||||||
|
|
||||||
@ -839,13 +838,13 @@ void Render::reset()
|
|||||||
loadedComic = false;
|
loadedComic = false;
|
||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
//si se solicita la siguiente página, se calcula cuál debe ser en función de si se lee en modo a doble página o no.
|
//si se solicita la siguiente página, se calcula cuál debe ser en función de si se lee en modo a doble página o no.
|
||||||
//la página sólo se renderiza, si realmente ha cambiado.
|
//la página sólo se renderiza, si realmente ha cambiado.
|
||||||
void Render::nextPage()
|
void Render::nextPage()
|
||||||
{
|
{
|
||||||
int nextPage; //indica cuál será la próxima página
|
int nextPage; //indica cuál será la próxima página
|
||||||
nextPage = comic->nextPage();
|
nextPage = comic->nextPage();
|
||||||
//se fuerza renderizado si la página ha cambiado
|
//se fuerza renderizado si la página ha cambiado
|
||||||
if(currentIndex != nextPage)
|
if(currentIndex != nextPage)
|
||||||
{
|
{
|
||||||
previousIndex = currentIndex;
|
previousIndex = currentIndex;
|
||||||
@ -883,14 +882,14 @@ void Render::nextDoublePage()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//si se solicita la página anterior, se calcula cuál debe ser en función de si se lee en modo a doble página o no.
|
//si se solicita la página anterior, se calcula cuál debe ser en función de si se lee en modo a doble página o no.
|
||||||
//la página sólo se renderiza, si realmente ha cambiado.
|
//la página sólo se renderiza, si realmente ha cambiado.
|
||||||
void Render::previousPage()
|
void Render::previousPage()
|
||||||
{
|
{
|
||||||
int previousPage; //indica cuál será la próxima página
|
int previousPage; //indica cuál será la próxima página
|
||||||
previousPage = comic->previousPage();
|
previousPage = comic->previousPage();
|
||||||
|
|
||||||
//se fuerza renderizado si la página ha cambiado
|
//se fuerza renderizado si la página ha cambiado
|
||||||
if(currentIndex != previousPage)
|
if(currentIndex != previousPage)
|
||||||
{
|
{
|
||||||
previousIndex = currentIndex;
|
previousIndex = currentIndex;
|
||||||
@ -906,7 +905,7 @@ void Render::previousPage()
|
|||||||
|
|
||||||
void Render::previousDoublePage()
|
void Render::previousDoublePage()
|
||||||
{
|
{
|
||||||
int previousPage; //indica cuál será la próxima página
|
int previousPage; //indica cuál será la próxima página
|
||||||
previousPage = qMax(currentIndex-2,0);
|
previousPage = qMax(currentIndex-2,0);
|
||||||
if(currentIndex != previousPage)
|
if(currentIndex != previousPage)
|
||||||
{
|
{
|
||||||
@ -968,7 +967,7 @@ void Render::pageRawDataReady(int page)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//sólo se renderiza la página, si ha habido un cambio de página
|
//sólo se renderiza la página, si ha habido un cambio de página
|
||||||
void Render::goTo(int index)
|
void Render::goTo(int index)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -996,9 +995,9 @@ void Render::rotateLeft()
|
|||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Actualiza el buffer, añadiendo las imágenes (vacías) necesarias para su posterior renderizado y
|
//Actualiza el buffer, añadiendo las imágenes (vacías) necesarias para su posterior renderizado y
|
||||||
//eliminado aquellas que ya no sean necesarias. También libera los hilos (no estoy seguro de que sea responsabilidad suya)
|
//eliminado aquellas que ya no sean necesarias. También libera los hilos (no estoy seguro de que sea responsabilidad suya)
|
||||||
//Calcula el número de nuevas páginas que hay que buferear y si debe hacerlo por la izquierda o la derecha (según sea el sentido de la lectura)
|
//Calcula el número de nuevas páginas que hay que buferear y si debe hacerlo por la izquierda o la derecha (según sea el sentido de la lectura)
|
||||||
void Render::updateBuffer()
|
void Render::updateBuffer()
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&mutex);
|
QMutexLocker locker(&mutex);
|
||||||
@ -1084,8 +1083,8 @@ void Render::fillBuffer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Método que debe ser llamado cada vez que la estructura del buffer se vuelve inconsistente con el modo de lectura actual.
|
//Método que debe ser llamado cada vez que la estructura del buffer se vuelve inconsistente con el modo de lectura actual.
|
||||||
//se terminan todos los hilos en ejecución y se libera la memoria (de hilos e imágenes)
|
//se terminan todos los hilos en ejecución y se libera la memoria (de hilos e imágenes)
|
||||||
void Render::invalidate()
|
void Render::invalidate()
|
||||||
{
|
{
|
||||||
for(int i=0;i<pageRenders.size();i++)
|
for(int i=0;i<pageRenders.size();i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user