diff --git a/app/common/timerange.cpp b/app/common/timerange.cpp index 67ac3f391..cd99a1bd4 100644 --- a/app/common/timerange.cpp +++ b/app/common/timerange.cpp @@ -104,6 +104,34 @@ TimeRange TimeRange::Combine(const TimeRange &a, const TimeRange &b) qMax(a.out(), b.out())); } +TimeRange TimeRange::operator+(const rational &rhs) const +{ + TimeRange answer(*this); + answer += rhs; + return answer; +} + +TimeRange TimeRange::operator-(const rational &rhs) const +{ + TimeRange answer(*this); + answer -= rhs; + return answer; +} + +const TimeRange &TimeRange::operator+=(const rational &rhs) +{ + set_range(in_ + rhs, out_ + rhs); + + return *this; +} + +const TimeRange &TimeRange::operator-=(const rational &rhs) +{ + set_range(in_ - rhs, out_ - rhs); + + return *this; +} + void TimeRange::normalize() { // If `out` is earlier than `in`, swap them @@ -173,7 +201,7 @@ bool TimeRangeList::ContainsTimeRange(const TimeRange &range, bool in_inclusive, return false; } -TimeRangeList TimeRangeList::Intersects(const TimeRange &range) +TimeRangeList TimeRangeList::Intersects(const TimeRange &range) const { TimeRangeList intersect_list; diff --git a/app/common/timerange.h b/app/common/timerange.h index 5daeba390..41d7c4026 100644 --- a/app/common/timerange.h +++ b/app/common/timerange.h @@ -47,6 +47,12 @@ public: TimeRange CombineWith(const TimeRange& a) const; static TimeRange Combine(const TimeRange &a, const TimeRange &b); + TimeRange operator+(const rational& rhs) const; + TimeRange operator-(const rational& rhs) const; + + const TimeRange& operator+=(const rational &rhs); + const TimeRange& operator-=(const rational &rhs); + private: void normalize(); @@ -66,7 +72,7 @@ public: bool ContainsTimeRange(const TimeRange& range, bool in_inclusive = true, bool out_inclusive = true) const; - TimeRangeList Intersects(const TimeRange& range); + TimeRangeList Intersects(const TimeRange& range) const; private: void PrintTimeList();