From: Jean-Baptiste Mardelle Date: Fri, 13 Nov 2009 20:52:14 +0000 (+0000) Subject: Add an "effect start" param to typewriter that allows to set a delay before the effec... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5764ab3ca62d65c06da06a29929d3de57a188682;p=kdenlive Add an "effect start" param to typewriter that allows to set a delay before the effect starts svn path=/trunk/kdenlive/; revision=4113 --- diff --git a/src/titledocument.cpp b/src/titledocument.cpp index 3a17b490..dde7501f 100644 --- a/src/titledocument.cpp +++ b/src/titledocument.cpp @@ -100,7 +100,7 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en if (!t->data(100).isNull()) { QStringList effectParams = t->data(100).toStringList(); - content.setAttribute(effectParams.at(0), effectParams.at(1)); + content.setAttribute(effectParams.takeFirst(), effectParams.join(";")); } // Only save when necessary. @@ -295,7 +295,7 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGra // Effects if (!txtProperties.namedItem("typewriter").isNull()) { - QStringList effData = QStringList() << "typewriter" << QString::number(txtProperties.namedItem("typewriter").nodeValue().toInt()); + QStringList effData = QStringList() << "typewriter" << txtProperties.namedItem("typewriter").nodeValue(); txt->setData(100, effData); } diff --git a/src/titlewidget.cpp b/src/titlewidget.cpp index 27850a31..c2f78ec1 100644 --- a/src/titlewidget.cpp +++ b/src/titlewidget.cpp @@ -102,10 +102,12 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render connect(endViewportX, SIGNAL(valueChanged(int)), this, SLOT(setupViewports())); connect(endViewportY, SIGNAL(valueChanged(int)), this, SLOT(setupViewports())); connect(endViewportSize, SIGNAL(valueChanged(int)), this, SLOT(setupViewports()));*/ - + // Fill effects effect_list->addItem(i18n("None"), NOEFFECT); effect_list->addItem(i18n("Typewriter"), TYPEWRITEREFFECT); + effect_list->addItem(i18n("Blur"), BLUREFFECT); + connect(zValue, SIGNAL(valueChanged(int)), this, SLOT(zIndexChanged(int))); connect(itemzoom, SIGNAL(valueChanged(int)), this, SLOT(itemScaled(int))); @@ -118,6 +120,7 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render connect(itemright, SIGNAL(clicked()), this, SLOT(itemRight())); connect(effect_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotAddEffect(int))); connect(typewriter_delay, SIGNAL(valueChanged(int)), this, SLOT(slotEditTypewriter(int))); + connect(typewriter_start, SIGNAL(valueChanged(int)), this, SLOT(slotEditTypewriter(int))); connect(blur_radius, SIGNAL(valueChanged(int)), this, SLOT(slotEditBlur(int))); connect(shadow_radius, SIGNAL(valueChanged(int)), this, SLOT(slotEditShadow())); connect(shadow_x, SIGNAL(valueChanged(int)), this, SLOT(slotEditShadow())); @@ -665,9 +668,9 @@ void TitleWidget::selectionChanged() itemzoom->blockSignals(true); itemrotate->blockSignals(true); if (l.size() == 0) { - effect_stack->setHidden(true); - effect_frame->setEnabled(false); - effect_list->setCurrentIndex(0); + effect_stack->setHidden(true); + effect_frame->setEnabled(false); + effect_list->setCurrentIndex(0); bool blockX = !origin_x_left->signalsBlocked(); bool blockY = !origin_y_top->signalsBlocked(); if (blockX) origin_x_left->blockSignals(true); @@ -681,10 +684,10 @@ void TitleWidget::selectionChanged() if (blockY) origin_y_top->blockSignals(false); itemzoom->setEnabled(false); itemrotate->setEnabled(false); - frame_properties->setEnabled(false); + frame_properties->setEnabled(false); } else if (l.size() == 1) { - effect_frame->setEnabled(true); - frame_properties->setEnabled(true); + effect_frame->setEnabled(true); + frame_properties->setEnabled(true); if (l.at(0) != m_startViewport && l.at(0) != m_endViewport) { itemzoom->setEnabled(true); itemrotate->setEnabled(true); @@ -696,34 +699,40 @@ void TitleWidget::selectionChanged() if (l.at(0)->type() == TEXTITEM) { showToolbars(TITLE_TEXT); QGraphicsTextItem* i = static_cast (l.at(0)); - if (!i->data(100).isNull()) { - // Item has an effect - QStringList effdata = i->data(100).toStringList(); - if (effdata.at(0) == "typewriter") { - typewriter_delay->setValue(effdata.at(1).toInt()); - effect_list->setCurrentIndex(effect_list->findData((int) TYPEWRITEREFFECT)); - effect_stack->setHidden(false); - } - } else { - if (i->graphicsEffect()) { - QGraphicsBlurEffect *blur = static_cast (i->graphicsEffect()); - if (blur) { - effect_list->setCurrentIndex(effect_list->findData((int) BLUREFFECT)); - int rad = (int) blur->blurRadius(); - blur_radius->setValue(rad); - effect_stack->setHidden(false); - } else { - QGraphicsDropShadowEffect *shad = static_cast (i->graphicsEffect()); - if (shad) { - effect_list->setCurrentIndex(effect_list->findData((int) SHADOWEFFECT)); - shadow_radius->setValue(shad->blurRadius()); - shadow_x->setValue(shad->xOffset()); - shadow_y->setValue(shad->yOffset()); - effect_stack->setHidden(false); - } - } - } else effect_stack->setHidden(true); - } + if (!i->data(100).isNull()) { + // Item has an effect + QStringList effdata = i->data(100).toStringList(); + QString effectName = effdata.takeFirst(); + if (effectName == "typewriter") { + QStringList params = effdata.at(0).split(';'); + typewriter_delay->setValue(params.at(0).toInt()); + typewriter_start->setValue(params.at(1).toInt()); + effect_list->setCurrentIndex(effect_list->findData((int) TYPEWRITEREFFECT)); + effect_stack->setHidden(false); + } + } + else { + if (i->graphicsEffect()) { + QGraphicsBlurEffect *blur = static_cast (i->graphicsEffect()); + if (blur) { + effect_list->setCurrentIndex(effect_list->findData((int) BLUREFFECT)); + int rad = (int) blur->blurRadius(); + blur_radius->setValue(rad); + effect_stack->setHidden(false); + } + else { + QGraphicsDropShadowEffect *shad = static_cast (i->graphicsEffect()); + if (shad) { + effect_list->setCurrentIndex(effect_list->findData((int) SHADOWEFFECT)); + shadow_radius->setValue(shad->blurRadius()); + shadow_x->setValue(shad->xOffset()); + shadow_y->setValue(shad->yOffset()); + effect_stack->setHidden(false); + } + } + } + else effect_stack->setHidden(true); + } //if (l[0]->hasFocus()) //toolBox->setCurrentIndex(0); //toolBox->setItemEnabled(2, true); @@ -1785,32 +1794,32 @@ void TitleWidget::slotAddEffect(int ix) { int effect = effect_list->itemData(ix).toInt(); if (effect == 0) { - effect_stack->setHidden(true); - return; + effect_stack->setHidden(true); + return; } effect_stack->setCurrentIndex(effect - 1); effect_stack->setHidden(false); QList l = graphicsView->scene()->selectedItems(); if (effect == TYPEWRITEREFFECT) { - if (l.size() == 1 && l.at(0)->type() == TEXTITEM) { - QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()); - l[0]->setData(100, effdata); - } + if (l.size() == 1 && l.at(0)->type() == TEXTITEM) { + QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()) + ";" + QString::number(typewriter_start->value()); + l[0]->setData(100, effdata); + } } #if QT_VERSION < 0x040600 return; #else if (effect == BLUREFFECT) { // Blur effect - if (l.size() == 1) { - QGraphicsEffect *eff = new QGraphicsBlurEffect(); - l[0]->setGraphicsEffect(eff); - } + if (l.size() == 1) { + QGraphicsEffect *eff = new QGraphicsBlurEffect(); + l[0]->setGraphicsEffect(eff); + } } else if (effect == SHADOWEFFECT) { - if (l.size() == 1) { - QGraphicsEffect *eff = new QGraphicsDropShadowEffect(); - l[0]->setGraphicsEffect(eff); - } + if (l.size() == 1) { + QGraphicsEffect *eff = new QGraphicsDropShadowEffect(); + l[0]->setGraphicsEffect(eff); + } } #endif @@ -1833,7 +1842,7 @@ void TitleWidget::slotEditTypewriter(int ix) { QList l = graphicsView->scene()->selectedItems(); if (l.size() == 1) { - QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()); + QStringList effdata = QStringList() << "typewriter" << QString::number(typewriter_delay->value()) + ";" + QString::number(typewriter_start->value()); l[0]->setData(100, effdata); } } diff --git a/src/widgets/titlewidget_ui.ui b/src/widgets/titlewidget_ui.ui index 83b88bea..5ea758d2 100644 --- a/src/widgets/titlewidget_ui.ui +++ b/src/widgets/titlewidget_ui.ui @@ -618,7 +618,7 @@ - 0 + 2 @@ -707,10 +707,13 @@ + + 0 + - Delay (frames) + Delay @@ -722,11 +725,44 @@ 0 + + frames + + + 1 + 5 + + + + Start at + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + frames + + +