X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdocclipbase.cpp;h=3bb9dab3e365a3f34bf4a0bcd0a2200c8354dcd4;hb=4eb044ee62e1f0535557a1bb381520bf959629bb;hp=d0ac46166d4869e58283856edd1ea52b648c1016;hpb=6ed74af3d8843ad3d9d608486da7c82970e6aff6;p=kdenlive diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index d0ac4616..3bb9dab3 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -23,7 +23,7 @@ #include "clipmanager.h" DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, uint id): - m_id(id), m_description(QString()), m_refcount(0), m_projectThumbFrame(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL) { + m_id(id), m_description(QString()), m_refcount(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL), m_clipProducer(NULL) { int type = xml.attribute("type").toInt(); m_clipType = (CLIPTYPE) type; m_name = xml.attribute("name"); @@ -38,7 +38,9 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, uint id): int out = xml.attribute("out").toInt(); if (out != 0) { setDuration(GenTime(out, KdenliveSettings::project_fps())); - //m_properties.insert("out", QString::number(out)); + } else { + out = xml.attribute("duration").toInt(); + if (out != 0) setDuration(GenTime(out, KdenliveSettings::project_fps())); } if (m_name.isEmpty()) m_name = url.fileName(); @@ -49,18 +51,7 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, uint id): //kDebug() << "type is video" << (m_clipType == AV) << " " << m_clipType; } - - -DocClipBase::DocClipBase(const DocClipBase& clip) { - m_id = clip.getId(); - m_clipType = clip.clipType(); - m_name = clip.name(); - m_duration = clip.duration(); - m_audioThumbCreated = clip.audioThumbCreated(); - m_properties = clip.properties(); -} - -DocClipBase & DocClipBase::operator=(const DocClipBase & clip) { +/*DocClipBase & DocClipBase::operator=(const DocClipBase & clip) { DocClipBase::operator=(clip); m_id = clip.getId(); m_clipType = clip.clipType(); @@ -69,10 +60,11 @@ DocClipBase & DocClipBase::operator=(const DocClipBase & clip) { m_audioThumbCreated = clip.audioThumbCreated(); m_properties = clip.properties(); return *this; -} +}*/ DocClipBase::~DocClipBase() { if (m_thumbProd) delete m_thumbProd; + if (m_clipProducer) delete m_clipProducer; } void DocClipBase::slotCreateAudioTimer() { @@ -124,6 +116,7 @@ const CLIPTYPE & DocClipBase::clipType() const { void DocClipBase::setClipType(CLIPTYPE type) { m_clipType = type; + m_properties.insert("type", QString::number((int) type)); if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO)) slotCreateAudioTimer(); } @@ -134,12 +127,12 @@ KUrl DocClipBase::fileURL() const { return KUrl(); } -void DocClipBase::setProjectThumbFrame(const uint &ix) { - m_projectThumbFrame = ix; +void DocClipBase::setClipThumbFrame(const uint &ix) { + m_properties.insert("thumbnail", QString::number((int) ix)); } -uint DocClipBase::getProjectThumbFrame() const { - return m_projectThumbFrame; +uint DocClipBase::getClipThumbFrame() const { + return (uint) m_properties.value("thumbnail").toInt(); } const QString DocClipBase::description() const { @@ -152,6 +145,7 @@ const QString DocClipBase::getProperty(const QString prop) const { void DocClipBase::setDuration(GenTime dur) { m_duration = dur; + m_properties.insert("duration", QString::number((int) dur.frames(KdenliveSettings::project_fps()))); } const GenTime &DocClipBase::duration() const { @@ -160,7 +154,7 @@ const GenTime &DocClipBase::duration() const { const GenTime &DocClipBase::maxDuration() const { if (m_clipType == COLOR || m_clipType == IMAGE || m_clipType == TEXT || (m_clipType == SLIDESHOW && m_properties.value("loop") == "1")) { - GenTime dur(10000, KdenliveSettings::project_fps()); + const GenTime dur(10000, KdenliveSettings::project_fps()); return dur; } return m_duration; @@ -195,8 +189,7 @@ createClip(KdenliveDoc *doc, const QDomElement & element) { node.normalize(); if (element.tagName() != "kdenliveclip") { kWarning() << - "DocClipBase::createClip() element has unknown tagName : " << - element.tagName() << endl; + "DocClipBase::createClip() element has unknown tagName : " << element.tagName(); return 0; } @@ -221,8 +214,7 @@ createClip(KdenliveDoc *doc, const QDomElement & element) { n = n.nextSibling(); } if (clip == 0) { - kWarning() << "DocClipBase::createClip() unable to create clip" << - endl; + kWarning() << "DocClipBase::createClip() unable to create clip"; } else { // setup DocClipBase specifics of the clip. QMap props; @@ -238,9 +230,6 @@ void DocClipBase::setAudioThumbCreated(bool isDone) { } -QDomDocument DocClipBase::generateSceneList(bool, bool) const { -} - void DocClipBase::setThumbnail(const QPixmap & pixmap) { m_thumbnail = pixmap; } @@ -282,9 +271,8 @@ void DocClipBase::addSnapMarker(const GenTime & time, QString comment) { } if ((it != m_snapMarkers.end()) && ((*it).time() == time)) { - kError() << - "trying to add Snap Marker that already exists, this will cause inconsistancies with undo/redo" - << endl; + (*it).setComment(comment); + //kError() << "trying to add Snap Marker that already exists, this will cause inconsistancies with undo/redo"; } else { CommentedTime t(time, comment); m_snapMarkers.insert(it, t); @@ -301,8 +289,7 @@ void DocClipBase::editSnapMarker(const GenTime & time, QString comment) { if (it != m_snapMarkers.end()) { (*it).setComment(comment); } else { - kError() << - "trying to edit Snap Marker that does not already exists" << endl; + kError() << "trying to edit Snap Marker that does not already exists"; } } @@ -369,6 +356,15 @@ QString DocClipBase::markerComment(GenTime t) { return QString::null; } +void DocClipBase::setProducer(Mlt::Producer *producer) { + m_clipProducer = producer; + if (m_thumbProd) m_thumbProd->setProducer(producer); +} + +Mlt::Producer *DocClipBase::producer() { + return m_clipProducer; +} + void DocClipBase::setProperties(QMap properties) { // changing clip type is not allowed properties.remove("type");