| 203 | } |
| 204 | |
| 205 | std::vector<std::pair<TimelineSourceId, qint64>> TimelineScene::alignEndsToCommonOrigin() const { |
| 206 | std::vector<std::pair<TimelineSourceId, qint64>> result; |
| 207 | if (tracks_.empty()) { |
| 208 | return result; |
| 209 | } |
| 210 | qint64 target = displayWindow(tracks_.front()).max; |
| 211 | for (const TimelineSpanInput& track : tracks_) { |
| 212 | target = std::max(target, displayWindow(track).max); |
| 213 | } |
| 214 | result.reserve(tracks_.size()); |
| 215 | for (const TimelineSpanInput& track : tracks_) { |
| 216 | result.emplace_back(track.id, track.t_max_ns - target); |
| 217 | } |
| 218 | return result; |
| 219 | } |
| 220 | |
| 221 | TimelineScene::EdgeSnap TimelineScene::snapToEdges( |
| 222 | const std::vector<qint64>& dragged_edges, const std::vector<qint64>& candidate_edges, qint64 raw_delta_ns, |