+ QDomElement mlt = doc.createElement("mlt");
+ doc.appendChild(mlt);
+
+
+ // Create black producer
+ // For some unknown reason, we have to build the black producer here and not in renderer.cpp, otherwise
+ // the composite transitions with the black track are corrupted.
+ QDomElement blk = doc.createElement("producer");
+ blk.setAttribute("in", 0);
+ blk.setAttribute("out", 500);
+ blk.setAttribute("id", "black");
+
+ QDomElement property = doc.createElement("property");
+ property.setAttribute("name", "mlt_type");
+ QDomText value = doc.createTextNode("producer");
+ property.appendChild(value);
+ blk.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "aspect_ratio");
+ value = doc.createTextNode(QString::number(0.0));
+ property.appendChild(value);
+ blk.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "length");
+ value = doc.createTextNode(QString::number(15000));
+ property.appendChild(value);
+ blk.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "eof");
+ value = doc.createTextNode("pause");
+ property.appendChild(value);
+ blk.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "resource");
+ value = doc.createTextNode("black");
+ property.appendChild(value);
+ blk.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "mlt_service");
+ value = doc.createTextNode("colour");
+ property.appendChild(value);
+ blk.appendChild(property);
+
+ mlt.appendChild(blk);
+
+
+ QDomElement tractor = doc.createElement("tractor");
+ tractor.setAttribute("id", "maintractor");
+ QDomElement multitrack = doc.createElement("multitrack");
+ QDomElement playlist = doc.createElement("playlist");
+ playlist.setAttribute("id", "black_track");
+ mlt.appendChild(playlist);
+
+ QDomElement blank0 = doc.createElement("entry");
+ blank0.setAttribute("in", "0");
+ blank0.setAttribute("out", "1");
+ blank0.setAttribute("producer", "black");
+ playlist.appendChild(blank0);
+
+ // create playlists
+ int total = tracks.count() + 1;
+
+ for (int i = 1; i < total; i++) {
+ QDomElement playlist = doc.createElement("playlist");
+ playlist.setAttribute("id", "playlist" + QString::number(i));
+ mlt.appendChild(playlist);
+ }
+
+ QDomElement track0 = doc.createElement("track");
+ track0.setAttribute("producer", "black_track");
+ tractor.appendChild(track0);
+
+ // create audio tracks
+ for (int i = 1; i < total; i++) {
+ QDomElement track = doc.createElement("track");
+ track.setAttribute("producer", "playlist" + QString::number(i));
+ if (tracks.at(i - 1).type == AUDIOTRACK)
+ track.setAttribute("hide", "video");
+ else if (tracks.at(i - 1).isBlind)
+ track.setAttribute("hide", "video");
+ if (tracks.at(i - 1).isMute)
+ track.setAttribute("hide", "audio");
+ tractor.appendChild(track);
+ }
+
+ for (int i = 2; i < total ; i++) {
+ QDomElement transition = doc.createElement("transition");
+ transition.setAttribute("always_active", "1");
+
+ QDomElement property = doc.createElement("property");
+ property.setAttribute("name", "a_track");
+ QDomText value = doc.createTextNode(QString::number(1));
+ property.appendChild(value);
+ transition.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "b_track");
+ value = doc.createTextNode(QString::number(i));
+ property.appendChild(value);
+ transition.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "mlt_service");
+ value = doc.createTextNode("mix");
+ property.appendChild(value);
+ transition.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "combine");
+ value = doc.createTextNode("1");
+ property.appendChild(value);
+ transition.appendChild(property);
+
+ property = doc.createElement("property");
+ property.setAttribute("name", "internal_added");
+ value = doc.createTextNode("237");
+ property.appendChild(value);
+ transition.appendChild(property);
+ tractor.appendChild(transition);
+ }
+ mlt.appendChild(tractor);
+ return doc;
+}
+
+
+void KdenliveDoc::syncGuides(QList <Guide *> guides)
+{