MCPcopy Create free account
hub / github.com/Tencent/libpag / SubtractFromTimeRanges

Function SubtractFromTimeRanges

src/base/TimeRange.cpp:52–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50}
51
52void SubtractFromTimeRanges(std::vector<TimeRange>* timeRanges, Frame startTime, Frame endTime) {
53 if (endTime < startTime) {
54 SplitTimeRangesAt(timeRanges, startTime);
55 return;
56 }
57 auto size = static_cast<int>(timeRanges->size());
58 for (int i = size - 1; i >= 0; i--) {
59 auto timeRange = (*timeRanges)[i];
60 if (timeRange.end < startTime || timeRange.start > endTime) {
61 // target outside timeRange
62 continue;
63 }
64 if (timeRange.start < startTime && timeRange.end > endTime) {
65 // target inside timeRange
66 TargetInsideTimeRange(timeRanges, i, startTime, endTime);
67 break;
68 }
69 if (timeRange.start >= startTime && timeRange.end <= endTime) {
70 // target contain timeRange
71 timeRanges->erase(timeRanges->begin() + i);
72 } else {
73 // target intersect timeRange
74 TargetIntersectTimeRange(timeRanges, i, startTime, endTime);
75 }
76 }
77}
78
79void SplitTimeRangesAt(std::vector<TimeRange>* timeRanges, Frame startTime) {
80 auto size = static_cast<int>(timeRanges->size());

Callers 1

excludeVaryingRangesFunction · 0.85

Calls 4

SplitTimeRangesAtFunction · 0.85
TargetInsideTimeRangeFunction · 0.85
TargetIntersectTimeRangeFunction · 0.85
sizeMethod · 0.80

Tested by

no test coverage detected