X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fabstractclipitem.cpp;h=434f44a74b9478d0f4eabb6fa96beb1460437d91;hb=bc8ee8f0c739fe76c997de136d666f484e03fd34;hp=d294df380e0a5233e2da6f7d1560ee7fc119efdb;hpb=a142111d51186bd642bfd1717fa26ab818f46e7d;p=kdenlive diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp index d294df38..434f44a7 100644 --- a/src/abstractclipitem.cpp +++ b/src/abstractclipitem.cpp @@ -29,7 +29,7 @@ #include #include -AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps) : +AbstractClipItem::AbstractClipItem(const ItemInfo &info, const QRectF& rect, double fps) : QObject(), QGraphicsRectItem(rect), m_info(info), @@ -203,19 +203,22 @@ void AbstractClipItem::resizeEnd(int posx) setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height()); if (durationDiff > GenTime()) { QList collisionList = collidingItems(Qt::IntersectsItemBoundingRect); + bool fixItem = false; for (int i = 0; i < collisionList.size(); ++i) { if (!collisionList.at(i)->isEnabled()) continue; QGraphicsItem *item = collisionList.at(i); if (item->type() == type() && item->pos().x() > pos().x()) { - kDebug() << "///////// COLLISION DETECTED!!!!!!!!!"; - kDebug() << "///////// CURRENT: " << startPos().frames(25) << "x" << endPos().frames(25) << ", RECT: " << rect() << "-" << pos(); - kDebug() << "///////// COLLISION: " << ((AbstractClipItem *)item)->startPos().frames(25) << "x" << ((AbstractClipItem *)item)->endPos().frames(25) << ", RECT: " << ((AbstractClipItem *)item)->rect() << "-" << item->pos(); + //kDebug() << "///////// COLLISION DETECTED!!!!!!!!!"; + //kDebug() << "///////// CURRENT: " << startPos().frames(25) << "x" << endPos().frames(25) << ", RECT: " << rect() << "-" << pos(); + //kDebug() << "///////// COLLISION: " << ((AbstractClipItem *)item)->startPos().frames(25) << "x" << ((AbstractClipItem *)item)->endPos().frames(25) << ", RECT: " << ((AbstractClipItem *)item)->rect() << "-" << item->pos(); GenTime diff = ((AbstractClipItem *)item)->startPos() - startPos(); - m_info.cropDuration = diff; - setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height()); - break; + if (fixItem == false || diff < m_info.cropDuration) { + fixItem = true; + m_info.cropDuration = diff; + } } } + if (fixItem) setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height()); } } @@ -270,7 +273,7 @@ void AbstractClipItem::drawKeyFrames(QPainter *painter, bool limitedKeyFrames) } y1 = br.bottom() - (m_keyframeDefault - m_keyframeOffset) * maxh; QLineF l(x1, y1, x2, y1); - QLineF l2 = painter->matrix().map(l); + QLineF l2 = painter->worldTransform().map(l); painter->setPen(QColor(168, 168, 168, 180)); painter->drawLine(l2); painter->setPen(QColor(108, 108, 108, 180)); @@ -291,7 +294,7 @@ void AbstractClipItem::drawKeyFrames(QPainter *painter, bool limitedKeyFrames) // make sure line begins with clip beginning if (!limitedKeyFrames && i.key() != start) { QLineF l(br.x(), y1, x1, y1); - l2 = painter->matrix().map(l); + l2 = painter->worldTransform().map(l); painter->drawLine(l2); } while (i != m_keyframes.constEnd()) { @@ -311,7 +314,7 @@ void AbstractClipItem::drawKeyFrames(QPainter *painter, bool limitedKeyFrames) y2 = br.bottom() - (i.value() - m_keyframeOffset) * maxh; } QLineF l(x1, y1, x2, y2); - l2 = painter->matrix().map(l); + l2 = painter->worldTransform().map(l); painter->drawLine(l2); if (active) { const QRectF frame(l2.x1() - 3, l2.y1() - 3, 6, 6); @@ -324,7 +327,7 @@ void AbstractClipItem::drawKeyFrames(QPainter *painter, bool limitedKeyFrames) // make sure line ends at clip end if (!limitedKeyFrames && x1 != br.right()) { QLineF l(x1, y1, br.right(), y1); - painter->drawLine(painter->matrix().map(l)); + painter->drawLine(painter->worldTransform().map(l)); } if (active && m_keyframes.count() > 1) { @@ -392,7 +395,7 @@ double AbstractClipItem::selectedKeyFrameValue() const return m_keyframes.value(m_selectedKeyframe); } -void AbstractClipItem::updateKeyFramePos(const GenTime pos, const double value) +void AbstractClipItem::updateKeyFramePos(const GenTime &pos, const double value) { if (!m_keyframes.contains(m_editedKeyframe)) return; @@ -434,7 +437,7 @@ int AbstractClipItem::keyFrameNumber() const return m_keyframes.count(); } -int AbstractClipItem::addKeyFrame(const GenTime pos, const double value) +int AbstractClipItem::addKeyFrame(const GenTime &pos, const double value) { QRectF br = sceneBoundingRect(); double maxh = 100.0 / br.height() / m_keyframeFactor;