X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftitledocument.cpp;h=356fb4505d436700ced125841435720f53994f18;hb=6ea983ebd2f53c2f100d091c908edb13be401f88;hp=04d304a755f894b81c5cfb990ba71cfe71e7321c;hpb=9f3ddf35294dcd7c25ec13f1f9912ab00a09aae8;p=kdenlive diff --git a/src/titledocument.cpp b/src/titledocument.cpp index 04d304a7..356fb450 100644 --- a/src/titledocument.cpp +++ b/src/titledocument.cpp @@ -96,17 +96,14 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en content.setAttribute("font-pixel-size", font.pixelSize()); content.setAttribute("font-italic", font.italic()); content.setAttribute("font-underline", font.underline()); - { - QTextCursor cursor(t->document()); cursor.select(QTextCursor::Document); QColor fontcolor = cursor.charFormat().foreground().color(); content.setAttribute("font-color", colorToString(fontcolor)); - content.setAttribute("font-outline", t->data(101).toDouble()); - content.setAttribute("font-outline-color", t->data(102).toString()); + 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(100).isNull()) { QStringList effectParams = t->data(100).toStringList(); QString effectName = effectParams.takeFirst(); @@ -134,6 +131,13 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en pos.setAttribute("y", item->pos().y()); QTransform transform = item->transform(); QDomElement tr = doc.createElement("transform"); + if (!item->data(ZOOMFACTOR).isNull()) { + tr.setAttribute("zoom", QString::number(item->data(ZOOMFACTOR).toInt())); + } + if (!item->data(ROTATEFACTOR).isNull()) { + QList rotlist = item->data(ROTATEFACTOR).toList(); + tr.setAttribute("rotation", QString("%1,%2,%3").arg(rotlist[0].toDouble()).arg(rotlist[1].toDouble()).arg(rotlist[2].toDouble())); + } tr.appendChild(doc.createTextNode( QString("%1,%2,%3,%4,%5,%6,%7,%8,%9").arg( transform.m11()).arg(transform.m12()).arg(transform.m13()).arg(transform.m21()).arg(transform.m22()).arg(transform.m23()).arg(transform.m31()).arg(transform.m32()).arg(transform.m33()) @@ -290,7 +294,8 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGra txt->setData(102, stringToColor(txtProperties.namedItem("font-outline-color").nodeValue())); format.setTextOutline( QPen(QColor(stringToColor(txtProperties.namedItem("font-outline-color").nodeValue())), - txtProperties.namedItem("font-outline").nodeValue().toDouble()) + txtProperties.namedItem("font-outline").nodeValue().toDouble(), + Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin) ); } @@ -328,7 +333,7 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGra QString br_str = items.item(i).namedItem("content").attributes().namedItem("brushcolor").nodeValue(); QString pen_str = items.item(i).namedItem("content").attributes().namedItem("pencolor").nodeValue(); double penwidth = items.item(i).namedItem("content").attributes().namedItem("penwidth").nodeValue().toDouble(); - QGraphicsRectItem *rec = m_scene->addRect(stringToRect(rect), QPen(QBrush(stringToColor(pen_str)), penwidth), QBrush(stringToColor(br_str))); + QGraphicsRectItem *rec = m_scene->addRect(stringToRect(rect), QPen(QBrush(stringToColor(pen_str)), penwidth, Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin), QBrush(stringToColor(br_str))); gitem = rec; } else if (items.item(i).attributes().namedItem("type").nodeValue() == "QGraphicsPixmapItem") { QString url = items.item(i).namedItem("content").attributes().namedItem("url").nodeValue(); @@ -349,7 +354,12 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGra QPointF p(items.item(i).namedItem("position").attributes().namedItem("x").nodeValue().toDouble(), items.item(i).namedItem("position").attributes().namedItem("y").nodeValue().toDouble()); gitem->setPos(p); - gitem->setTransform(stringToTransform(items.item(i).namedItem("position").firstChild().firstChild().nodeValue())); + QDomElement trans = items.item(i).namedItem("position").firstChild().toElement(); + gitem->setTransform(stringToTransform(trans.firstChild().nodeValue())); + QString rotate = trans.attribute("rotation"); + if (!rotate.isEmpty()) gitem->setData(ROTATEFACTOR, stringToList(rotate)); + QString zoom = trans.attribute("zoom"); + if (!zoom.isEmpty()) gitem->setData(ZOOMFACTOR, zoom.toInt()); int zValue = items.item(i).attributes().namedItem("z-index").nodeValue().toInt(); if (zValue > maxZValue) maxZValue = zValue; gitem->setZValue(zValue); @@ -431,6 +441,7 @@ QColor TitleDocument::stringToColor(const QString & s) return QColor(); return QColor(l.at(0).toInt(), l.at(1).toInt(), l.at(2).toInt(), l.at(3).toInt());; } + QTransform TitleDocument::stringToTransform(const QString& s) { QStringList l = s.split(','); @@ -443,6 +454,14 @@ QTransform TitleDocument::stringToTransform(const QString& s) ); } +QList TitleDocument::stringToList(const QString & s) +{ + QStringList l = s.split(','); + if (l.size() < 3) + return QList(); + return QList() << QVariant(l.at(0).toDouble()) << QVariant(l.at(1).toDouble()) << QVariant(l.at(2).toDouble()); +} + int TitleDocument::frameWidth() const { return m_width;