void slideShowEngine::timerEvent(QTimerEvent *event) { Q_UNUSED(event); if(m_currentState==Running) { int elapsed=m_timerAnimation.elapsed(); //qDebug() << "ENTER TIMER EVENT" << elapsed; m_totalCurrentTime+=elapsed; m_stepCurrentTime+=elapsed; //m_totalCurrentTime+=25; //m_stepCurrentTime+=25; m_timerAnimation.start(); m_currentState=runEngine(); if(m_currentState==Running) emit refresh(m_totalCurrentTime); else if(m_currentState==Finished) endOfSlideShow(); //elapsed=m_timerAnimation.elapsed(); //qDebug() << "exit timer event"<<elapsed; //qDebug() << m_timerAnimation.elapsed(); //qDebug() << m_totalCurrentTime; } }
int _tmain(int argc, _TCHAR* argv[]) { runEngine(); //TestMode("test_case4.txt",BLACK); }
void slideShowEngine::start() { int x,y; QPixmap pix; QModelIndex index; QVariant val; node itemNode; //QPropertyAnimation *enterAnimation,*displayAnimation,*exitAnimation; Pixmap *item; effect e; //QParallelAnimationGroup *parallelAnim; //QSequentialAnimationGroup *seqAnim; if(state()==Paused) resume(); if(state()==Running) return; //QList <QGraphicsView *> views=m_scene->views(); //m_size=views.at(0)->size(); //int s=views.size(); m_frame_number=0; m_scene->clear(); m_scene->setSceneRect(0.0,0.0,qreal(m_size.width()),qreal(m_size.height())); m_currentSlideIndex=0; index=m_sequence->index(m_currentSlideIndex); if(index.isValid()) { m_currentState=Running; m_currentStep=EnterAnimation; //m_totalCurrentTime=0; //m_stepCurrentTime=0; val=index.data(Qt::UserRole); itemNode=val.value<node>(); if(m_exportToMovie) { pix.load(itemNode.nodePath()); } else { pix=itemNode.nodePixmap(); } m_currentNode=itemNode; if(pix.width()>m_size.width() || pix.height()>m_size.height()) pix=pix.scaled(m_size,Qt::KeepAspectRatio,Qt::SmoothTransformation); item = new Pixmap(pix); if(m_exportToMovie) item->setTransformationMode(Qt::SmoothTransformation); m_PixmapList.append(item); // serve questa lista? if(m_size.width()>pix.width()) { x=(m_size.width()-pix.width())/2; } else { x=0; } if(m_size.height()>pix.height()) { y=(m_size.height()-pix.height())/2; } else { y=0; } item->setPos(qreal(x), qreal(y)); item->setZValue(qreal(m_sequence->rowCount()-m_currentSlideIndex)); m_scene->addItem(item); applyAnimation(); //m_timerId=startTimer(TIMER_ANIMATION); } m_totalCurrentTime=0; m_stepCurrentTime=0; /*int width=m_sequence->movieResolution().width(); int height=m_sequence->movieResolution().height(); int bitrate=m_sequence->movieBitRate();*/ int frameRate=m_sequence->movieFrameRate(); //int gop = 20; if(m_exportToMovie) { //encoder.createFile(m_movieName,width,height,bitrate,gop,frameRate); QEventLoop evt; int frames=0; while(m_currentState!=Finished && m_currentState!=Stopped) { m_currentState=runEngine(); if(m_currentState==Running) emit refresh(m_totalCurrentTime); evt.processEvents(); if(m_currentState==Running) { //int elapsed=m_timerAnimation.elapsed(); //qDebug() << elapsed; int period=1000/frameRate; m_totalCurrentTime+=period; m_stepCurrentTime+=period; m_timerAnimation.start(); } frames++; } qDebug() << "frames:" << frames; endOfSlideShow(); } else { startSound(); m_timerId=startTimer(25); // TIMER_ANIMATION m_timerAnimation.start(); } //State state=Running; //m_timerAnimation.start(); //m_totalTime.start(); //qDebug("Time elapsed: %d ms", t.elapsed()); }