MCPcopy Create free account
hub / github.com/PlotJuggler/PlotJuggler / alignCentersToCommonOrigin

Method alignCentersToCommonOrigin

pj_widgets/src/Timeline.cpp:182–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

180}
181
182std::vector<std::pair<TimelineSourceId, qint64>> TimelineScene::alignCentersToCommonOrigin() const {
183 std::vector<std::pair<TimelineSourceId, qint64>> result;
184 if (tracks_.empty()) {
185 return result;
186 }
187 // Displayed center of a track, overflow-safe: window.min + (window.max − window.min) / 2.
188 const auto displayed_center = [](const TimelineSpanInput& track) -> qint64 {
189 const TimeSpan w = displayWindow(track);
190 return w.min + ((w.max - w.min) / 2);
191 };
192 qint64 target = displayed_center(tracks_.front());
193 for (const TimelineSpanInput& track : tracks_) {
194 target = std::min(target, displayed_center(track));
195 }
196 result.reserve(tracks_.size());
197 for (const TimelineSpanInput& track : tracks_) {
198 // We need raw_center − new_offset == target, and raw_center == displayed_center + offset.
199 const qint64 raw_center = displayed_center(track) + track.offset_ns;
200 result.emplace_back(track.id, raw_center - target);
201 }
202 return result;
203}
204
205std::vector<std::pair<TimelineSourceId, qint64>> TimelineScene::alignEndsToCommonOrigin() const {
206 std::vector<std::pair<TimelineSourceId, qint64>> result;

Callers 2

TESTFunction · 0.80
applyAlignmentMethod · 0.80

Calls 3

reserveMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45

Tested by 1

TESTFunction · 0.64