TitleDocument::TitleDocument()
{
m_scene = NULL;
+ m_width = 0;
+ m_height = 0;
}
void TitleDocument::setScene(QGraphicsScene* _scene, int width, int height)
QColor fontcolor = cursor.charFormat().foreground().color();
content.setAttribute("font-color", colorToString(fontcolor));
if (!t->data(101).isNull()) content.setAttribute("font-outline", t->data(101).toDouble());
- if (!t->data(102).isNull()) content.setAttribute("font-outline-color", colorToString(QColor(t->data(102).toString())));
+ if (!t->data(102).isNull()) {
+ QVariant variant = t->data(102);
+ QColor outlineColor = variant.value<QColor>();
+ content.setAttribute("font-outline-color", colorToString(outlineColor));
+ }
}
if (!t->data(100).isNull()) {
QStringList effectParams = t->data(100).toStringList();
QString effectName = effectParams.takeFirst();
+ content.setAttribute("textwidth", t->sceneBoundingRect().width());
content.setAttribute(effectName, effectParams.join(";"));
}
if (blur) {
effect.setAttribute("type", "blur");
effect.setAttribute("blurradius", blur->blurRadius());
- } else {
+ } /*else {
+ //WARNING:those effects are anyways broken because they use QPixmaps which are not safe for MLT's threaded workflow
QGraphicsDropShadowEffect *shadow = static_cast <QGraphicsDropShadowEffect *>(eff);
if (shadow) {
effect.setAttribute("type", "shadow");
effect.setAttribute("xoffset", shadow->xOffset());
effect.setAttribute("yoffset", shadow->yOffset());
}
- }
+ }*/
e.appendChild(effect);
}
#endif
}
-bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int out, bool embed)
+bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int duration, bool embed)
{
if (!m_scene)
return false;
QDomDocument doc = xml(startv, endv, embed);
- doc.documentElement().setAttribute("out", out);
+ doc.documentElement().setAttribute("duration", duration);
+ // keep some time for backwards compatibility (opening projects with older versions) - 26/12/12
+ doc.documentElement().setAttribute("out", duration);
KTemporaryFile tmpfile;
if (!tmpfile.open()) {
kWarning() << "///// CANNOT CREATE TMP FILE in: " << tmpfile.fileName();
return false;
}
QFile xmlf(tmpfile.fileName());
- xmlf.open(QIODevice::WriteOnly);
+ if (!xmlf.open(QIODevice::WriteOnly))
+ return false;
xmlf.write(doc.toString().toUtf8());
if (xmlf.error() != QFile::NoError) {
xmlf.close();
return KIO::NetAccess::upload(tmpfile.fileName(), url, 0);
}
-int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *out, const QString& projectpath)
+int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *duration, const QString& projectpath)
{
m_projectPath = projectpath;
QDomNodeList titles = doc.elementsByTagName("kdenlivetitle");
}
}
//TODO: get default title duration instead of hardcoded one
- if (doc.documentElement().hasAttribute("out"))
- *out = doc.documentElement().attribute("out").toInt();
+ if (doc.documentElement().hasAttribute("duration"))
+ *duration = doc.documentElement().attribute("duration").toInt();
+ else if (doc.documentElement().hasAttribute("out"))
+ *duration = doc.documentElement().attribute("out").toInt();
else
- *out = 125;
+ *duration = 125;
int maxZValue = 0;
if (titles.size()) {