X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipitem.cpp;h=745f50b55c2d8a5439812d29086aacfd3cc13eca;hb=7a6399fa2f78747b44dfa0ea7d877b9c3351fb7b;hp=2d113f902506ddcc557d1b9e4b8f51792203e36f;hpb=7cff3e32568a5b8b715b69c162170e7db8dd0c21;p=kdenlive diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 2d113f90..745f50b5 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -102,6 +102,11 @@ ClipItem::~ClipItem() { if (endThumbTimer) delete endThumbTimer; } +void ClipItem::resetThumbs() { + slotFetchThumbs(); + audioThumbCachePic.clear(); +} + void ClipItem::slotFetchThumbs() { m_thumbsRequested += 2; emit getThumb((int)m_cropStart.frames(m_fps), (int)(m_cropStart + m_cropDuration).frames(m_fps)); @@ -131,7 +136,7 @@ void ClipItem::slotGotAudioData() { } int ClipItem::type() const { - return 70000; + return AVWIDGET; } DocClipBase *ClipItem::baseClip() { @@ -154,14 +159,6 @@ int ClipItem::clipProducer() { return m_producer; } -GenTime ClipItem::maxDuration() const { - return m_maxDuration; -} - -GenTime ClipItem::cropStart() const { - return m_cropStart; -} - void ClipItem::flashClip() { if (m_timeLine == 0) { m_timeLine = new QTimeLine(750, this); @@ -535,95 +532,13 @@ void ClipItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *) { update(); } -void ClipItem::moveTo(int x, double scale, double offset, int newTrack) { - double origX = rect().x(); - double origY = rect().y(); - bool success = true; - if (x < 0) return; - setRect(x * scale, origY + offset, rect().width(), rect().height()); - QList collisionList = collidingItems(Qt::IntersectsItemBoundingRect); - if (collisionList.size() == 0) m_track = newTrack; - for (int i = 0; i < collisionList.size(); ++i) { - QGraphicsItem *item = collisionList.at(i); - if (item->type() == 70000) { - if (offset == 0) { - QRectF other = ((QGraphicsRectItem *)item)->rect(); - if (x < m_startPos.frames(m_fps)) { - kDebug() << "COLLISION, MOVING TO------"; - m_startPos = ((ClipItem *)item)->endPos() + GenTime(1, m_fps); - origX = m_startPos.frames(m_fps) * scale; - } else { - kDebug() << "COLLISION, MOVING TO+++"; - m_startPos = ((ClipItem *)item)->startPos() - m_cropDuration; - origX = m_startPos.frames(m_fps) * scale; - } - } - setRect(origX, origY, rect().width(), rect().height()); - offset = 0; - origX = rect().x(); - success = false; - break; - } - } - if (success) { - m_track = newTrack; - m_startPos = GenTime(x, m_fps); - } - /* QList childrenList = QGraphicsItem::children(); - for (int i = 0; i < childrenList.size(); ++i) { - childrenList.at(i)->moveBy(rect().x() - origX , offset); - }*/ -} - void ClipItem::resizeStart(int posx, double scale) { - GenTime durationDiff = GenTime(posx, m_fps) - m_startPos; - if (durationDiff == GenTime()) return; - //kDebug() << "-- RESCALE: CROP=" << m_cropStart << ", DIFF = " << durationDiff; - if (m_cropStart + durationDiff < GenTime()) { - durationDiff = GenTime() - m_cropStart; - } else if (durationDiff >= m_cropDuration) { - durationDiff = m_cropDuration - GenTime(3, m_fps); - } - m_startPos += durationDiff; - m_cropStart += durationDiff; - m_cropDuration = m_cropDuration - durationDiff; - setRect(m_startPos.frames(m_fps) * scale, rect().y(), m_cropDuration.frames(m_fps) * scale, rect().height()); - QList collisionList = collidingItems(Qt::IntersectsItemBoundingRect); - for (int i = 0; i < collisionList.size(); ++i) { - QGraphicsItem *item = collisionList.at(i); - if (item->type() == 70000) { - GenTime diff = ((ClipItem *)item)->endPos() + GenTime(1, m_fps) - m_startPos; - setRect((m_startPos + diff).frames(m_fps) * scale, rect().y(), (m_cropDuration - diff).frames(m_fps) * scale, rect().height()); - m_startPos += diff; - m_cropStart += diff; - m_cropDuration = m_cropDuration - diff; - break; - } - } + AbstractClipItem::resizeStart(posx, scale); if (m_hasThumbs) startThumbTimer->start(100); } void ClipItem::resizeEnd(int posx, double scale) { - GenTime durationDiff = GenTime(posx, m_fps) - endPos(); - if (durationDiff == GenTime()) return; - //kDebug() << "-- RESCALE: CROP=" << m_cropStart << ", DIFF = " << durationDiff; - if (m_cropDuration + durationDiff <= GenTime()) { - durationDiff = GenTime() - (m_cropDuration - GenTime(3, m_fps)); - } else if (m_cropStart + m_cropDuration + durationDiff >= m_maxDuration) { - durationDiff = m_maxDuration - m_cropDuration - m_cropStart; - } - m_cropDuration += durationDiff; - setRect(m_startPos.frames(m_fps) * scale, rect().y(), m_cropDuration.frames(m_fps) * scale, rect().height()); - QList collisionList = collidingItems(Qt::IntersectsItemBoundingRect); - for (int i = 0; i < collisionList.size(); ++i) { - QGraphicsItem *item = collisionList.at(i); - if (item->type() == 70000) { - GenTime diff = ((ClipItem *)item)->startPos() - GenTime(1, m_fps) - startPos(); - m_cropDuration = diff; - setRect(m_startPos.frames(m_fps) * scale, rect().y(), m_cropDuration.frames(m_fps) * scale, rect().height()); - break; - } - } + AbstractClipItem::resizeEnd(posx, scale); if (m_hasThumbs) endThumbTimer->start(100); } @@ -738,7 +653,13 @@ void ClipItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { void ClipItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) { Q_UNUSED(event); } - +void ClipItem::addTransition(Transition* t) { + m_transitionsList.append(t); + CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; + QDomDocument doc; + QDomElement e = doc.documentElement(); + if (view) view->slotAddTransition(this, t->toXML() , t->startPos(), track()); +} // virtual /* void CustomTrackView::mousePressEvent ( QMouseEvent * event )