void TupScreen::render() { #ifdef K_DEBUG T_FUNCINFO; #endif TupScene *scene = k->project->scene(k->currentSceneIndex); if (!scene) { #ifdef K_DEBUG tError() << "TupScreen::render() - [ Fatal Error ] - Scene is NULL! -> index: " << k->currentSceneIndex; #endif return; } k->sounds.clear(); foreach (TupSoundLayer *layer, scene->soundLayers().values()) k->sounds << layer; TupAnimationRenderer renderer(k->project->bgColor()); renderer.setScene(scene, k->project->dimension()); QFont font = this->font(); font.setPointSize(8); QProgressDialog progressDialog(this, Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::Dialog); progressDialog.setFont(font); progressDialog.setLabelText(tr("Rendering...")); progressDialog.setCancelButton(0); progressDialog.setRange(1, renderer.totalPhotograms()); QDesktopWidget desktop; progressDialog.move((int) (desktop.screenGeometry().width() - progressDialog.width())/2, (int) (desktop.screenGeometry().height() - progressDialog.height())/2); progressDialog.show(); QList<QImage> photogramList; int i = 1; while (renderer.nextPhotogram()) { QImage renderized = QImage(k->project->dimension(), QImage::Format_RGB32); QPainter painter(&renderized); painter.setRenderHint(QPainter::Antialiasing); renderer.render(&painter); if (k->isScaled) { QImage resized = renderized.scaledToWidth(k->screenDimension.width(), Qt::SmoothTransformation); photogramList << resized; } else { photogramList << renderized; } progressDialog.setValue(i); i++; } k->photograms = photogramList; k->animationList.replace(k->currentSceneIndex, photogramList); k->renderControl.replace(k->currentSceneIndex, true); }
bool TupProject::insertSymbolIntoFrame(TupProject::Mode spaceMode, const QString &name, int sceneIndex, int layerIndex, int frameIndex) { #ifdef K_DEBUG #ifdef Q_OS_WIN qDebug() << "[TupProject::insertSymbolIntoFrame()]"; #else T_FUNCINFO; #endif #endif TupFrame *frame = 0; TupScene *scene = this->sceneAt(sceneIndex); if (scene) { if (spaceMode == TupProject::FRAMES_EDITION) { TupLayer *layer = scene->layerAt(layerIndex); if (layer) frame = layer->frameAt(frameIndex); else return false; } else if (spaceMode == TupProject::STATIC_BACKGROUND_EDITION) { TupBackground *bg = scene->background(); if (bg) frame = bg->staticFrame(); else return false; } else if (spaceMode == TupProject::DYNAMIC_BACKGROUND_EDITION) { TupBackground *bg = scene->background(); if (bg) frame = bg->dynamicFrame(); else return false; } else { #ifdef K_DEBUG QString msg = "TupProject::insertSymbolIntoFrame() - Fatal Error: invalid spaceMode!"; #ifdef Q_OS_WIN qDebug() << msg; #else tError() << msg; #endif #endif return false; } if (frame) { TupLibraryObject *object = k->library->getObject(name); if (object) { switch (object->type()) { case TupLibraryObject::Item: { TupGraphicLibraryItem *libraryItem = new TupGraphicLibraryItem(object); int zLevel = frame->getTopZLevel(); libraryItem->setZValue(zLevel); frame->addLibraryItem(name, libraryItem); } break; case TupLibraryObject::Image: { TupGraphicLibraryItem *libraryItem = new TupGraphicLibraryItem(object); int imageW = libraryItem->boundingRect().width(); int imageH = libraryItem->boundingRect().height(); if (k->dimension.width() > imageW && k->dimension.height() > imageH) libraryItem->moveBy((k->dimension.width() - imageW)/2, (k->dimension.height() - imageH)/2); else libraryItem->moveBy(0, 0); int zLevel = frame->getTopZLevel(); libraryItem->setZValue(zLevel); frame->addItem(name, libraryItem); } break; case TupLibraryObject::Svg: { QString path(object->dataPath()); TupSvgItem *svgItem = new TupSvgItem(path, frame); svgItem->setSymbolName(name); int svgW = svgItem->boundingRect().width(); int svgH = svgItem->boundingRect().height(); if (k->dimension.width() > svgW && k->dimension.height() > svgH) { svgItem->moveBy((k->dimension.width() - svgW)/2, (k->dimension.height() - svgH)/2); } else { qreal factorW = ((qreal)k->dimension.width())/((qreal)svgW); qreal factorH = ((qreal)k->dimension.height())/((qreal)svgH); if (factorW < factorH) svgItem->setScale(factorW); else svgItem->setScale(factorH); svgItem->moveBy(0, 0); } int zLevel = frame->getTopZLevel(); svgItem->setZValue(zLevel); frame->addSvgItem(name, svgItem); } break; case TupLibraryObject::Text: { // SQA: Just out of curiosity, check if this case really happens! // tFatal() << "TupProject::insertSymbolIntoFrame() - Just tracing text!"; TupGraphicLibraryItem *libraryItem = new TupGraphicLibraryItem(object); int zLevel = frame->getTopZLevel(); libraryItem->setZValue(zLevel); frame->addItem(name, libraryItem); } break; case TupLibraryObject::Sound: { TupSoundLayer *sound = scene->createSoundLayer(scene->soundLayers().count()); sound->fromSymbol(object->symbolName()); } break; default: #ifdef K_DEBUG QString msg = "TupProject::insertSymbolIntoFrame() -> Unknown Object Type"; #ifdef Q_OS_WIN qDebug() << msg; #else tFatal() << msg; #endif #endif break; } return true; } else { #ifdef K_DEBUG QString msg = "TupProject::insertSymbolIntoFrame() - Object NOT found at library! " + name; #ifdef Q_OS_WIN qDebug() << msg; #else tError() << msg; #endif #endif return false; } } else { #ifdef K_DEBUG QString msg = "TupProject::insertSymbolIntoFrame() - Invalid frame!"; #ifdef Q_OS_WIN qDebug() << msg; #else tError() << msg; #endif #endif } } else { #ifdef K_DEBUG QString msg = "TupProject::insertSymbolIntoFrame() - Invalid scene!"; #ifdef Q_OS_WIN qDebug() << msg; #else tError() << msg; #endif #endif } return false; }