+double CustomTrackView::getSnapPointForPos(double pos)
+{
+ for (int i = 0; i < m_snapPoints.size(); ++i) {
+ if (abs(pos - m_snapPoints.at(i) * m_scale) < 6) return m_snapPoints.at(i) * m_scale;
+ if (m_snapPoints.at(i) > pos) break;
+ }
+ return pos;
+}
+
+void CustomTrackView::updateSnapPoints()
+{
+ m_snapPoints.clear();
+ QList<QGraphicsItem *> itemList = items();
+ for (int i = 0; i < itemList.count(); i++) {
+ if (itemList.at(i)->type() == 70000) {
+ ClipItem *item = (ClipItem *)itemList.at(i);
+ m_snapPoints.append(item->startPos());
+ if (item->fadeIn() != 0) m_snapPoints.append(item->startPos() + item->fadeIn());
+ m_snapPoints.append(item->endPos());
+ if (item->fadeOut() != 0) m_snapPoints.append(item->endPos() - item->fadeOut());
+ }
+ }
+ qSort(m_snapPoints);
+}
+