#include "customtrackview.h"
TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
- : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0), m_currentZoom(4) {
+ : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0) {
view = new Ui::TimeLine_UI();
view->setupUi(this);
connect(m_trackview->verticalScrollBar(), SIGNAL(valueChanged(int)), view->headers_area->verticalScrollBar(), SLOT(setValue(int)));
connect(m_trackview, SIGNAL(trackHeightChanged()), this, SLOT(slotRebuildTrackHeaders()));
- parseDocument(doc->toXml());
+ parseDocument(m_doc->toXml());
connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));
connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
connect(m_trackview, SIGNAL(clipItemSelected(ClipItem*)), this, SLOT(slotClipItemSelected(ClipItem*)));
connect(m_trackview, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotTransitionItemSelected(Transition*)));
- slotChangeZoom(m_currentZoom);
+ slotChangeZoom(m_doc->zoom());
}
-int TrackView::currentZoom() const {
- return m_currentZoom;
-}
int TrackView::duration() const {
return m_trackview->duration();
void TrackView::parseDocument(QDomDocument doc) {
int cursorPos = 0;
+
// kDebug() << "//// DOCUMENT: " << doc.toString();
QDomNode props = doc.elementsByTagName("properties").item(0);
if (!props.isNull()) {
int pos = m_projectTracks - 1;
+
for (int i = 0; i < m_projectTracks; i++) {
e = tracks.item(i).toElement();
QString playlist_name = e.attribute("producer");
}
void TrackView::slotChangeZoom(int factor) {
-
+ m_doc->setZoom(factor);
m_ruler->setPixelPerMark(factor);
m_scale = (double) FRAME_SIZE / m_ruler->comboScale[factor]; // m_ruler->comboScale[m_currentZoom] /
- m_currentZoom = factor;
m_trackview->setScale(m_scale);
}
qApp->processEvents();
// Found a clip
int in = elem.attribute("in").toInt();
- int id = elem.attribute("producer").toInt();
+ QString idString = elem.attribute("producer");
+ int id = idString.toInt();
+ bool hasSpeedAttribute = false;
+ double speed;
+ if (idString.startsWith("slowmotion")) {
+ hasSpeedAttribute = true;
+ id = idString.section(":", 1, 1).toInt();
+ speed = idString.section(":", 2, 2).toDouble();
+ }
DocClipBase *clip = m_doc->clipManager()->getClipById(id);
if (clip != NULL) {
int out = elem.attribute("out").toInt();
ItemInfo clipinfo;
clipinfo.startPos = GenTime(position, m_doc->fps());
- clipinfo.endPos = clipinfo.startPos + GenTime(out - in, m_doc->fps());
+ clipinfo.endPos = clipinfo.startPos + GenTime(out - in + 1, m_doc->fps());
+ clipinfo.cropStart = GenTime(in, m_doc->fps());
clipinfo.track = ix;
//kDebug() << "// INSERTINGÂ CLIP: " << in << "x" << out << ", track: " << ix << ", ID: " << id << ", SCALE: " << m_scale << ", FPS: " << m_doc->fps();
- ClipItem *item = new ClipItem(clip, clipinfo, GenTime(in, m_doc->fps()), m_scale, m_doc->fps());
+ ClipItem *item = new ClipItem(clip, clipinfo, m_scale, m_doc->fps());
+ if (hasSpeedAttribute) item->setSpeed(speed);
m_scene->addItem(item);
clip->addReference();
- position += (out - in);
+ position += (out - in + 1);
// parse clip effects
for (QDomNode n2 = elem.firstChild(); !n2.isNull(); n2 = n2.nextSibling()) {
}
// get effect standard tags
- QDomElement clipeffect = MainWindow::videoEffects.getEffectByTag(effecttag, effectid);
+ QDomElement clipeffect = MainWindow::customEffects.getEffectByTag(QString(), effectid);
+ if (clipeffect.isNull()) clipeffect = MainWindow::videoEffects.getEffectByTag(effecttag, effectid);
if (clipeffect.isNull()) clipeffect = MainWindow::audioEffects.getEffectByTag(effecttag, effectid);
- if (clipeffect.isNull()) clipeffect = MainWindow::customEffects.getEffectByTag(effecttag, effectid);
+
clipeffect.setAttribute("kdenlive_ix", effectindex);
QDomNodeList clipeffectparams = clipeffect.childNodes();
return m_editMode;
}
+
+
#include "trackview.moc"